Reimbursement List API
Reimbursement APIs
Reimbursement List API
Retrieve a paginated list of reimbursements with filters by date, state, user, amount, and item type
Reimbursement List API
Authentication
All requests require an API key in the request headers. Headers:Request
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Number of records to return. Min 1, Max 100, Default 30. |
cursor | string | No | Cursor for pagination. Use the nextCursor value returned by the previous response. |
dateType | string | No | Type of date to filter by. Default reimbursement_date. Possible values: reimbursement_date, payment_date, date_created, approved_date. |
startDate | string | No | Start date for filtering (ISO 8601 UTC format: YYYY-MM-DDTHH:mm:ssZ). |
endDate | string | No | End date for filtering (ISO 8601 UTC format: YYYY-MM-DDTHH:mm:ssZ). |
state | array | No | Reimbursement states to filter by. Allowed values: DRAFTED, APPROVAL_PENDING, APPROVED, PAID, ARCHIVED. |
reimbursementNumber | string | No | Filter by reimbursement number. |
reimbursementDate | string | No | Filter by a specific reimbursement date (YYYY-MM-DD format). |
userId | string | No | Filter by the id of the user the reimbursement belongs to. |
tagId | integer | No | Filter reimbursements containing this organization tag id. |
amount | number | No | Filter reimbursements with amount greater than or equal to this value. |
itemsType | string | No | Filter by the type of items in the reimbursement. Possible values: ALL_EXPENSE, ALL_MILEAGE, MIXED. |
Code Examples
Success Response
HTTP Status:200 OK
Response Fields:
| Field | Type | Description |
|---|---|---|
ok | boolean | Indicates whether the request was successful |
data | object | Contains the reimbursement list response data |
data.reimbursements | array | List of reimbursements |
data.reimbursements[].id | string | Unique identifier (slug) for the reimbursement |
data.reimbursements[].reimbursementNumber | string | Reimbursement number |
data.reimbursements[].sequenceNumber | string | System-generated sequence number with organization prefix |
data.reimbursements[].description | string | Description of the reimbursement |
data.reimbursements[].reimbursementDate | string | Reimbursement date (ISO 8601 format) |
data.reimbursements[].dateCreated | string | Date the reimbursement was created in the system (ISO 8601 format) |
data.reimbursements[].amount | number or string | Total amount of the reimbursement |
data.reimbursements[].currency | string | Currency code (e.g., INR) |
data.reimbursements[].remarks | string | Notes / remarks on the reimbursement |
data.reimbursements[].state | string | Current state of the reimbursement. Possible values: DRAFTED, APPROVAL_PENDING, APPROVED, PAID, ARCHIVED |
data.reimbursements[].source | string | Source of the reimbursement. Manual entries are returned as WEB; other possible values include EMAIL, SLACK |
data.reimbursements[].user | object | The user the reimbursement belongs to |
data.reimbursements[].user.id | string | Unique slug identifier of the user |
data.reimbursements[].user.name | string | Full name of the user |
data.context | object | Pagination metadata |
data.context.count | number | Total number of reimbursements matching the filters |
data.context.hasMore | boolean | Indicates whether there are more reimbursements to fetch |
data.context.nextCursor | string or null | Cursor to fetch the next page. null when there are no more results |
Reimbursement State Values
| Value | Description |
|---|---|
DRAFTED | Reimbursement is in draft state |
APPROVAL_PENDING | Reimbursement is pending approval |
APPROVED | Reimbursement has been approved |
PAID | Reimbursement has been paid |
ARCHIVED | Reimbursement has been archived |
Response Example
Error Responses
Authentication and permission failures are returned in the standard structured format shown below. Business-logic errors (such as access being denied) are returned with an HTTP
200 OK status and a string error message: { "ok": false, "error": "<message>" }.Access Denied
HTTP Status:200 OK
Validation Error
HTTP Status:400 Bad Request
Authentication Errors
HTTP Status:401 Unauthorized
Permission Errors
HTTP Status:403 Forbidden
Best Practices
- Use
cursorandlimittogether to paginate; pass thenextCursorfrom the response as thecursorvalue for the next call startDateandendDateare interpreted against the column specified bydateType— changedateTypeto filter by payment, created, or approval date instead of the reimbursement date- Use the
idfrom the response as the input to the Reimbursement Details API for full reimbursement information - Always check the
okflag in the response body in addition to the HTTP status code, since business-logic errors are returned with an HTTP200 OKstatus - Access is limited to users with reimbursement read permission and an admin or bookkeeper role