---
title: "Link Gl Open Item"
method: POST
path: "/bank-entries/{entry_id}/gl-open-items"
tags: ["reconciliation"]
---

# Link Gl Open Item

`POST /bank-entries/{entry_id}/gl-open-items`

## 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-entries/{entry_id}/gl-open-items`
- Auth: none declared

Manually link a native GL open item to a bank entry (for clean-bank settlement).

``allocated_amount`` is in the **movement's** currency — that is how settlement reads
a link. Omitted, it defaults to what settling would pay of the item from this movement
(``settlement.default_link_amount``): the item's open amount converted into the
movement's currency, capped at the movement (ZCT-848, ZCT-872 — it used to default to
the item's base-currency figure, which a USD movement then read as USD). **422**
``invalid.openItemLinkAmountRequired`` when there is no such figure (a third currency,
or an item with nothing open): state the amount explicitly.

**A base-currency movement against an item in another currency** (F2635) is the one pair a
payment cannot settle by itself (F2620): ``released_amount_currency`` — the amount of the
item's own currency the movement settles — is required, and ``allocated_amount`` is then the
cash in the movement's currency that figure takes (default: what the movement's other links
leave of it). Both amounts are whole cents. **422** ``invalid.dischargeAmountRequired``
without it, ``invalid.dischargeAmountNotApplicable`` when given for any other pair,
``invalid.dischargeAmountExceedsOpen`` beyond what the item has open,
``invalid.dischargeCashExceedsMovement`` when the cash is not positive or beyond what the
movement's other links leave, ``invalid.dischargeRateImplausible`` when the rate the two
figures imply is outside a factor of two of BOTH the published rate for the movement's date
and the rate the item is booked at (either one suffices; nothing is judged without a
reference), ``invalid.dischargeItemNotAdmissible`` for an item of the wrong direction or a
credit note. Re-posting an existing link edits it (200), and re-posting its own figures is
a no-op; once settlement booked a payment from it the stated amounts are fixed (**409**
``conflict.dischargeAlreadySettled`` — reverse the payment first).

## Path parameters

- `entry_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Request body

- LinkGlOpenItemRequest: Link a native GL open item to a movement. ``released_amount_currency`` (F2635): the amount of the **item's own currency** this movement settles. Required — and only accepted — when the movement is in the base currency and the item in another currency (a payment in base never shows how much of a foreign item it discharges); then ``allocated_amount`` is the cash in the movement's currency that figure takes, defaulting to what the movement's other links leave.
  - `gl_open_item_id` string, required
  - `allocated_amount` union
    - number
    - string
  - `released_amount_currency` union
    - number
    - string

## Response `201`

Successful Response

- BankEntryMsgResponse
  - `msg` string, required
  - `bank_entry` BankEntryDetail, required
    - `id` string, required
    - `company_id` string, required
    - `bank_account_id` string, required
    - `bank_statement_id` string, required
    - `entry_index` integer, required
    - `amount` string, required
    - `currency` string, required
    - `credit_debit` 'credit' | 'debit', required
    - `booking_date` string, date, nullable
    - `value_date` string, date, nullable
    - `account_servicer_ref` string, nullable
    - `end_to_end_id` string, nullable
    - `reference` string, nullable
    - `reference_type` string, nullable
    - `remittance_info` string, nullable
    - `additional_entry_info` string, nullable
    - `counterparty_name` string, nullable
    - `counterparty_iban` string, nullable
    - `counterparty_id` string, nullable
    - `reconciliation_status` 'unmatched' | 'partially_matched' | 'matched' | 'ignored', required
    - `settlement_status` 'unsettled' | 'settled' | 'partially_settled' | 'suspense': Clean-bank settlement state of a bank entry (distinct from ``reconciliation_status``, which the matcher owns). Set by ``settle_bank_entry``.
    - `matched_amount` string, required
    - `possible_duplicate` boolean, required
    - `is_own_payment` boolean
    - `created_at` string, date-time, required
    - `has_invoice` boolean
    - `has_journal` boolean
    - `has_ledger_match` boolean
    - `needs_review` boolean
    - `journal_exportable` boolean
    - `journal_export_blocked_reason` string, nullable
    - `journal_export_soft_warning` string, nullable
    - `counterparty_hint` InvoiageCoreAccountingReconciliationSchemasReconciliationCounterpartyBrief
      - `id` string, required
      - `kind` string, required
      - `name` string, required
      - `normalized_name` string, required
      - `vat_number` string, nullable
    - `counterparty` InvoiageCoreAccountingReconciliationSchemasReconciliationCounterpartyBrief
      - `id` string, required
      - `kind` string, required
      - `name` string, required
      - `normalized_name` string, required
      - `vat_number` string, nullable
    - `match_quality` 'full' | 'strong' | 'partial' | 'weak' | 'manual' | 'imported': Graded bank-entry ↔ invoice match quality (match-quality feature, 2026-06-09). Auto bands (from how many matchable fields line up, see ``services.reconciliation``): ``full`` > ``strong`` > ``partial`` > ``weak``. ``manual`` (user-created/confirmed) and ``imported`` (asserted by a source export) are provenance values that win over any auto band.
    - `links` BankEntryLinks
      - `items` LinkedItem[]
        - `link_id` string, required
        - `item_id` string, required
        - `allocated_amount` string, required
        - `match_quality` 'full' | 'strong' | 'partial' | 'weak' | 'manual' | 'imported', required: Graded bank-entry ↔ invoice match quality (match-quality feature, 2026-06-09). Auto bands (from how many matchable fields line up, see ``services.reconciliation``): ``full`` > ``strong`` > ``partial`` > ``weak``. ``manual`` (user-created/confirmed) and ``imported`` (asserted by a source export) are provenance values that win over any auto band.
        - `match_signals` object, nullable
        - `confidence` string, nullable
        - `filename` string, nullable
        - `direction` string, nullable
      - `journal_entries` LinkedJournalEntry[]
        - `link_id` string, required
        - `journal_entry_id` string, required
        - `allocated_amount` string, required
        - `match_quality` 'full' | 'strong' | 'partial' | 'weak' | 'manual' | 'imported', required: Graded bank-entry ↔ invoice match quality (match-quality feature, 2026-06-09). Auto bands (from how many matchable fields line up, see ``services.reconciliation``): ``full`` > ``strong`` > ``partial`` > ``weak``. ``manual`` (user-created/confirmed) and ``imported`` (asserted by a source export) are provenance values that win over any auto band.
        - `match_signals` object, nullable
        - `confidence` string, nullable
        - `document_number` string, nullable
        - `description` string, nullable
      - `accounting_invoices` LinkedAccountingInvoice[]
        - `link_id` string, required
        - `accounting_invoice_id` string, required
        - `allocated_amount` string, required
        - `released_amount_currency` string, nullable
        - `match_quality` 'full' | 'strong' | 'partial' | 'weak' | 'manual' | 'imported', required: Graded bank-entry ↔ invoice match quality (match-quality feature, 2026-06-09). Auto bands (from how many matchable fields line up, see ``services.reconciliation``): ``full`` > ``strong`` > ``partial`` > ``weak``. ``manual`` (user-created/confirmed) and ``imported`` (asserted by a source export) are provenance values that win over any auto band.
        - `match_signals` object, nullable
        - `confidence` string, nullable
        - `invoice_number` string, nullable
        - `counterparty_name` string, nullable
        - `direction` 'payable' | 'receivable'
        - `currency` string, nullable
        - `open_amount` string, nullable
        - `needs_discharge` boolean
        - `published_rate` string, nullable
        - `booking_rate` string, nullable
      - `gl_open_items` LinkedGlOpenItem[]
        - `link_id` string, required
        - `gl_open_item_id` string, required
        - `allocated_amount` string, required
        - `released_amount_currency` string, nullable
        - `match_quality` 'full' | 'strong' | 'partial' | 'weak' | 'manual' | 'imported', required: Graded bank-entry ↔ invoice match quality (match-quality feature, 2026-06-09). Auto bands (from how many matchable fields line up, see ``services.reconciliation``): ``full`` > ``strong`` > ``partial`` > ``weak``. ``manual`` (user-created/confirmed) and ``imported`` (asserted by a source export) are provenance values that win over any auto band.
        - `match_signals` object, nullable
        - `confidence` string, nullable
        - `document_no` string, nullable
        - `counterparty_name` string, nullable
        - `direction` 'payable' | 'receivable'
        - `open_amount` string, nullable
        - `currency` string, nullable
        - `due_date` string, date, nullable
        - `is_credit_note` boolean
        - `needs_discharge` boolean
        - `published_rate` string, nullable
        - `booking_rate` string, nullable
      - `gl_journal_entries` LinkedGlJournalEntry[]
        - `link_id` string, required
        - `gl_journal_entry_id` string, required
        - `allocated_amount` string, required
        - `match_quality` 'full' | 'strong' | 'partial' | 'weak' | 'manual' | 'imported', required: Graded bank-entry ↔ invoice match quality (match-quality feature, 2026-06-09). Auto bands (from how many matchable fields line up, see ``services.reconciliation``): ``full`` > ``strong`` > ``partial`` > ``weak``. ``manual`` (user-created/confirmed) and ``imported`` (asserted by a source export) are provenance values that win over any auto band.
        - `match_signals` object, nullable
        - `confidence` string, nullable
        - `entry_no` integer, nullable
        - `posting_date` string, date, nullable
        - `description` string, nullable
        - `status` 'draft' | 'posted' | 'reversed'
        - `transfer_bank_entry_id` string, nullable
    - `settlement_blocker` string, nullable
    - `pays_card_bill` boolean
    - `card_clearing_account_code` string, 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)
