Skip to content
Bankautomation

Bank reconciliation automation, step by step and without the sales pitch

Published 29 July 2026

10 min read

bank reconciliation automation

camt.053 · NOSTRO USD · value date 03 sep 2026

Nostro cash break, sample data

Match rate

75.0%

Breaks

4

At risk

$533.9k

Oldest

4d

Date ±1d
Amount

This console matches the first rows a side. It left out statement and ledger , so anything in them is not counted below. To run a full file, .

BRK-001

Aged 0d

$219,105.40

2026-09-03 · both sides

REF//FX/SPOT/7741 · INTERBANK FX DESK

Amount differs by 164.80 USD (0.075%)

Re-price the ledger leg on the correspondent rate source for the value date and post 164.80 USD to FX variance.

FX RATE SOURCE

→ Treasury Ops

BRK-002

Aged 4d

$187,650.00

2026-08-30 · ledger

PAY/90012/R · KESTREL LOGISTICS

Second ledger entry for 187,650.00 USD against REF//PAY/90012

Confirm the original entry REF//PAY/90012 cleared, then reverse this posting under maker-checker and note the reversal on the original item.

DUPLICATE POSTING

→ Finance

BRK-003

Aged 0d

$123,760.00

2026-09-03 · both sides

REF//TRF/554121 · HALCYON TRADING

Statement 61,880.00 vs ledger 123,760.00 (50% short)

Split the ledger posting and match the settled leg; leave the residual 61,880.00 USD open against the same reference.

PARTIAL SETTLEMENT

→ Payments Ops

BRK-004

Aged 0d

$3,410.00

2026-09-03 · statement

REF//CHG/Q3FEES · CORRESPONDENT CHARGES

On the statement, nothing in the ledger

Post 3,410.00 USD to the charges account for the period and add it to the standing accrual so it stops surfacing as a break.

FEE NOT ACCRUED

→ Finance

Everything matched under these tolerances.

Tighten the date or amount tolerance to see the breaks it was absorbing.

Correspondent statement

camt.053 · NOSTRO USD

Value date Reference Amount
2026-09-02 REF//NONREF/2026090301 1,284,500.00
2026-09-02 REF//INV/88231 96,400.00
2026-09-03 REF//TRF/554120 452,180.25
2026-09-03 REF//FX/SPOT/7741 218,940.60
2026-09-01 REF//SEPA/33421 74,220.00
2026-09-03 REF//CHG/Q3FEES 3,410.00
2026-09-03 REF//TRF/554121 61,880.00
2026-09-02 REF//PAY/90012 187,650.00
2026-09-02 REF//INV/88245 242,015.00
2026-09-03 REF//TRF/554133 18,905.50
2026-09-01 REF//PAY/90044 505,300.00
2026-09-03 REF//INV/88260 132,640.75

Internal nostro ledger

Core banking export

Value date Reference Amount
2026-09-02 NONREF/2026090301 1,284,500.00
2026-09-02 INV/88231 96,400.00
2026-09-03 TRF/554120 452,180.25
2026-09-03 FX/SPOT/7741 219,105.40
2026-08-31 SEPA/33421 74,220.00
2026-09-02 PAY/90012 187,650.00
2026-09-03 TRF/554121 123,760.00
2026-08-30 PAY/90012/R 187,650.00
2026-09-02 INV/88245 242,015.00
2026-09-03 TRF/554133 18,905.50
2026-09-01 PAY/90044 505,300.00
2026-09-03 INV/88260 132,640.75
Matched pairs are tinted on both sides. Breaks carry the brass left rule and appear in the worklist.

Sample data only. Matching runs in your browser; classification is written by the model when you press Run. Matching done in your browser. Writing classifications… Classifications written by the model on this run. Decision support, not a compliance determination. The classification model was unavailable, so the built-in rule classifier wrote these. Same matching, same numbers. This console classifies up to 12 runs a minute and this run went over, so the built-in rule classifier wrote these. Same matching, same numbers. Wait a minute for the model, or . The model wrote the first 8 classifications; the rule classifier wrote the remaining .

Open the full resolver

Automating a reconciliation is mostly a series of decisions about what you are willing to stop looking at. Get those decisions written down and approved, and the technology part is straightforward. Skip them, and you have automated a habit.

Step 1: pick the account that hurts, not the account that is easy

The instinct is to start with a clean, low volume account to prove the concept. It proves nothing. Start with the account that generates the most manual work: usually a nostro, a settlement account or a suspense account. It is also the account where the classification vocabulary will be tested properly.

Step 2: get both sides on a schedule

Automation dies on data supply. The external side is a statement, camt.053 or MT940, delivered on a known schedule. The internal side is a ledger export with the same fields available. If either side is a person pressing export when they remember, fix that before configuring a single rule, and put duplicate file detection in place from day one.

Data quality, and the three checks worth running first

Reconciliation is unusually good at exposing data problems that every other process tolerates, because it is the only process that compares two independent records of the same event. Before configuring a single rule, three checks on a month of real files will predict most of what the project will find.

  1. 01Reference survival. Take fifty items and check whether the reference on the instruction appears, in any recognisable form, on the statement entry. The proportion that survives is the ceiling on your exact match rate, and no amount of rule writing raises it.
  2. 02Date discipline. Compare booking date and value date on the statement against the date your ledger uses. If your ledger keys on booking date and the statement reports on value date, every cross-cut-off item is a timing break that never needed to be one.
  3. 03Amount integrity. Check how often the amount that arrives differs from the amount instructed, and whether the difference is explained by a charge. A high unexplained rate is a fee modelling gap, not a matching problem.

These three checks take a day and change the shape of the project, because they distinguish work that rules can fix from work that only an upstream change can fix. A project that promises a high match rate on data where references do not survive is promising something the data cannot deliver.

Step 3: agree tolerances, and write down what they mean

A tolerance is permission to stop looking. Three questions make the decision defensible: what class of difference does this absorb, what could it hide, and who approved it?

ToleranceAbsorbsCould hideReasonable default
Value date window Cut-off and time zone differences A payment that never settled One day, per correspondent
Amount, absolute Rounding Small deducted fees A cent, tightened where fees are modelled
Amount, percentage FX rate source differences Partial settlement Well under a percent, and never on non FX accounts
Reference normalization Format prefixes and noise Genuinely different references Explicit rules, not blanket character stripping

Swipe the table sideways to read every column.

Step 4: make the break the unit of work

An unmatched item is not an error message, it is a task. It needs a classification so similar work is handled similarly, a suggested action so the analyst starts from something, an owner so it is not everybody's problem, and an age so nobody can pretend it is new.

Six classifications cover the overwhelming majority of cash reconciliation work: FX rate source, timing or value date, duplicate posting, missing reference, fee not accrued, and partial settlement. Add classifications only when a real recurring case does not fit, because a long taxonomy is used inconsistently and an inconsistent taxonomy tells you nothing.

Step 5: enforce approvals in the system

Write-offs, reversals, tolerance changes and routing changes are the actions that can hide a problem. Each needs a maker and a checker who are different people, a reason code, and a record that survives both of them leaving the bank.

Step 6: prove the control worked

Evidence collected while the work happens is free. Evidence assembled afterwards is a project, and worse, it invites the kind of tidying that turns a small finding into a large one. The test is simple: can you produce, for one account and one period, the reconciliation, the open items, every action with an actor and a timestamp, the approvals and the rule versions, in one export?

Step 7: measure the right four numbers

Reconciliation programmes accumulate metrics quickly and most of them are decoration. Four numbers tell you whether the control is working, and they are worth defending against additions.

NumberWhat it tells youHow it gets gamed
Exact match rate Whether data quality and references are sound Widening tolerances so tolerance matches count as matches
Tolerance match share How much you are choosing not to look at Reporting only the combined match rate
Break age distribution Whether work is actually finished Closing old items into a suspense account
Value at risk in open items The size of the exposure, not the count Reporting item counts instead of amounts

Swipe the table sideways to read every column.

The gaming column is not cynicism. Each of these is a natural response to being measured on the wrong number.

The data quality problem you will find in week two

Every reconciliation automation project discovers the same thing shortly after the first real files are loaded, and it is never the thing in the business case. The sources do not agree about identity. The same counterparty is spelled three ways across two systems, a reference is truncated at a different length by each one, and a date field that everybody assumed was the value date turns out to be the posting date in one of them.

This is not a reason to stop and it is not a reason to launch a data quality programme first. It is the reason normalization rules exist, and the discipline that keeps it manageable is to write those rules explicitly, version them, and never let them become invisible cleanup buried inside the matcher. A normalization rule that is written down can be reviewed when a match looks wrong. Cleanup that happens implicitly cannot, and it is the single most common reason a reconciliation nobody can explain gradually stops being trusted.

Who owns it after the project ends

Automation projects are staffed as projects and then handed to an operations team that was not asked whether it wanted them. When the handover includes the ability to change a tolerance, add a normalization rule and adjust a routing target, the team owns the control and improves it. When those changes require a ticket to a technical group, the team owns the consequences without owning the mechanism, and the usual outcome is a growing set of manual workarounds sitting alongside an automation nobody adjusts. The question worth settling before the build rather than after it is simply which of those two arrangements is being created.

Report exact and tolerance matches separately, always. A combined match rate of ninety eight percent can describe an excellent reconciliation or a loose one, and the split is the only thing that distinguishes them.

Suspense accounts are where automation goes to die

Every bank has an account where unresolved items go to stop being visible. It is usually justified as temporary. It usually is not. A reconciliation programme that improves match rates while a suspense balance grows has not improved anything, it has moved the problem into a place with no owner and no age.

The fix is unglamorous and effective. Give every item posted to suspense an owner and an age at the moment it is posted, require a reason code from a short list, and report the balance by age and by reason rather than as a single figure. Items that were genuinely temporary clear. Items that were being hidden become visible, which is uncomfortable exactly once.

The parallel run, and how to end it

Running the new reconciliation alongside the old process is the right way to build confidence, and it becomes a trap if nobody defines the exit. A parallel run without exit criteria runs forever, because there is always one more month that would be reassuring.

  1. 01Agree the exit criteria before the parallel run starts, in writing, with the person who owns the control.
  2. 02Compare break populations rather than match rates. Two processes can agree on the total and disagree on which items are open.
  3. 03Investigate every item found by one process and not the other. These are the findings that matter, and there are usually fewer than ten.
  4. 04Set a fixed number of periods, typically two or three closes, and stop on schedule unless a criterion failed.
  5. 05Retire the old process properly, including the spreadsheet, because a spreadsheet that still exists will still be used.

The people part, which decides the outcome

The technical work in a reconciliation automation is rarely the hard part. The hard part is that a tolerance is a decision somebody has to own, and that ownership is often unclear until the question is asked directly. The person who approves a value date window is accepting a class of difference on behalf of the institution, and they should know that is what they are doing.

The second people problem is quieter. An analyst who has worked a reconciliation for years carries knowledge that exists nowhere else: which correspondent posts late, which reference format changed last year, which counterparty always deducts a fee. Automation that does not capture that knowledge as configuration loses it, and the loss shows up six months later as a break population nobody can explain. The most productive week of a reconciliation project is usually the one spent writing down what the experienced analyst already knows.

Common failure modes, and what they look like

  • Automating the wrong account first. Symptom: the pilot succeeded and nothing changed. Cause: the easy account was never the cost.
  • Tolerances set to make numbers look good. Symptom: high match rate, growing suspense balance. Cause: nobody separated exact from tolerance matches.
  • Classification taxonomy too long. Symptom: half the breaks are classified as other. Cause: twenty categories nobody can apply consistently.
  • Rules owned by the vendor. Symptom: a change request for a value date window. Cause: the tool was bought without asking who edits a rule.
  • Evidence assembled at quarter end. Symptom: a week of work every quarter. Cause: the record is a by-product of the work rather than the work itself.

What good looks like after six months

  • The exact match rate is high and stable, and the tolerance band is small and understood.
  • The break population is worked to zero on a rhythm, and aged items are exceptions rather than a category.
  • Rule changes happen in the interface, with approvals, and are visible in a change log.
  • The month end has nothing to discover, because the daily control found it already.
  • The evidence pack is a download that takes minutes.

Build, buy, or extend what you have

The honest answer depends on one question: how many sources, and how often do they change. A single stable source pair with a fixed format can be reconciled adequately by a well built internal process, and many banks do exactly that for years. The costs appear when the number of sources grows, when formats change, and when the evidence requirement becomes a quarterly project. At that point the recurring cost is not the matching, it is maintaining parsers, keeping rule changes controlled and reassembling history, and those are the costs a product is actually amortising.

What the first ninety days should produce

One account, both sides arriving on a schedule, tolerances written down and approved by a named person, breaks classified into a short vocabulary with owners and ages, approvals enforced in the system, and one evidence export produced end to end for a closed period. That is a complete control on one account, and it is worth far more than a partial deployment across ten. The second account then takes days rather than months, because the arguments have already been had.

You can see steps three and four running on sample data in the Reconciliation Break Resolver: move a tolerance, watch the break population change, then look at how each break is classified and routed. The product pages are bank reconciliation software and automated reconciliation software.

Get started

Put your first reconciliation on rails

Create an account, and we will email you how onboarding works and what a first source connection looks like. The Reconciliation Break Resolver is open to try right now, on sample data, without an account.

Run the demo

No card required to create an account. Sample data only in the demo. Bankautomation is operations software, not a regulated service.