List expense categories
Operation ID: expenseCategories
Group: Accounting › Expense Categories
Open in the interactive reference
GET /accounting/expense-categories
Read-only: Reads and returns; changes nothing.
Lists expense categories.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | string · v1 | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1. |
Query surface
id— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likecategory— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likecategoryType— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likereimbursable— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenstatus— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likerequireAttachment— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenrequireAttendees— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenexternalId— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likelastModifiedDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, between- Orderable: id, category, categoryType, status, lastModifiedDate
- Selectable: id, category, categoryType, reimbursable, status, requireAttachment, requireAttendees, externalId, lastModifiedDate
page[size]— Page sizepage[cursor]— Opaque continuation cursor
Response
200 Success
Under data, an array of expenseCategoriesRow:
| Field | Type | Required | Filter | Sort | Description |
|---|---|---|---|---|---|
id |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The unique identifier for the expense category. |
category |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The display name of the expense category, for example 'Meals'. Unique within the tenant. |
categoryType |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The kind of expense. Possible values: 'Pur', 'Dis', 'PerDiem'. 'Dis' is distance traveled. |
reimbursable |
boolean | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
no | Whether expenses in this category are reimbursed to the employee. |
status |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The lifecycle status of the expense category. Possible values: 'active', 'inactive'. An inactive category stays readable so historical expense items still resolve, and is not offered for new ones. |
requireAttachment |
boolean | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
no | Whether an expense in this category must have a receipt attachment. |
requireAttendees |
boolean | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
no | Whether an expense in this category must list attendees. |
externalId |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The identifier this category has in an external system. It is not unique. |
lastModifiedDate |
date-time | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The date and time the expense category last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"category": "<category>",
"categoryType": "<categoryType>",
"reimbursable": true,
"status": "<status>",
"requireAttachment": true,
"requireAttendees": true,
"externalId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"lastModifiedDate": "2026-01-15T09:30:00.000Z"
}
],
"pagination": {
"hasMore": true,
"nextCursor": "<nextCursor>"
}
}
Statuses
400— Invalid request or business failure401— The request carries no valid access token.403— Not authorized404— Not found429— Too many requests from this client address. The response has no body and noRetry-Afterheader.500— Internal server error