Skip to main content
Back to Insights
Operations8 min read

From Monthly Reconciliation to Continuous Matching

Confidence-scored matching, ISO 20022 transaction classification, and the operational impact of daily automated reconciliation.

Real-Time Reconciliation: From Monthly Fire Drill to Continuous Confidence


Last week of the month. The finance team downloads bank statements. Exports the internal ledger. Opens a spreadsheet. Starts matching.

Row by row. Amount, date, reference. Some match cleanly. Some are off by a day, timing difference between booking date and value date. Some match on amount but not on reference, the bank truncated the end-to-end ID. Some don't match at all: a bank fee that no one expected, a returned payment that the system recorded under a different transaction code, a duplicate entry from a provider webhook that fired twice.

The unmatched items become a queue. Each one requires investigation. How old is the discrepancy? A week? Two? Thirty days? The older it is, the harder the investigation. A 30-day-old mismatch requires forensic work across bank portals, internal logs, provider dashboards, and sometimes a phone call to the clearing partner. A 1-day-old mismatch is usually obvious.

This is the monthly fire drill. It costs time, attention, and confidence. The team dreads it. The CFO asks about it. The auditor asks about it more.

Bank Statement Import as the Foundation

camt.053 (bank-to-customer statement) is the ISO 20022 standard format for end-of-day bank statements in SEPA. Most banks provide it. Some provide camt.052 (intraday) as well.

Automated import means: parse the XML, extract transactions as structured records, store them in a reconciliation staging table. Each imported transaction carries:

FieldSourcePurpose
Amountcamt.053 AmtPrimary match field
Currencycamt.053 CcyMust match ledger currency
Value datecamt.053 ValDtSettlement date (not booking date)
Booking datecamt.053 BookgDtWhen the bank recorded it
Creditor/Debtor IBANcamt.053 CdtrAcct/DbtrAcctCounterparty identification
End-to-end referencecamt.053 EndToEndIdPrimary correlation to internal transfers
BankTransactionCodecamt.053 BkTxCd (Domain/Family/SubFamily)Transaction classification
Remittance infocamt.053 RmtInfFree-text or structured reference

The BankTransactionCode is the same ISO 20022 classification discussed in the ISO 20022 article: PMNT/RCDT/ESCT for an incoming SEPA Credit Transfer, PMNT/RDDT/ESDD for an incoming Direct Debit. If the internal ledger uses the same codes, because it stores ISO 20022 classifications natively, the classification match is structural. No translation required.

Confidence-Scored Matching

Matching is not binary. A bank statement entry either matches an internal ledger entry perfectly, partially, or not at all. The matching engine compares multiple fields and produces a confidence score.

Match FieldWeightTolerance
Amount + Currency40%Exact match required
End-to-end reference30%Exact or substring (banks truncate)
Value date15%±1 business day
BankTransactionCode10%Exact ISO code match
Counterparty IBAN5%Exact match

Weights are configurable. Date matching tolerates ±1 business day because value dates and booking dates can differ across time zones and clearing cutoff times.

The confidence score drives the action:

ConfidenceCount (typical)Action
≥ 0.95~92% of itemsAuto-matched. No human review needed.
0.70, 0.94~5% of itemsSuggested match. Manual confirmation with one click.
< 0.70~3% of itemsUnmatched. Requires investigation.

The target: auto-match rate above 95%. This means 95 out of 100 bank statement entries are matched to internal ledger entries without human intervention. The remaining 5 are presented to the finance team as a prioritized queue, not a spreadsheet dump.

The 3% unmatched items are the ones that matter. They are bank fees, late returns, provider duplicates, and genuine discrepancies. Investigating 3 items per 100 is a task. Investigating 100 items per 100 is a fire drill.

From Monthly to Continuous

The shift: import bank statements daily (camt.053 end-of-day) or intraday (camt.052). Run the matching engine automatically. Present the results every morning.

IntervalUnmatched Queue SizeInvestigation EffortDiscovery Lag
Monthly100-500 itemsMulti-day projectUp to 30 days
Weekly25-100 itemsHalf-day taskUp to 7 days
Daily (T+1)5-15 items30-minute review1 day
Intraday1-5 itemsReal-time alertsHours

Investigation effort drops not just because the queue is smaller, but because the items are fresh. A discrepancy from yesterday has context: the team remembers the transactions, the bank portal shows recent activity, the provider dashboard has current data. A discrepancy from three weeks ago requires archaeology.

Three metrics track reconciliation health:

  • Auto-match rate: percentage of items matched without human intervention. Target: >95%.
  • Average resolution time: how long unmatched items stay in the queue. Target: <24 hours.
  • Reconciliation gap: elapsed time between a transaction occurring and its reconciliation being confirmed. Target: T+1 or better.

What This Requires from Your Ledger

A matching engine is only as good as the data it receives from both sides. Bank statements provide structured, ISO-standard data. Your internal ledger must provide equally structured data, or the matching degrades from deterministic to heuristic.

Consistent references. Every outbound payment must carry an end-to-end reference that the bank preserves in the statement. If the internal system generates references that the clearing network truncates or modifies, the matching engine loses its primary correlation field.

ISO-standard transaction codes. If the internal ledger uses PMNT/ICDT/ESCT for an outgoing SEPA Credit Transfer and the bank statement uses the same code, matching on transaction type is automatic. If the internal ledger uses a proprietary code (SEPA_CT_OUT) and the bank statement uses ISO, a translation layer is needed, and every translation is a potential mismatch source.

Value dates. The bank statement reports value dates (when funds are available) and booking dates (when the bank recorded the entry). The internal ledger must track both. Matching on booking date alone produces false mismatches when value dates differ.

Structured amounts. Integer arithmetic. No floating-point. A ledger entry of EUR 100.00 stored as 10000 (cents) matches a bank statement amount of 100.00 parsed to 10000. If either side uses floating-point, rounding differences create phantom mismatches: 99.999999100.000000.

The Operational Impact

Continuous reconciliation changes the finance team's relationship with the numbers.

Monthly reconciliation is retrospective. The team discovers problems after the fact. The CFO sees the reconciliation report and asks: "Are we confident in last month's numbers?" The honest answer is: "We will be, after we clear the unmatched queue."

Daily reconciliation is prospective. The team starts each day with a confirmed position. The unmatched queue from yesterday is 5 items, not 500. The CFO asks: "Are we confident?" The answer is: "As of yesterday's close, yes. Here are the 3 items we're investigating today."

The confidence is not aspirational. It is measured. Auto-match rate: 96.2%. Average resolution time: 4.3 hours. Reconciliation gap: T+1. These are numbers an auditor can verify.


Read more: Connectivity, Financial Rails | ISO 20022: Beyond Message Format Conversion


Sources: