# List bank accounts

Operation ID: `bankAccounts`

Group: Banking › Bank Accounts

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

`GET /banking/bank-accounts`

Read-only: Reads and returns; changes nothing.

Lists bank accounts. Bank accounts deleted with DELETE banking/bank-accounts/:id aren't included.

To match on an external identifier, a name, an account number, or a linked entity or institution, use POST banking/bank-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
- `type` — 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
- `paymentAllowed` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `receivableAccount` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `payableAccount` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `isReady` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `reconciliationStartDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `lastModifiedDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- Orderable: id, type, currency, balance, paymentAllowed, isReady, reconciliationStartDate, lastModifiedDate
- Selectable: id, externalAccountId, externalAccountName, externalDescription, type, currency, balance, mask, reference, referenceType, referenceNumber, bankAccountCode, bankAccountHolderName, paymentAllowed, receivableAccount, payableAccount, isReady, reconciliationStartDate, transactionsImportDate, accountName, accountNumber, bankName, entityName, lastModifiedDate
- `page[size]` — Page size
- `page[cursor]` — Opaque continuation cursor

## Response

`200` Success

Under `data`, an array of bankAccountsRow:

| 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 bank account. |
| `externalAccountId` | string | no | no | no | The identifier this account has in the bank or aggregator it was connected from. Unique within the tenant. |
| `externalAccountName` | string \| null | no | no | no | The account name as reported by the bank or aggregator. |
| `externalDescription` | string \| null | no | no | no | The account description as reported by the bank or aggregator. |
| `type` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The kind of account, as free-form text. For example 'checking', 'saving' or 'creditCard'. |
| `currency` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The currency the account is held in. Format ISO 4217, for example 'USD'. balance is in this currency. |
| `balance` | decimal \| null | no | no | yes | The current account balance, in currency. |
| `mask` | string \| null | no | no | no | A masked form of the account number, for example '****1234'. Display it instead of reference where the full number is not needed. |
| `reference` | string \| null | no | no | no | The full account number, the IBAN or the ACH account number. |
| `referenceType` | string \| null | no | no | no | How referenceNumber is structured. Possible values: 'QRR', 'SCOR', 'NON'. 'QRR' is a Swiss QR reference, 'SCOR' an ISO 11649 creditor reference, and 'NON' none. |
| `referenceNumber` | string \| null | no | no | no | A structured payment reference for payments to this account, interpreted per referenceType. |
| `bankAccountCode` | string \| null | no | no | no | The bank identifier, the SWIFT/BIC code or the US routing number. |
| `bankAccountHolderName` | string \| null | no | no | no | The name the account is held in. This is personal data. |
| `paymentAllowed` | boolean | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | Whether payments may be made from this account. |
| `receivableAccount` | boolean \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | no | Whether this account may be used to receive money. |
| `payableAccount` | boolean \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | no | Whether this account may be used to pay money out. |
| `isReady` | boolean \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | Whether the account is fully set up and usable. |
| `reconciliationStartDate` | date | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date from which this account is reconciled. Format YYYY-MM-DD. Transactions before it are not reconciled. |
| `transactionsImportDate` | date \| null | no | no | no | The date from which transactions are imported for this account. Format YYYY-MM-DD. |
| `accountName` | string \| null | no | no | no | The name of the linked chart-of-accounts account. |
| `accountNumber` | string \| null | no | no | no | The number of the linked chart-of-accounts account. This is a general-ledger account number, not the bank account number, which is reference. |
| `bankName` | string \| null | no | no | no | The name of the bank this account is held at. |
| `entityName` | string \| null | no | no | no | The name of the legal entity that owns this account. |
| `lastModifiedDate` | date-time \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date and time the bank account last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |

```json
{
  "data": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "externalAccountId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "externalAccountName": "<externalAccountName>",
      "externalDescription": "<externalDescription>",
      "type": "<type>",
      "currency": "<currency>",
      "balance": "19.99",
      "mask": "<mask>",
      "reference": "<reference>",
      "referenceType": "<referenceType>",
      "referenceNumber": "<referenceNumber>",
      "bankAccountCode": "<bankAccountCode>",
      "bankAccountHolderName": "<bankAccountHolderName>",
      "paymentAllowed": true,
      "receivableAccount": true,
      "payableAccount": true,
      "isReady": true,
      "reconciliationStartDate": "2026-01-15",
      "transactionsImportDate": "2026-01-15",
      "accountName": "<accountName>",
      "accountNumber": "<accountNumber>",
      "bankName": "<bankName>",
      "entityName": "<entityName>",
      "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
