List expense reports
Operation ID: expenseReports
Group: Accounting › Expense Reports
Open in the interactive reference
GET /accounting/expense-reports
Read-only: Reads and returns; changes nothing.
Lists expense reports, without their expense items. To get the items, use GET accounting/expense-reports/:id or POST accounting/expense-reports/search.
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, likeexpenseNumber— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likestatus— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likepaymentStatus— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likesubmittedDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenreimbursementCurrency— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeexternalExpenseReportId— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeorigin— 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, expenseNumber, status, paymentStatus, submittedDate, reimbursementCurrency, reimbursableTotal, openAmount, lastModifiedDate
- Selectable: id, expenseNumber, status, paymentStatus, submittedDate, reimbursementCurrency, reimbursableTotal, reimbursableTotalNetAmount, amountPaid, openAmount, pendingAmount, containsBillableItem, pendingPayment, externalExpenseReportId, origin, employeeName, entityName, lastModifiedDate
page[size]— Page sizepage[cursor]— Opaque continuation cursor
Response
200 Success
Under data, an array of expenseReportsRow:
| 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 report. |
expenseNumber |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The expense number. |
status |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The approval status of the report. Values include 'draft', 'pendingApproval', 'approved', 'rejected' and 'paid'. |
paymentStatus |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The payment status of the report. |
submittedDate |
date | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The date the employee submitted the report. Format YYYY-MM-DD. |
reimbursementCurrency |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The currency the report is reimbursed in. Format ISO 4217, for example 'USD'. Governs every header total below. |
reimbursableTotal |
decimal | null | no | no | yes | The total reimbursable amount across the report's items, in reimbursementCurrency. |
reimbursableTotalNetAmount |
decimal | null | no | no | no | The total reimbursable amount excluding VAT, in reimbursementCurrency. |
amountPaid |
decimal | null | no | no | no | The amount already reimbursed to the employee, in reimbursementCurrency. |
openAmount |
decimal | null | no | no | yes | The amount still owed to the employee, reimbursableTotal minus amountPaid, in reimbursementCurrency. |
pendingAmount |
decimal | null | no | no | no | The amount committed to an in-flight payment run but not yet paid, in reimbursementCurrency. |
containsBillableItem |
boolean | null | no | no | no | Whether at least one item on the report is marked billable to a customer. |
pendingPayment |
boolean | null | no | no | no | Whether a payment for this report is in flight. |
externalExpenseReportId |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The identifier this report has in the upstream system that produced it. It is not unique. |
origin |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The source system this report came from, as free-form text. |
employeeName |
string | null | no | no | no | The name of the employee the report belongs to. |
entityName |
string | null | no | no | no | The name of the legal entity the report is posted under. |
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 report last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"expenseNumber": "<expenseNumber>",
"status": "<status>",
"paymentStatus": "<paymentStatus>",
"submittedDate": "2026-01-15",
"reimbursementCurrency": "<reimbursementCurrency>",
"reimbursableTotal": "19.99",
"reimbursableTotalNetAmount": "19.99",
"amountPaid": "19.99",
"openAmount": "19.99",
"pendingAmount": "19.99",
"containsBillableItem": true,
"pendingPayment": true,
"externalExpenseReportId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"origin": "<origin>",
"employeeName": "<employeeName>",
"entityName": "<entityName>",
"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