# List accounts

Operation ID: `accounts`

Group: Accounting › Accounts

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

`GET /accounting/accounts`

Read-only: Reads and returns; changes nothing.

Lists accounts. The items don't include externalIdentifiers, which GET accounting/accounts/:id returns.

To match on name or by external identifier, use POST accounting/accounts/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, like
- `accountNumber` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `accountType` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `accountSubType` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `accountStatus` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `chartOfAccountsId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `parentAccountId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `groupingAccount` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `entityId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `currency` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `revaluation` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `payOnBehalf` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `elimination` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `exchangeRateType` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `lastModifiedDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- Orderable: id, accountNumber, accountType, accountSubType, accountStatus, chartOfAccountsId, groupingAccount, entityId, currency, lastModifiedDate
- Selectable: id, accountNumber, accountName, accountType, accountSubType, accountStatus, description, chartOfAccountsId, parentAccountId, groupingAccount, entityId, currency, revaluation, revaluationMode, payOnBehalf, elimination, exchangeRateType, lastModifiedDate
- `page[size]` — Page size
- `page[cursor]` — Opaque continuation cursor

## Response

`200` Success

Under `data`, an array of accountsRow:

| 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 account. |
| `accountNumber` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The account number, unique within its chart of accounts. |
| `accountName` | string | no | no | no | The display name of the account. |
| `accountType` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The top-level classification of the account. Possible values: 'asset', 'liability', 'equity', 'income', 'costOfGoodsSold', 'expense', 'otherIncome', 'otherExpense'. |
| `accountSubType` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | A finer classification within accountType. Possible values: 'bank', 'accountsReceivable', 'fixedAsset', 'cip', 'prepaidExpenses', 'deferredExpenses', 'otherCurrentAsset', 'otherAsset', 'unbilledReceivable', 'longTermAsset', 'accountsPayable', 'creditCard', 'deferredRevenue', 'otherCurrentLiability', 'longTermLiability', 'equity', 'income', 'costOfGoodsSold', 'expense', 'otherIncome', 'otherExpense', 'otherComprehensiveIncome'. Absent when none is assigned. |
| `accountStatus` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The lifecycle status of the account. Possible values: 'enabled' (available on transactions), 'disabled' (not available for new transactions), 'draft' (created but not yet reviewed), 'draftErrors' (a draft with validation errors to resolve before it can be enabled). |
| `description` | string \| null | no | no | no | A free-form description of the account. Absent when none was set. |
| `chartOfAccountsId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The identifier of the chart of accounts this account belongs to. An account belongs to exactly one. See id on GET accounting/chart-of-accounts/:id. |
| `parentAccountId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The identifier of the parent account this account rolls up to. Absent for a top-level account. See id on GET accounting/accounts/:id. |
| `groupingAccount` | boolean | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | Whether this is a grouping (rollup) account. Balances from child accounts aggregate here, and journal entries cannot be posted to it directly. |
| `entityId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The identifier of the legal entity this account is denominated for. Set only on bank and credit-card accounts. See id on GET base/entities. |
| `currency` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The account's currency. Format ISO 4217, for example 'USD'. Set only on accounts linked to a cash account, alongside entityId. |
| `revaluation` | boolean \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | no | Whether balances on this account are revalued for exchange-rate changes. |
| `revaluationMode` | string \| null | no | no | no | Which revaluation results this account recognizes. Possible values: 'recognizeAll' (both unrealized gains and unrealized losses), 'recognizeAllButUnrealizedGains' (only unrealized losses, leaving gains unposted as the imparity principle requires), 'none' (the account is not revalued). Absent when the account has no mode set. `revaluation` is true for every value other than 'none'. |
| `payOnBehalf` | boolean \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | no | Whether this account takes part in pay-on-behalf accounting. |
| `elimination` | boolean \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | no | Whether this account is eliminated during consolidation. |
| `exchangeRateType` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | Which rate translates this account's amounts on revaluation. Possible values: 'historical', 'average', 'current'. Absent on grouping accounts. |
| `lastModifiedDate` | date-time \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date and time the account record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |

```json
{
  "data": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "accountNumber": "<accountNumber>",
      "accountName": "<accountName>",
      "accountType": "<accountType>",
      "accountSubType": "<accountSubType>",
      "accountStatus": "<accountStatus>",
      "description": "<description>",
      "chartOfAccountsId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "parentAccountId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "groupingAccount": true,
      "entityId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "currency": "<currency>",
      "revaluation": true,
      "revaluationMode": "<revaluationMode>",
      "payOnBehalf": true,
      "elimination": true,
      "exchangeRateType": "<exchangeRateType>",
      "lastModifiedDate": "2026-01-15T09:30:00.000Z"
    }
  ],
  "pagination": {
    "hasMore": true,
    "nextCursor": "<nextCursor>"
  }
}
```

## Statuses

- `400` — Invalid request or business failure
- `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
