Get a bank statement
Poll this after uploading a PDF with extraction enabled — the terminal
states are completed and failed, and extraction_error explains the
latter.
Authentication
JWT issued via POST /api/v1/auth/sign_in. Used by mobile and SPA clients. Revoked tokens are rejected.
Lucanto API key. Two prefixes:
lct_pat_<random><checksum>— personal access token (owner: User)lct_live_<random><checksum>— workspace token, live data
Issue keys at /settings/api_keys (personal) or
/:workspace_id/settings/api_keys (workspace). Plaintext token is
shown once and never again.
Path parameters
Bank statement ID. Either the numeric id or the public_id (bst_…).
Response
Stable public identifier of this record. Never changes once assigned.
Its prefix names the entity: doc_ document (invoice, proforma, credit
note, quote, sales order), exp_ expense, cnt_ contact, prj_
project, ba_ bank account or cash register, txn_ transaction,
lon_ loan, bst_ bank statement. Accepted in place of the numeric
id in this resource’s path parameters and in request fields that
reference it (customer_id, bank_account_id, …).
psd2 — downloaded by a bank connection. manual — uploaded, whether through the app or this API.
AI extraction state, PDF only. manual means no extraction was ever
requested — the normal terminal state for an archived PDF and for
every XML statement, whose transactions come from parsing, not AI.
Slim embed of the owning account — identity only, no balances.
Last day covered by the statement. Same semantics as period_from.
Why AI extraction was not run on an uploaded PDF. quota means
extraction was omitted because AI extraction quota was exhausted
(the statement was archived unread). null when extraction ran, was
explicitly turned off (extract: false), or for XML statements.
Transactions this statement produced. Populated on import; 0 for an archived PDF until extraction completes.
Rows in the AI-extraction staging area, grouped by status, e.g.
{"imported": 42, "pending": 3}.
Only PDF statements that went through extraction have these — an
extracted PDF stages its rows for review before they become
transactions. XML statements are always {}: camt.053 parsing
creates transactions directly, with no staging step, so
transactions_created / transactions_skipped is where an XML
import reports itself.
What the statement is for. import — its rows become transactions.
compare — the account already receives its transactions from the
bank (PSD2), so the statement only checks the sync: see
comparison. null — not decided yet.
null unless reconciliation_mode is compare. Computed from the
account’s state at request time. An XML statement’s matched count
and the transactions it claims come from its comparison, stored
when the file was read; only the split of its unmatched rows by the
sync coverage (missing, awaiting_bank, fetchable,
before_sync) is recomputed.
