Employment Hero Employee Expense Request API

Employee Expense Requests

Operations 8

GET /api/v2/business/{businessId}/employee/{employeeId}/expenserequest List Expense Requests #
POST /api/v2/business/{businessId}/employee/{employeeId}/expenserequest Create Expense Request #
GET /api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId} Get Expense Request by ID #
PUT /api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId} Update Expense Request #
DELETE /api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId} Delete Expense Request #
POST /api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId}/approve Approve Expense Request #
PUT /api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId}/attachment Upload Attachment to Expense Request #
POST /api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId}/decline Decline Expense Request #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/employment-hero:employment-hero-employeeexpenserequest-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

employment-hero-employeeexpenserequest-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Employment Hero Employee Expense Request API
  version: '1.0'
  description: 'Operations tagged EmployeeExpenseRequest across 5 of this provider''s published API definitions: employment-hero-payroll-au-swagger.json, employment-hero-payroll-my-swagger.json, employment-hero-payroll-nz-swagger.json, employment-hero-payroll-sg-swagger.json, employment-hero-payroll-uk-swagger.json. Each path carries the servers of the definition it was published in.'
security:
- basic: []
- apiKey: []
- oauth2:
  - read
  - write
- basic: []
- apiKey: []
- oauth2:
  - read
  - write
- basic: []
- apiKey: []
- oauth2:
  - read
  - write
- basic: []
- apiKey: []
- oauth2:
  - read
  - write
- basic: []
- apiKey: []
- oauth2:
  - read
  - write
tags:
- name: EmployeeExpenseRequest
  description: Employee Expense Requests
paths:
  /api/v2/business/{businessId}/employee/{employeeId}/expenserequest:
    get:
      tags:
      - EmployeeExpenseRequest
      summary: List Expense Requests
      description: 'Lists all of the expense requests for this employee.


        This operation supports OData queries (only $filter, $orderby, $top, $skip).'
      operationId: ExpenseRequest_GetExpenseRequests
      parameters:
      - in: query
        name: query
      - in: path
        name: businessId
        required: true
        schema:
          type: string
      - in: path
        name: employeeId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: IEnumerable<ExpenseRequestResponseModel>
                type: array
                items:
                  $ref: '#/components/schemas/ExpenseRequestResponseModel'
            application/xml:
              schema:
                title: IEnumerable<ExpenseRequestResponseModel>
                type: array
                items:
                  $ref: '#/components/schemas/ExpenseRequestResponseModel'
            text/plain:
              schema:
                title: IEnumerable<ExpenseRequestResponseModel>
                type: array
                items:
                  $ref: '#/components/schemas/ExpenseRequestResponseModel'
            application/octet-stream:
              schema:
                title: IEnumerable<ExpenseRequestResponseModel>
                type: array
                items:
                  $ref: '#/components/schemas/ExpenseRequestResponseModel'
            text/json:
              schema:
                title: IEnumerable<ExpenseRequestResponseModel>
                type: array
                items:
                  $ref: '#/components/schemas/ExpenseRequestResponseModel'
    post:
      tags:
      - EmployeeExpenseRequest
      summary: Create Expense Request
      description: Creates a new expense request for this employee.
      operationId: ExpenseRequest_Post
      parameters:
      - in: path
        name: businessId
        required: true
        schema:
          type: string
      - in: path
        name: employeeId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
            application/xml:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
            text/plain:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
            text/json:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExpenseRequestEditModel'
          application/xml:
            schema:
              $ref: '#/components/schemas/ExpenseRequestEditModel'
          text/plain:
            schema:
              $ref: '#/components/schemas/ExpenseRequestEditModel'
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ExpenseRequestEditModel'
          text/json:
            schema:
              $ref: '#/components/schemas/ExpenseRequestEditModel'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ExpenseRequestEditModel'
  /api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId}:
    get:
      tags:
      - EmployeeExpenseRequest
      summary: Get Expense Request by ID
      description: Gets the expense request with the specified ID.
      operationId: ExpenseRequest_Get_2
      parameters:
      - in: path
        name: employeeId
        required: true
        title: Int32
        schema:
          type: integer
          format: int32
      - in: path
        name: expenseRequestId
        required: true
        title: Int32
        schema:
          type: integer
          format: int32
      - in: path
        name: businessId
        required: true
        schema:
          type: string
      responses:
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
            application/xml:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
            text/plain:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
            text/json:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
    put:
      tags:
      - EmployeeExpenseRequest
      summary: Update Expense Request
      description: Updates the expense request with the specified ID.
      operationId: ExpenseRequest_Put_3
      parameters:
      - in: path
        name: expenseRequestId
        required: true
        title: Int32
        schema:
          type: integer
          format: int32
      - in: path
        name: businessId
        required: true
        schema:
          type: string
      - in: path
        name: employeeId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
            application/xml:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
            text/plain:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
            text/json:
              schema:
                $ref: '#/components/schemas/ExpenseRequestResponseModel'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExpenseRequestEditModel'
          application/xml:
            schema:
              $ref: '#/components/schemas/ExpenseRequestEditModel'
          text/plain:
            schema:
              $ref: '#/components/schemas/ExpenseRequestEditModel'
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ExpenseRequestEditModel'
          text/json:
            schema:
              $ref: '#/components/schemas/ExpenseRequestEditModel'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ExpenseRequestEditModel'
    delete:
      tags:
      - EmployeeExpenseRequest
      summary: Delete Expense Request
      description: Deletes the expense request with the specified ID.
      operationId: ExpenseRequest_Delete_4
      parameters:
      - in: path
        name: expenseRequestId
        required: true
        title: Int32
        schema:
          type: integer
          format: int32
      - in: path
        name: businessId
        required: true
        schema:
          type: string
      - in: path
        name: employeeId
        required: true
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: OK
  /api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId}/approve:
    post:
      tags:
      - EmployeeExpenseRequest
      summary: Approve Expense Request
      description: Approves the expense request with the specified ID.
      operationId: ExpenseRequest_Approve
      parameters:
      - in: path
        name: expenseRequestId
        required: true
        title: Int32
        schema:
          type: integer
          format: int32
      - in: path
        name: businessId
        required: true
        schema:
          type: string
      - in: path
        name: employeeId
        required: true
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: OK
  /api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId}/attachment:
    put:
      tags:
      - EmployeeExpenseRequest
      summary: Upload Attachment to Expense Request
      description: 'Uploads an attachment to the expense request with the specified ID.

        The request should be a MIME multipart file upload request.'
      operationId: ExpenseRequest_UploadAttachment
      parameters:
      - in: path
        name: expenseRequestId
        required: true
        title: Int32
        schema:
          type: integer
          format: int32
      - in: path
        name: businessId
        required: true
        schema:
          type: string
      - in: path
        name: employeeId
        required: true
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachmentModel'
            application/xml:
              schema:
                $ref: '#/components/schemas/AttachmentModel'
            text/plain:
              schema:
                $ref: '#/components/schemas/AttachmentModel'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/AttachmentModel'
            text/json:
              schema:
                $ref: '#/components/schemas/AttachmentModel'
  /api/v2/business/{businessId}/employee/{employeeId}/expenserequest/{expenseRequestId}/decline:
    post:
      tags:
      - EmployeeExpenseRequest
      summary: Decline Expense Request
      description: 'Declines the expense request with the specified ID. The request body should just be a string, enclosed in double quotes, for the Decline Reason. Do not encase in {}

        eg. "Not a valid expense request"'
      operationId: ExpenseRequest_Decline
      parameters:
      - in: path
        name: expenseRequestId
        required: true
        title: Int32
        schema:
          type: integer
          format: int32
      - in: path
        name: businessId
        required: true
        schema:
          type: string
      - in: path
        name: employeeId
        required: true
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '200':
          description: OK
      requestBody:
        content:
          application/json:
            schema:
              title: String
              type: string
              x-title: String
          application/xml:
            schema:
              title: String
              type: string
              x-title: String
          text/plain:
            schema:
              title: String
              type: string
              x-title: String
          application/json-patch+json:
            schema:
              title: String
              type: string
              x-title: String
          text/json:
            schema:
              title: String
              type: string
              x-title: String
          application/*+json:
            schema:
              title: String
              type: string
              x-title: String
components:
  schemas:
    ExpenseRequestEditLineItemModel:
      title: ExpenseRequestEditLineItemModel
      type: object
      properties:
        id:
          format: int32
          title: Nullable<Int32>
          type: integer
          x-title: Nullable<Int32>
        expenseCategoryId:
          format: int32
          title: Int32
          type: integer
          x-title: Int32
        locationId:
          format: int32
          title: Nullable<Int32>
          type: integer
          x-title: Nullable<Int32>
        notes:
          title: String
          maxLength: 255
          type: string
          x-title: String
        taxCode:
          title: String
          type: string
          x-title: String
        taxCodeDisplayName:
          title: String
          type: string
          x-title: String
        taxRate:
          format: double
          title: Nullable<Decimal>
          type: number
          x-title: Nullable<Decimal>
        amount:
          format: double
          title: Decimal
          type: number
          x-title: Decimal
        dateIncurred:
          format: date-time
          title: DateTime
          type: string
          x-title: DateTime
      additionalProperties: false
    ExpenseRequestEditModel:
      title: ExpenseRequestEditModel
      required:
      - employeeId
      type: object
      properties:
        attachments:
          title: List<AttachmentModel>
          type: array
          items:
            $ref: '#/components/schemas/AttachmentModel'
          x-title: List<AttachmentModel>
        id:
          format: int32
          title: Int32
          type: integer
          x-title: Int32
        employeeId:
          format: int32
          title: Int32
          type: integer
          x-title: Int32
        description:
          title: String
          maxLength: 255
          type: string
          x-title: String
        lineItems:
          title: List<ExpenseRequestEditLineItemModel>
          type: array
          items:
            $ref: '#/components/schemas/ExpenseRequestEditLineItemModel'
      additionalProperties: false
    ExpenseRequestLineItemModel:
      title: ExpenseRequestLineItemModel
      type: object
      properties:
        expenseCategoryName:
          title: String
          type: string
          x-title: String
        locationName:
          title: String
          type: string
          x-title: String
        id:
          format: int32
          title: Nullable<Int32>
          type: integer
          x-title: Nullable<Int32>
        expenseCategoryId:
          format: int32
          title: Int32
          type: integer
          x-title: Int32
        locationId:
          format: int32
          title: Nullable<Int32>
          type: integer
          x-title: Nullable<Int32>
        notes:
          title: String
          maxLength: 255
          type: string
          x-title: String
        taxCode:
          title: String
          type: string
          x-title: String
        taxCodeDisplayName:
          title: String
          type: string
          x-title: String
        taxRate:
          format: double
          title: Nullable<Decimal>
          type: number
          x-title: Nullable<Decimal>
        amount:
          format: double
          title: Decimal
          type: number
          x-title: Decimal
        dateIncurred:
          format: date-time
          title: DateTime
          type: string
          x-title: DateTime
      additionalProperties: false
    AttachmentModel:
      title: AttachmentModel
      type: object
      properties:
        id:
          format: int32
          title: Nullable<Int32>
          type: integer
          x-title: Nullable<Int32>
        friendlyName:
          title: String
          type: string
          x-title: String
        dateCreated:
          format: date-time
          title: Nullable<DateTime>
          type: string
          x-title: Nullable<DateTime>
        url:
          title: String
          type: string
          x-title: String
        dateScanned:
          format: date-time
          title: Nullable<DateTime>
          type: string
          x-title: Nullable<DateTime>
        isInfected:
          title: Nullable<Boolean>
          type: boolean
          x-title: Nullable<Boolean>
      additionalProperties: false
    ProblemDetails:
      title: ProblemDetails
      type: object
      properties:
        type:
          title: String
          type: string
          x-title: String
        title:
          title: String
          type: string
          x-title: String
        status:
          format: int32
          title: Nullable<Int32>
          type: integer
          x-title: Nullable<Int32>
        detail:
          title: String
          type: string
          x-title: String
        instance:
          title: String
          type: string
          x-title: String
      additionalProperties:
        title: Object
        x-title: Object
        type: object
    ExpenseRequestResponseModel:
      title: ExpenseRequestResponseModel
      type: object
      properties:
        id:
          format: int32
          title: Int32
          type: integer
          x-title: Int32
        employeeId:
          format: int32
          title: Int32
          type: integer
          x-title: Int32
        employeeName:
          title: String
          type: string
          x-title: String
        status:
          title: String
          type: string
          x-title: String
        description:
          title: String
          type: string
          x-title: String
        lineItems:
          title: List<ExpenseRequestLineItemModel>
          type: array
          items:
            $ref: '#/components/schemas/ExpenseRequestLineItemModel'
          x-title: List<ExpenseRequestLineItemModel>
        attachments:
          title: List<AttachmentModel>
          type: array
          items:
            $ref: '#/components/schemas/AttachmentModel'
          x-title: List<AttachmentModel>
        statusUpdatedByUser:
          title: String
          type: string
          x-title: String
        statusUpdateNotes:
          title: String
          type: string
          x-title: String
        dateStatusUpdated:
          format: date-time
          title: DateTime
          type: string
          x-title: DateTime
        dateCreated:
          format: date-time
          title: DateTime
          type: string
          x-title: DateTime
      additionalProperties: false
  securitySchemes:
    basic:
      type: http
      scheme: basic
      description: Your API key should be the username and the password can be left blank
    apiKey:
      type: apiKey
      in: header
      description: API Key Authentication
    oauth2:
      type: oauth2
      flows:
        implicit:
          scopes:
            read: Read access to protected resources
            write: Write access to protected resources
          authorizationUrl: https://keypay.yourpayroll.com.au/oauth/authorise
      description: OAuth2 Implicit Grant
x-refined-from:
- employment-hero-payroll-au-swagger.json
- employment-hero-payroll-my-swagger.json
- employment-hero-payroll-nz-swagger.json
- employment-hero-payroll-sg-swagger.json
- employment-hero-payroll-uk-swagger.json