---
title: "Bank Journal Post"
method: POST
path: "/companies/{company_id}/journal-entry-files/post"
tags: ["journal-export"]
---

# Bank Journal Post

`POST /companies/{company_id}/journal-entry-files/post`

## 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}/journal-entry-files/post`
- Auth: none declared

Post the edited bank journal entries into the GL (accountant/owner, ZCT-257).

The **primary** confirm action: it creates the reviewed double-entry journal entries
in the posting GL and returns a small summary (no file). Same selection-drift (**409**)
and broken-document (**422**) contract as render. ``post_review=True``: the user has
reviewed and balanced each entry in the grid, so an accountant ``needs_review`` hint no
longer blocks the explicit post. Soft-failing per entry (a stale chart or closed period
skips that entry only). **Not idempotent since ZENO-236:** a movement or document the
ledger already holds — including one this route posted — is refused with **409**
``conflict.selectionChangedSincePreview``, as is one being booked concurrently.

## Path parameters

- `company_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Request body

- JournalPostRequest: The inbound contract for posting the edited entries into the GL (no ``format``).
  - `entries` RenderEntry[]
    - `entry_id` string, required
    - `lines` RenderLine[]
      - `line_id` string, required
      - `side` string, required
      - `account` string, required
      - `amount` string, required
      - `currency` string, required
      - `vat_code` string, nullable
      - `vat_amount` string, nullable
      - `text` string, nullable
      - `line_header_overrides` object
    - `header_field_overrides` object
    - `posting_date` string, nullable
    - `document_date` string, nullable
    - `reference` string, nullable
    - `description` string, nullable

## Response `200`

Successful Response

- JournalPostResult: Outcome of a GL post: how many edited entries landed vs were skipped.
  - `total` integer, required
  - `posted` integer, required
  - `skipped` integer, required
  - `posted_entry_ids` string[]

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