---
title: "Bank Account Ownership Review"
method: GET
path: "/companies/{company_id}/bank-accounts/ownership-review"
tags: ["reconciliation"]
---

# Bank Account Ownership Review

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

## 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/ownership-review`
- Auth: none declared

The retroactive ownership-review report (gap #8/D3 follow-up).

Lists each grandfathered account — ``auto_created`` + ``confirmed`` + never
reviewed (pre-0032 statement imports predate ownership checking) — together
with the statements it imported. The list drains as accounts are confirmed
(stamps ``ownership_reviewed_at``) or rejected.

## Path parameters

- `company_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Response `200`

Successful Response

- OwnershipReviewResponse: Each grandfathered (auto-created, confirmed, never-reviewed) account with the statements it imported.
  - `accounts` OwnershipReviewAccount[], required
    - `bank_account` 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
    - `statements` OwnershipReviewStatement[], required
      - `id` string, required
      - `statement_identifier` string, required
      - `from_date` string, date-time, nullable
      - `to_date` string, date-time, nullable
      - `source_filename` string, nullable
      - `entry_count` integer, required
      - `imported_at` string, date-time, required

## 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)
