Automated payment reconciliation: how to cut 20 hours/month of manual matching
The problem: the money arrives, but nobody knows which invoice it belongs to
Any company that issues more than 200 invoices a month knows the ritual. The bank statement comes in, someone in accounting opens it next to the list of unpaid invoices and starts hunting: "this €870 payment from Alfa Ltd... which invoice is it for?". Sometimes it's easy. Often it isn't: the client paid two invoices in one transfer, deducted a discount, got the amount wrong by €4, or wrote "partial payment" in the reference with no document number at all.
That's how the lost hours pile up. And the real cost isn't only the time.
Typical numbers for a mid-sized B2B company with ~400 invoices/month:
- 15-25 hours/month spent matching statements to invoices by hand
- 3-6% of incoming payments stay "unidentified" at month-end and roll forward
- 5-10 days average delay before an invoice is marked as paid in the system
- credit decisions made on stale data: you ship goods to a client who has actually already paid
At an internal cost of ~€25/hour for an experienced accountant, the time alone is €5,000-7,000/year. Add the bad commercial-credit decisions and that figure easily doubles.
Why it's harder than it looks
Reconciliation isn't a simple lookup by amount. If it were, every ERP would have solved it years ago. The difficulty is that an incoming payment almost never maps 1-to-1 to an invoice:
- Aggregated payments — a client settles 7 invoices with a single €6,300 transfer
- Partial payments — you get 50% now, the rest in 30 days
- Deductions — the client subtracts a discount, a return or a penalty, without explaining
- Useless references — the memo says "your invoice" or just the company name
- Names that don't match — the bank shows "ALFA DISTRIB LTD", the ERP says "Alfa Distribution Limited"
- Currencies and fees — for exports, the amount received differs from the invoiced one because of bank fees and FX rate
Each of these breaks the naive rule "if amount X = amount Y, then match". That's why reconciliation has stayed manual in so many companies, even where the rest of accounting is fully digital.
How an automated reconciliation engine works
A good reconciliation engine isn't a single algorithm — it's a cascade of levels, from the most certain to the most ambiguous:
1. Exact match
Identical amount + a reference containing a valid invoice number. This easily captures 70-80% of transactions and closes them automatically, with no human touch.
2. Partial reference match
You extract from the memo field any sequence that looks like a document number (regex on your own invoicing patterns) and validate it against open invoices.
3. Amount-combination match
The algorithm looks for which subset of the client's open invoices sums exactly to the received amount — the classic "knapsack" problem. That's how you resolve aggregated payments with no reference.
4. Fuzzy match
For company names you use text similarity and the tax ID, not the exact wording. "ALFA DISTRIB LTD" and "Alfa Distribution Limited" link through the registration number.
5. Configured tolerances
You set thresholds: a difference under 1% or under €10 can be auto-closed and recorded as a fee/rounding difference, with full logging.
Anything that matches at no level lands in an exceptions queue — and that's the key. The system doesn't pretend to solve everything. It handles the repetitive part and shows the human only the genuine cases, with ranked suggestions: "most likely these 3 invoices, 82% confidence".
Case study: a distributor with 600 invoices/month
A client we worked with at NEXVA SYSTEM had exactly the classic picture:
- ~600 invoices issued monthly, 4 bank accounts across 2 banks
- 2 people spending a combined ~30 hours/month on reconciliation
- 4.8% of payments unidentified at month-end close
- the aging report constantly lagging, skewing credit decisions
What we built:
- A pipeline that automatically pulls MT940/CAMT.053 statements from both banks, daily
- The 5-level reconciliation engine above, run on every import
- Client normalization by tax ID, not by name
- An exceptions queue with ranked suggestions and one-click confirmation
- Automatic write-back of confirmed payments into the ERP
Results after 4 months:
- Automatic match rate: 83% of transactions, no human touch
- Reconciliation time: from ~30 hours/month → 6 hours/month (exceptions only)
- Unidentified payments at close: from 4.8% → 0.9%
- Invoices marked as paid on average the same day, not a week later
- ROI: the investment paid back in 7 months
The effect nobody talks about: sales gained an accurate, daily view of who had paid and who hadn't. That stopped needless holds on good customers and tightened the screws faster on late payers.
Where it fails (and what not to promise)
Be realistic when scoping a project like this:
- Poor source data. If half your invoices have the wrong tax ID in the ERP, no algorithm compensates. Cleaning master data is a precondition, not an option.
- Unstructured statements. Some smaller banks still hand you only messy PDF/CSV. There you need an extra parsing layer, which complicates the project.
- Intrinsically ambiguous cases. A payment with no reference, no matchable amount, from a client with 20 open invoices — that stays for a human. And that's fine.
The right target is not 100% automatic. It's 80-85% automatic, the rest assisted, with a complete audit trail for both the accountant and the auditor.
How to start without a huge project
You don't need a new platform. Concrete steps:
1. Measure the baseline — how many hours/month and what percentage of payments are unidentified today.
2. Check your statement source — do you get MT940/CAMT.053 from the bank? Most major banks offer them.
3. Clean the master data — a correct, unique tax ID per client in the ERP. Half your accuracy is won here.
4. Start with one account and one level — just the exact match on a single account. You'll already close most transactions and see value fast.
5. Add levels gradually — amount combinations and fuzzy matching once you trust the simple base.
Automated reconciliation is one of the clearest-ROI projects in finance: the pain is measurable, the data already exists, and the result shows up in the first month.
Want us to evaluate together how many hours you lose on reconciliation today and what share could be automated in your case? Book a free consultation.
Want to discuss automating your processes?
Book a consultation