# Retrieve an expense category

Operation ID: `getExpenseCategory`

Group: Accounting › Expense Categories

[Open in the interactive reference](https://docs.api.lensing.ai/lensing/v1/endpoints/getExpenseCategory)

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

Read-only: Reads and returns; changes nothing.

Retrieves an expense category. The response has the category's name, kind, status, reimbursement setting, and receipt and attendee requirements. Its legal entities and general ledger accounts are not included.

To find a category by its external identifier, which is not unique, use POST accounting/expense-categories/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`. |
| `id` | path | string | yes | The unique identifier of the expense category you want to retrieve. Example: `"9c1b7e40-3a6d-4f52-8f0b-1d2c7a5e93b1"`. |

## Response

`200` Success

Under `data` (getExpenseCategoryOutput):

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | The unique identifier for the expense category. |
| `category` | string | yes | The display name of the expense category, for example 'Meals'. Unique within the tenant. |
| `categoryType` | string | no | The kind of expense. Possible values: 'Pur', 'Dis', 'PerDiem'. 'Dis' is distance traveled. |
| `reimbursable` | boolean | yes | Whether expenses in this category are reimbursed to the employee. |
| `status` | string | no | 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 | no | Whether an expense in this category must have a receipt attachment. |
| `requireAttendees` | boolean | no | Whether an expense in this category must list attendees. |
| `externalId` | string | no | The identifier this category has in an external system. It is not unique. |
| `lastModifiedDate` | date-time | yes | The date and time the expense category last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |

```json
{
  "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"
  },
  "diagnostics": [
    {
      "code": "<code>",
      "message": "<message>",
      "severity": "error",
      "path": [
        "<path>"
      ],
      "details": "<details>"
    }
  ]
}
```

## Errors

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

## Statuses

- `400` — Invalid request or business failure. Codes: NOT_FOUND
- `401` — The request carries no valid access token.
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests from this client address. The response has no body and no `Retry-After` header.
- `500` — Internal server error
