---
title: "Company Resettle"
method: POST
path: "/companies/{company_id}/reconciliation/resettle"
tags: ["reconciliation"]
---

# Company Resettle

`POST /companies/{company_id}/reconciliation/resettle`

## 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}/reconciliation/resettle`
- Auth: none declared

Drain the company's Suspense: re-match, then re-settle, every parked entry (ZET-179).

The operator half of the settlement-plane fix. Before it, an affected company could
not be un-stuck through the API at all — ``match_gl_open_item`` was reachable only by
*creating* a commercial document, and the background sweep's claim skipped the damaged
entries because they read ``reconciliation_status=matched``.

Safe to run repeatedly. Settlement is idempotent and additive: a later settle only
drains Suspense → AR as more matches arrive, so an entry that cannot improve is a
no-op rather than a double posting.

``entry_id`` narrows the run to that one bank entry (ZCT-522). Purely a **subset** of
what the same call would do unfiltered: the selection keeps this company's scope and
the identical ``pending_settlement_criteria()``, so an id belonging to another company
— or one the criteria exclude — simply scans nothing and reports ``scanned: 0``, the
same 202 shape as an already-clean company. It never widens or reorders the population,
and it is not a dry run: the entries it does select post exactly as they would without
it. ``still_in_suspense`` stays the **company** residual — it is the number the operator
works by hand and the one that blocks a VAT filing, so scoping it to one entry would
answer a different question.

``CompanyAccountant``, unlike its two link-only siblings on this router: this one
posts journal entries.

## Path parameters

- `company_id` string, required

## Query parameters

- `limit` integer
- `entry_id` string, nullable

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Response `202`

Successful Response

- ResettleResponse: Outcome of a company-wide suspense drain (ZET-179). ``still_in_suspense`` is the point of the response, not ``settled``: it is the structural residual — entries with no open item to settle against — which is what the operator must then look at by hand, and what blocks a VAT filing.
  - `msg` string, required
  - `scanned` integer, required
  - `linked` integer, required
  - `settled` integer, required
  - `still_in_suspense` integer, 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)
