# Returns the expense report with the given identifier.

`GET /accounting/expense-reports/{id}`

Group: Accounting › Expense Reports · Operation ID: `getExpenseReport`

An expense report is an employee's claim for reimbursement, with its header and its expense items. It shares its read with POST accounting/expense-reports/search, which returns the same record. The list at GET accounting/expense-reports is header-only, so the expense items come back here and on search. Every amount is a decimal: the header totals in reimbursementCurrency, and each item's amount in the item's own currency.

[Open in the interactive reference](https://docs.api.lensing.ai/?op=getExpenseReport)

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Api-Version` | header | `"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`. |
| `id` | path | string | yes | The unique identifier for the expense report to return. |

## Response

`200` Success

Under `data` (getExpenseReportOutput):

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | The unique identifier for the expense report. |
| `expenseNumber` | string | no | The expense number. Absent until one has been assigned. |
| `status` | string | yes | The approval status of the report. Values include 'draft', 'pendingApproval', 'approved', 'rejected' and 'paid'. |
| `paymentStatus` | string | no | The payment status of the report. Absent until a payment run has touched it. |
| `submittedDate` | string (date) | no | The date the employee submitted the report for approval. Format YYYY-MM-DD. Absent while the report is still a draft. |
| `reimbursementCurrency` | string | yes | The currency the report is reimbursed in. Format ISO 4217, for example 'USD'. Governs every header total below. |
| `reimbursableTotal` | string (decimal) | no | The total reimbursable amount across the report's items, in reimbursementCurrency. |
| `reimbursableTotalNetAmount` | string (decimal) | no | The total reimbursable amount excluding VAT, in reimbursementCurrency. |
| `amountPaid` | string (decimal) | no | The amount already reimbursed to the employee, in reimbursementCurrency. |
| `openAmount` | string (decimal) | no | The amount still owed to the employee, reimbursableTotal minus amountPaid, in reimbursementCurrency. |
| `pendingAmount` | string (decimal) | no | The amount committed to an in-flight payment run but not yet paid, in reimbursementCurrency. |
| `containsBillableItem` | boolean | no | Whether at least one item on the report is marked billable to a customer. |
| `markAsPaid` | boolean | no | Whether the report was flagged as paid without going through a payment run. |
| `pendingPayment` | boolean | no | Whether a payment for this report is in flight. |
| `skipJournalEntry` | boolean | no | Whether the report is configured not to post a journal entry. |
| `reviewMessage` | string | no | The reviewer's note left on approval or rejection. |
| `externalUrl` | string | no | A link to the report in the upstream system that produced it. |
| `externalExpenseReportId` | string | no | The identifier this report has in the upstream system that produced it. It is not unique. |
| `origin` | string | no | The source system this report came from, as free-form text. |
| `employeeId` | string | no | The employee the report belongs to. See id on GET people/:id. |
| `employeeName` | string | no | The name of the employee the report belongs to. |
| `entityId` | string | no | The legal entity the report is posted under. See id on GET base/entities. |
| `entityName` | string | no | The name of the legal entity the report is posted under. |
| `departmentId` | string | no | The department the report is charged to. See id on GET departments/:id. |
| `offsetAccountId` | string | no | The GL offset account for the reimbursement. See id on GET accounting/accounts/:id. |
| `lastModifiedDate` | string (date-time) | yes | The date and time the expense report last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
| `approvals` | array of object | no | The approval decisions on this report, oldest first. An empty array when no approval policy has matched the report. |
| `approvals[].decision` | string | yes | What was decided. Values include 'approve' and 'reject'. |
| `approvals[].employeeName` | string | no | The name of the employee who decided. |
| `approvals[].message` | string | no | The reviewer's note, where one was given. |
| `approvals[].decidedAt` | string (date-time) | yes | The date and time the decision was recorded, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
| `expenseItems` | array of object | no | The expense items on the report, in their order on it. An empty array when the report has none. |
| `expenseItems[].id` | string | yes | The unique identifier for the expense item. |
| `expenseItems[].itemNumber` | string | no | The expense item number. |
| `expenseItems[].merchant` | string | no | The merchant the expense was incurred with. |
| `expenseItems[].billDate` | string (date) | no | The date the expense was incurred. Format YYYY-MM-DD. |
| `expenseItems[].expenseType` | string | no | The kind of expense. Values include 'Pur' (purchase), 'Dis' (distance traveled) and 'PerDiem'. |
| `expenseItems[].description` | string | no | A description of the expense item. |
| `expenseItems[].amount` | string (decimal) | no | The amount of the expense item, as a decimal in the item's own currency. |
| `expenseItems[].currency` | string | no | The currency this item's amount is in. Format ISO 4217, for example 'USD'. May differ from the report's reimbursementCurrency. |
| `expenseItems[].reimbursable` | boolean | no | Whether this item is reimbursable to the employee. |
| `expenseItems[].categoryId` | string | no | The expense category the item is booked to. See id on GET accounting/expense-categories/:id. |
| `expenseItems[].externalExpenseItemId` | string | no | The identifier this item has in the upstream system that produced it. |
| `expenseItems[].attendees` | string | no | Who attended, when the item's category requires it. |
| `expenseItems[].attachments` | array of object | no | The receipts on this item. |
| `expenseItems[].attachments[].id` | string | yes | The unique identifier for the attachment record. |
| `expenseItems[].attachments[].fileName` | string | no | The display name of the attached file. |
| `expenseItems[].attachments[].fileId` | string | no | The identifier of the stored file. There is no endpoint for it. |

## Errors

| Code | Status |
| --- | --- |
| `NOT_FOUND` | 400 |

## Statuses

- `400` — Invalid request or business failure. Codes: NOT_FOUND
- `401` — Missing or invalid access token
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests
- `500` — Internal server error
