Skip to main content
POST
Match a deposit to invoices

Authorizations

Authorization
string
header
required

API key issued per entity via Settings > Developers > API Keys. Each key carries scopes (e.g. orders:read, products:write). Bearer token format: Authorization: Bearer ark_live_ent_Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.

Path Parameters

id
string<uuid>
required

Bank transaction (deposit) UUID.

Body

application/json
account_id
string<uuid>
required

Customer account the deposit pays.

applications
object[]
required

Per-invoice application amounts.

route_unapplied
string | null

How to route any unapplied remainder.

reconciliation_id
string<uuid> | null
payment_method
string | null

Response

Deposit matched; payment recorded and posted.

The canonical handler's payload. Additional properties are returned; the one this spec pins is the book-side stamp added 2026-09-19 by BANKFEED wave 4 lane W4-G.

book_side
object | null

What the GENERAL LEDGER now says about the money this bank line explains. Added 2026-09-19 by BANKFEED wave 4 lane W4-G, and it is purely additive: no request field changed and no existing response field changed meaning.

A bank reconciliation has two sides. The bank side is reconciliation_status on the bank transaction. The BOOK side is reconciled_at on the journal entry's line on that bank account's GL account, and until this lane no verb outside a statement session ever wrote it, so matched money could read UNCLEARED in the ledger forever.

STILL NO GL IS POSTED. The stamp writes no debit and no credit; the trial balance is identical before and after, and a closed period cannot be moved by it. What it changes is which lines the reconciliation workbench and the bank register's open-items tile still treat as outstanding.

stamped: 0 with a reason is an honest answer, not an error: no_leg_on_bank_gl means the entry carries no line on THIS account's GL (a payout settled to a different account, for example); already_reconciled means a session or a baseline had already cleared it; missing_argument means the record carries no journal entry to stamp.