---
title: "List Bank Accounts"
method: GET
path: "/companies/{company_id}/bank-accounts"
tags: ["reconciliation"]
---

# List Bank Accounts

`GET /companies/{company_id}/bank-accounts`

## Request

- Base URL: `https://app.zeno-works.ch` (the document declares no server; this is the origin it was published from)
- URL: `https://app.zeno-works.ch/companies/{company_id}/bank-accounts`
- Auth: none declared

The company's bank accounts — the ``bank_account_id`` every statement import,
bank-entry list and reconciliation call needs (CompanyMember read).

Oldest first, no filter and no paging. Each row carries the ``iban``, ``currency``,
``label``/``bank_name`` and ``ledger_account_number`` — the chart code this account
posts through; **without one a bank movement cannot be coded**, and it is set with
``PUT /bank-accounts/{account_id}``.

``auto_created`` marks an account inferred from an imported statement rather than
declared by a human; it starts ``ownership_status`` unconfirmed with
``needs_ownership_review: true`` — confirm it before trusting its balances, since an
unconfirmed IBAN may not be the company's at all. ``statement_count`` /
``entry_count`` are ``null`` here (filled by the single-account
``GET /bank-accounts/{account_id}``), which is not the same as zero.

## Path parameters

- `company_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Response `200`

Successful Response

- BankAccountsResponse
  - `bank_accounts` BankAccountOut[], required
    - `id` string, required
    - `company_id` string, required
    - `iban` string, required
    - `currency` string, nullable
    - `label` string, nullable
    - `holder_name` string, nullable
    - `bic` string, nullable
    - `bank_name` string, nullable
    - `ledger_account_number` string, nullable
    - `auto_created` boolean, required
    - `ownership_status` 'declared' | 'confirmed' | 'pending', required: Ownership state of a ``BankAccount`` (gap #8, D3 — foreign-statement hold). ``declared`` = the user declared the IBAN as the company's own (onboarding); ``confirmed`` = a human confirmed a statement-created account as ours (or the account predates the check and was grandfathered by migration 0032); ``pending`` = created by a statement import for an IBAN the company never declared — its entries are held (no matching, no GL settlement) until a human confirms or rejects the account. Server default is ``pending`` (fail-closed).
    - `ownership_reviewed_at` string, date-time, nullable
    - `needs_ownership_review` boolean
    - `created_at` string, date-time, required
    - `statement_count` integer, nullable
    - `entry_count` integer, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/zeno-works/apis/zeno-api.md) · [All operations](https://skmtc.dev/zeno-works/apis/zeno-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zeno-works/apis/zeno-api/revisions/1eb93dde146c?raw)
