Bank reconciliation automation, step by step and without the sales pitch
Published 29 July 2026
10 min read
bank reconciliation automation
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.
This console matches the first rows a side. It left out
statement
and
ledger
.
Nothing in the rows left out is counted below.
To run a full file,
.
8 exact ·
1 under tolerance ·
24 rows
Break
Amount
Difference and suggested action
Classification
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
Posted in the ledger, not on the statement
Trace the posting to its instruction, repair the reference and re-present it, or reverse it if the payment was returned.
MISSING REFERENCE
→ Payments Ops
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
·
·
Audit note:
→
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
Counterparty
2026-09-02
REF//NONREF/2026090301
1,284,500.00
ACME MANUFACTURING
2026-09-02
REF//INV/88231
96,400.00
NORDVEST SHIPPING
2026-09-03
REF//TRF/554120
452,180.25
HALCYON TRADING
2026-09-03
REF//FX/SPOT/7741
218,940.60
INTERBANK FX DESK
2026-09-01
REF//SEPA/33421
74,220.00
LINDQVIST AS
2026-09-03
REF//CHG/Q3FEES
3,410.00
CORRESPONDENT CHARGES
2026-09-03
REF//TRF/554121
61,880.00
HALCYON TRADING
2026-09-02
REF//PAY/90012
187,650.00
KESTREL LOGISTICS
2026-09-02
REF//INV/88245
242,015.00
BRIGHTLINE FOODS
2026-09-03
REF//TRF/554133
18,905.50
MERIDIAN PARTS
2026-09-01
REF//PAY/90044
505,300.00
VANTAGE ENERGY
2026-09-03
REF//INV/88260
132,640.75
ORION TEXTILES
Internal nostro ledger
Core banking export
Value date
Reference
Amount
Counterparty
2026-09-02
NONREF/2026090301
1,284,500.00
ACME MANUFACTURING
2026-09-02
INV/88231
96,400.00
NORDVEST SHIPPING
2026-09-03
TRF/554120
452,180.25
HALCYON TRADING
2026-09-03
FX/SPOT/7741
219,105.40
INTERBANK FX DESK
2026-08-31
SEPA/33421
74,220.00
LINDQVIST AS
2026-09-02
PAY/90012
187,650.00
KESTREL LOGISTICS
2026-09-03
TRF/554121
123,760.00
HALCYON TRADING
2026-08-30
PAY/90012/R
187,650.00
KESTREL LOGISTICS
2026-09-02
INV/88245
242,015.00
BRIGHTLINE FOODS
2026-09-03
TRF/554133
18,905.50
MERIDIAN PARTS
2026-09-01
PAY/90044
505,300.00
VANTAGE ENERGY
2026-09-03
INV/88260
132,640.75
ORION TEXTILES
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 rest ().
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.
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.
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.
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?
Tolerance
Absorbs
Could hide
Reasonable 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.
Number
What it tells you
How 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.
01Agree the exit criteria before the parallel run starts, in writing, with the person who owns the control.
02Compare break populations rather than match rates. Two processes can agree on the total and disagree on which items are open.
03Investigate every item found by one process and not the other. These are the findings that matter, and there are usually fewer than ten.
04Set a fixed number of periods, typically two or three closes, and stop on schedule unless a criterion failed.
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.
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.
Creating an account with the button above needs no card; paid plans are paid on our payment processor's secure page. Sample data only in the demo. BankAutomation is operations software, not a regulated service.