Extract data from bank reconciliations
Two numbers describe the same account and rarely match on the day the books close: the balance the bank reports and the balance in the company’s general ledger. A bank reconciliation is the working paper that explains the gap and proves the two tie once outstanding items clear. It is not the bank statement itself. Where a statement lists transactions, a reconciliation carries the statement balance, the book balance, the variance between them, and the adjustments (outstanding checks, deposits in transit, bank fees, interest) that account for the difference, so an auditor can trust the cash figure on the balance sheet.
The reconciliation only closes when the difference is fully explained. A month-end reconciliation for Lumière Retail SA at BNP Paribas, period ending 2026-06-30 in EUR, might show a bank statement balance of 152,340.00, a book balance of 148,115.00, and a reconciliation_variance of 4,225.00. That 4,225.00 EUR gap resolves into a 6,500.00 EUR outstanding check that the bank has not yet paid and a 2,275.00 EUR deposit in transit not yet credited, so the reconciled_balance of 148,115.00 EUR matches the ledger. The underlying transactions follow ISO 20022 camt.053 conventions, each carrying a booking date, a value date, a credit or debit indicator (CRDT or DBIT), and a bank transaction code, so the running balance can be rebuilt from the opening balance.
Set against the reconciliation schema, the working paper returns the account identity, the statement and book balances, the variance, and the reconciled balance as fields, while the bank transactions and the reconciliation adjustments stay as tables. Dropped into a close checklist, a reconciliation whose 4,225.00 EUR variance nets to zero after adjustments lets a controller read the variance and its explanation from structured fields rather than re-adding a spreadsheet.
What gets extracted from bank reconciliations
How extraction works for bank reconciliations
A reconciliation reaches the close team as a spreadsheet export, a system-generated PDF, or a scanned working paper, and the statement balance, the book balance, and the adjustments sit in a layout that differs by accounting system. Tied to the reconciliation model in the Field Registry, the document has opening_balance, closing_balance, book_balance, reconciled_balance, and reconciliation_variance typed as numbers in the account currency, with the header, the bank transactions, and the adjustments kept as distinct structures. It checks the reconciliation logic: the reconciliation_variance equals bank_statement_balance less book_balance, and the reconciliation_adjustments (outstanding checks, deposits in transit, fees) net to that variance so the reconciled_balance ties to the ledger. Transactions follow ISO 20022 camt.053 conventions, so each entry’s booking_date, value_date, credit_debit_indicator, and running_balance are captured and the running balance is rebuilt from the opening balance. Behind each figure sits a confidence score and a source-region pointer under DIN SPEC 91491, so a controller can open the variance, land on the outstanding check that explains it, and sign off the cash position.
Sample extraction
A month-end bank reconciliation with adjustments
{
"document_number": "REC-2026-06",
"document_date": "2026-07-02",
"period_end_date": "2026-06-30",
"statement_period_start": "2026-06-01",
"statement_period_end": "2026-06-30",
"bank_name": "BNP Paribas",
"bic": "BNPAFRPP",
"iban": "FR7630006000011234567890189",
"bank_account_number": "0011234567",
"account_holder.name": "Lumière Retail SA",
"currency": "EUR",
"opening_balance": 145600,
"closing_balance": 152340,
"bank_statement_balance": 152340,
"book_balance": 148115,
"reconciliation_variance": 4225,
"reconciled_balance": 148115,
"balance_credit_debit_indicator": "CRDT",
"prepared_by": "Camille Laurent",
"reviewed_by": "Olivier Marchand",
"reconciliation_status": "Reconciled",
"note": "Statement 152,340.00 less outstanding check 6,500.00 plus deposit in transit 2,275.00 = reconciled 148,115.00, matching the ledger; variance 4,225.00 fully explained",
"bank_transactions": [
{
"entry_reference": "E-4471",
"booking_date": "2026-06-18",
"value_date": "2026-06-18",
"amount": 12000,
"currency": "EUR",
"credit_debit_indicator": "CRDT",
"bank_transaction_code": "PMNT",
"payment_reference": "Card settlement batch",
"running_balance": 157600
},
{
"entry_reference": "E-4489",
"booking_date": "2026-06-27",
"value_date": "2026-06-28",
"amount": 5260,
"currency": "EUR",
"credit_debit_indicator": "DBIT",
"bank_transaction_code": "PMNT",
"payment_reference": "Supplier payment INV-8842",
"running_balance": 152340
}
],
"reconciliation_adjustments": [
{
"adjustment_id": "A1",
"adjustment_type": "outstanding_check",
"amount": 6500,
"description": "Check 20418 issued, not yet cleared",
"adjustment_date": "2026-06-29"
},
{
"adjustment_id": "A2",
"adjustment_type": "deposit_in_transit",
"amount": 2275,
"description": "Deposit lodged 2026-06-30, credited 2026-07-01",
"adjustment_date": "2026-06-30"
}
]
}Frequently asked
How is a bank reconciliation different from a bank statement?
A bank statement is the bank’s list of transactions and balances. A reconciliation is the working paper that ties that statement to the company ledger, carrying the book balance, the variance, and the adjustments that explain the gap. Talonic reads each on its own schema.
Does it check that the variance is fully explained?
Yes. The reconciliation_variance is verified to equal bank_statement_balance less book_balance, and the adjustments are checked to net to that variance, so a 4,225.00 EUR gap explained by a 6,500.00 EUR outstanding check and a 2,275.00 EUR deposit in transit is confirmed to tie out.
Does it follow a banking standard for the transactions?
Yes. The transactions follow ISO 20022 camt.053 conventions, so each carries a booking date, a value date, a credit or debit indicator (CRDT or DBIT), a bank transaction code, and a running balance rebuilt from the opening balance.
Can it handle a scanned or spreadsheet-exported reconciliation?
Yes. Whether the reconciliation is a system PDF, a spreadsheet export, or a scan, the header balances and the two tables are extracted with a confidence score and a source-region pointer on every figure for review.
What fields are extracted from bank reconciliations?
Talonic returns bank reconciliations as schema-validated, typed fields. Common fields include Reconciliation Number, Period End Date, Bank Name, Account Holder, and more, each normalized (dates to ISO 8601, amounts as numbers) and mapped to a stable key so the output shape stays the same across layouts.
How accurate is extraction from bank reconciliations, and how is confidence reported?
Every extracted cell carries a confidence score from 0.0 to 1.0 and a provenance pointer back to the source page and region, so low-confidence values can be reviewed against the original before the data is trusted downstream. There is no single accuracy number: confidence is reported per field so you can gate on it.
Can I use bank reconciliations extraction in production?
Yes. The same engine behind this guide is available as a production REST API and Node SDK with sync, async, and streaming modes, schema versioning, signed webhooks, and EU-resident processing. Start free with an API key, then scale on usage-based pricing.
What does it cost to extract data from bank reconciliations?
There is a free tier for prototyping and agent evaluation with no credit card. Paid usage is credit-based at 1,000 credits per euro: page ingestion is 100 credits per page and registry-resolved queries are free. See talonic.com/pricing for current rates.
Ready to extract from your own bank reconciliations?
- GDPR
- HIPAA
- ISO 27001 / 42001 aligned
- DIN SPEC 91491 co-author
- EU-resident infrastructure
Author note
Reviewed by Talonic engineering, finance schema review · last reviewed 2026-07-09