---
title: "Withdraw Bank Statement"
method: POST
path: "/bank-statements/{statement_id}/withdraw"
tags: ["reconciliation"]
---

# Withdraw Bank Statement

`POST /bank-statements/{statement_id}/withdraw`

## 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/bank-statements/{statement_id}/withdraw`
- Auth: none declared

Take a statement out of the books without deleting it (ZET-381, owner ruling
2026-09-24): a superseded file, one filed under the wrong account, or not a statement.

Each live suspense parking of its entries is reversed on its own date and each entry is
marked ignored and stamped with the reason; the statement stays as the document of
record (and can then be deleted). Nothing posted is edited or deleted. 409 when any
entry is matched to a document or booked (a coding, a settlement, a journal link) —
unlink or reverse it first — and, for ``superseded``, when an entry is not held on
another statement of the account (import the replacement first). A parking in a closed
period refuses the whole withdrawal (422); nothing is withdrawn then. Repeating the call
changes nothing. Accountant/owner (ZCT-257).

## Path parameters

- `statement_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Request body

- WithdrawStatementRequest: ``POST /bank-statements/{id}/withdraw`` (ZET-381) — the reason is the audit trail.
  - `reason` 'superseded' | 'wrong_account' | 'not_a_statement', required
  - `note` string, nullable

## Response `200`

Successful Response

- MsgResponse: The ``{"msg": "..."}`` envelope — the error contract and many successes.
  - `msg` string, 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)
