GET /expenses
Summary
List expenses
URL Parameters
- None
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| company | string | No | Filter by company id. If omitted, data for all companies linked to the API key is returned. |
| page | integer | No | Page number (default 1) |
| limit | integer | No | Records per page (default 50, max 200) |
| status | enum(pending, approved, rejected) | No | Filter by expense approval status |
| project | string | No | Filter by project id |
| timesheet | string | No | Filter by timesheet id |
| worker | string | No | Filter by worker id |
| agency | string | No | Filter by agency id |
| category | string | No | Filter by exact expense category. Supported values: Accommodation, Bonus, Driving hours, Flat rate hours, Fuel, Manager authorised hours, On-call, Other, Out-of-hours callout, Parking, Plant, Price work, Training hours, Vehicles |
| query | string | No | Case-insensitive search against expense category and description |
| from | string | No | Expense date filter start (YYYY-MM-DD) |
| to | string | No | Expense date filter end (YYYY-MM-DD) |
| sortBy | enum(createdAt, updatedAt, date, value, status, category) | No | Sort field |
| sortOrder | enum(asc, desc) | No | Sort direction |
Request Body Fields
No request body is accepted for this endpoint.
Request Example
- cURL
- JavaScript
curl -X GET 'https://api.requidex.com/api/open/v1/expenses?status=approved&from=2026-03-01&to=2026-03-31' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Accept: application/json'
const response = await fetch("https://api.requidex.com/api/open/v1/expenses?status=approved&from=2026-03-01&to=2026-03-31", {
method: "GET",
headers: {
Authorization: "Bearer <API_KEY>",
Accept: "application/json",
},
});
const json = await response.json();
Response Fields
| Field | Type | Description |
|---|---|---|
| id | string | Expense id |
| worker | object | Show child attributes
|
| timesheet | object | Show child attributes
|
| company | object | Show child attributes
|
| project | object | Show child attributes
|
| agency | object | Show child attributes
|
| status | string | Expense approval status |
| category | string | Expense category |
| description | string | Optional expense description |
| date | string | Expense date in ISO 8601 date-time format |
| value | number | Expense value |
| hours | number | Hours attached to the expense when recorded |
| rate | object | Optional rate information with value and description |
| wra | object | Optional working-rule accommodation details with applicable, dailyAmount, and daysPaid |
| costCode | object | Optional cost code with name and description |
| receipts | array | Receipt files. Each item may include fileName, url, and created |
| noReceiptReason | string | Reason provided when no receipt was uploaded |
| createdBy | object | User who created the expense |
| approvedBy | object | User who approved the expense |
| approvalDate | string | Approval timestamp in ISO 8601 date-time format |
| invoice | object | Linked invoice with id and reference when invoiced |
| afp | object | Linked AfP with id and reference when attached to an AfP |
| createdAt | string | Creation timestamp |
| updatedAt | string | Last update timestamp |
Response Example (200)
{
"success": true,
"data": [
{
"id": "67bc36db80a1616ec3f4c001",
"worker": {
"id": "67bc36db80a1616ec3f48999",
"reference": "WK-1044",
"name": "Jordan Smith"
},
"timesheet": {
"id": "67bc36db80a1616ec3f4a001",
"reference": "TS-1044"
},
"company": {
"id": "67bc36db80a1616ec3f47001",
"name": "Requidex Construction Ltd"
},
"project": {
"id": "67bc36db80a1616ec3f47011",
"name": "Northern Rail Electrification"
},
"agency": {
"id": "67bc36db80a1616ec3f47101",
"name": "Northline Labour Desk"
},
"status": "approved",
"category": "Travel",
"description": "Taxi from station",
"date": "2026-03-05T00:00:00.000Z",
"value": 38.5,
"hours": 2,
"rate": {
"value": 19.25,
"description": "travelRate"
},
"wra": {
"applicable": false,
"dailyAmount": null,
"daysPaid": null
},
"costCode": {
"name": "CC-001",
"description": "Trackside installation"
},
"receipts": [
{
"fileName": "taxi-receipt.pdf",
"url": "https://files.requidex.com/expenses/taxi-receipt.pdf",
"created": "2026-03-05T18:10:00.000Z"
}
],
"createdBy": {
"id": "67bc36db80a1616ec3f49998",
"name": "Pat Taylor"
},
"approvedBy": {
"id": "67bc36db80a1616ec3f49999",
"name": "Alex Carter"
},
"approvalDate": "2026-03-06T09:30:00.000Z",
"invoice": {
"id": "67bc36db80a1616ec3f4b001",
"reference": "RDX-NLD-I1044"
},
"createdAt": "2026-03-05T18:15:00.000Z",
"updatedAt": "2026-03-06T09:30:00.000Z"
}
],
"meta": {
"page": 1,
"limit": 50,
"total": 1
}
}