> ## Documentation Index
> Fetch the complete documentation index at: https://docs.primevault.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List Bank Accounts

> Retrieve a paginated list of your saved bank accounts.

**GET** `/api/external/bank_accounts/?limit={limit}&cursor={cursor}&{filters}`

Lists the bank accounts available to the API user's organization. Use cursor pagination to walk through large sets, and apply filters to narrow results.

<Warning>
  Bank-account data is sensitive. Avoid logging full account and routing numbers, and preserve the organization or sub-org scope returned by the API.
</Warning>

## Query parameters

<ParamField query="limit" type="number">
  Requested page size. SDK default: 20.
</ParamField>

<ParamField query="cursor" type="string | null">
  Cursor for the next page. First page: null or empty.
</ParamField>

<ParamField query="Filters" type="Record<string, string>">
  Bank-account filters accepted by the endpoint.
</ParamField>

## Response

Returns a page of [BankAccount](/api-basics/data-models#bankaccount) objects. See [Cursor response](/api-basics/filtering-and-pagination#cursor-response).

<ResponseField name="results" type="BankAccount[]">
  Bank accounts on this page. Each item is a [BankAccount](/api-basics/data-models#bankaccount).

  <Expandable title="Properties">
    <ResponseField name="id" type="string">
      Bank account ID.
    </ResponseField>

    <ResponseField name="orgId" type="string">
      Organization that owns the bank account.
    </ResponseField>

    <ResponseField name="subOrgId" type="string">
      [Sub-org](/sub-orgs/overview) that owns the bank account, if any.
    </ResponseField>

    <ResponseField name="orgEntityId" type="string">
      Organization entity that owns the account.
    </ResponseField>

    <ResponseField name="createdById" type="string">
      User or API user that created the bank account.
    </ResponseField>

    <ResponseField name="createdAt" type="string">
      Creation timestamp (ISO 8601).
    </ResponseField>

    <ResponseField name="updatedAt" type="string">
      Last update timestamp (ISO 8601).
    </ResponseField>

    <ResponseField name="isDeleted" type="boolean">
      Whether the bank account is deleted.
    </ResponseField>

    <ResponseField name="status" type="BankAccountStatus">
      `PENDING`, `APPROVED`, or `DECLINED`. A new bank account stays `PENDING` until it's [approved](/approvals/overview). See [BankAccountStatus](/api-basics/data-models#bankaccountstatus).
    </ResponseField>

    <ResponseField name="accountNumber" type="string">
      Bank account number.
    </ResponseField>

    <ResponseField name="accountName" type="string">
      Account-holder name.
    </ResponseField>

    <ResponseField name="routingNumber" type="string">
      Domestic routing identifier where applicable.
    </ResponseField>

    <ResponseField name="clientBankAccountId" type="string">
      Client-controlled bank-account reference.
    </ResponseField>

    <ResponseField name="paymentMethod" type="string">
      Payment rail, for example `US_ACH`, `US_WIRE`, `SEPA`, `SWIFT`, or `BANK_TRANSFER`.
    </ResponseField>

    <ResponseField name="bankName" type="string">
      Bank name.
    </ResponseField>

    <ResponseField name="streetLine" type="string">
      Street address line for the bank or beneficiary.
    </ResponseField>

    <ResponseField name="city" type="string">
      City for the bank or beneficiary address.
    </ResponseField>

    <ResponseField name="state" type="string">
      State or province for the bank or beneficiary address.
    </ResponseField>

    <ResponseField name="postalCode" type="string">
      Postal code for the bank or beneficiary address.
    </ResponseField>

    <ResponseField name="country" type="string">
      Country code for the bank or beneficiary address.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="nextCursor" type="string | null">
  Cursor for the next page. `null` on the last page.
</ResponseField>

<ResponseField name="hasNext" type="boolean">
  Whether another page exists.
</ResponseField>

<RequestExample dropdown>
  ```json Request example theme={null}
  {
    "query": {
      "limit": 20,
      "cursor": null
    }
  }
  ```

  ```bash cURL theme={null}
  # Sample only. Generate a new signed token for each request
  # (see Authentication). Tokens expire after 120 seconds.
  curl --request GET \
    --url "https://api.primevault.com/api/external/bank_accounts/?limit=20" \
    --header "Authorization: Bearer <signed JWT>" \
    --header "Api-Key: <API key>" \
    --header "Accept: application/json"
  ```

  ```typescript JavaScript SDK theme={null}
  getBankAccounts(
    params?: Record<string, string>,
    limit?: number,
    cursor?: string | null,
  ): Promise<BankAccountListResponse>
  ```
</RequestExample>

<ResponseExample dropdown>
  ```json Response example theme={null}
  {
    "results": [
      {
        "id": "bank_account_123",
        "orgId": "org_456",
        "subOrgId": "sub_org_123",
        "orgEntityId": "org_entity_123",
        "createdById": "api_user_123",
        "createdAt": "2026-08-04T10:30:00Z",
        "updatedAt": "2026-08-04T10:30:00Z",
        "isDeleted": false,
        "status": "PENDING",
        "accountNumber": "111222333",
        "accountName": "Acme Corp",
        "routingNumber": "021000021",
        "clientBankAccountId": "erp-bank-001",
        "paymentMethod": "US_ACH",
        "bankName": "Chase",
        "streetLine": "270 Park Avenue",
        "city": "New York",
        "state": "NY",
        "postalCode": "10017",
        "country": "US"
      }
    ],
    "nextCursor": "eyJpZCI6ImJhbmtfYWNjb3VudF8xMjMifQ==",
    "hasNext": true
  }
  ```

  ```typescript JavaScript SDK theme={null}
  interface BankAccountListResponse {
    results: BankAccount[];
    nextCursor?: string | null;
    hasNext?: boolean;
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.