Automated Invoice Reconciliation
Stop ticking invoices off against your bank statement by hand. Upload both, and every invoice comes back paid, unpaid, part-paid, duplicated or paid at the wrong amount — with the bank line that decided it and the reasons why.
Reconcile your own files now
Add your invoices on one side and the bank statements they should have been paid from on the other. Every statement is balance-checked first, then each invoice comes back paid, unpaid, partly paid, overpaid, duplicated or flagged for a look — with the transaction that decided it.
Invoices
0 filesBank statements / transactions
0 filesAn invoice, a statement, a match — in real time
No mock-up and no edit: one invoice and the bank statement that paid it, matched, exported to Excel, and sent to an accounting system.
The statement checks its own arithmetic before a single invoice is matched.
Amount, date and the invoice number in the payment reference — every match shows why.
Excel export, then the same approved record sent into an accounting system.
Recorded on a fictional invoice and bank statement — no customer data appears in this video.
What is invoice reconciliation?
Invoice reconciliation is checking each invoice against your bank records to confirm whether it was paid, in full, once. For a supplier invoice it answers "did we pay this?"; for a sales invoice, "did the customer pay us?". Done by hand it means two lists side by side — invoices on one, bank lines on the other — and ticking off rows until whatever is left over is the problem.
The work itself is simple. What makes it slow is that the two lists never describe the same payment the same way. The invoice says "Northstar Office Supplies Ltd, INV-2041, 1,240.00"; the bank line says "NORTHSTAR OFF SUPPLIES 2041", five days later, sometimes for 1,239.50 because a fee was taken off. Some invoices are paid in two parts, some payments clear three invoices at once, and some invoices were never paid at all.
Invoice reconciliation is not the same as bank reconciliation, although the two are often confused. Bank reconciliation compares your cash book with the bank statement to explain why the two balances differ at month end — uncleared cheques, deposits in transit, bank charges nobody booked. Invoice reconciliation starts from the invoices and asks, one by one, whether each was settled. You need both: bank reconciliation proves the cash figure is right, invoice reconciliation proves each debt is where you think it is. The bank reconciliation page covers the first; this one covers the second.
FlowParse does the matching for you. Upload invoices (PDF, scans or photos) and a bank statement; both are read into structured data, the statement is checked against its own balances, and every invoice comes back with a status, the bank line that decided it and the reasons it was chosen.
How invoice matching works: the score
Every possible pair of invoice and bank line gets a score out of 100 from four signals. The weights follow one rule: an amount is not an identification. Rent, retainers and round figures repeat constantly, so an exact amount alone is never enough to call an invoice paid.
| Signal | Points | What it means |
|---|---|---|
| Exact amount | 60 | Within 0.05% of the invoice, at least 0.02 and at most 5.00 |
| Close amount | 30 | Within 2% — a fee or rounding taken off |
| Invoice number in the bank reference | 35 | The strongest proof a payment belongs to this invoice |
| Supplier name | up to 25 | 25 for a full match; less for a similar name, by how similar it is |
| Date window | +10 / −10 | +10 when paid 5 days before to 60 days after the invoice date; −10 when more than 90 days away |
What turns a score into a verdict is identification. A pair with the invoice number in the reference, or a confidently matching supplier name, is stated as a match. A pair that fits — usually on amount — but that nothing identifies, and that scores 45 or more, is shown as a possible match: a question for you, not an answer. Below that the invoice is reported as unpaid, because a weak guess presented as a match is worse than an honest gap. A reference only counts from four characters up; shorter numbers match by accident too often.
The order the passes run in
Matching is done in stages, and each stage only sees what the stage before it could not settle. Each one claims the bank lines it uses, so a payment is never counted against two invoices.
- Stage 0 — the statement is checked against itself. Opening balance + credits − debits must equal the closing balance, and where the statement prints a running balance, every row must follow from the one before. A statement that does not add up would make every verdict after it unreliable, so this comes first.
- Stage A — exact. Exact amount plus an identifier: the invoice number in the reference, or the supplier's name.
- Stage B — similar. Normalised names and references, scored by similarity — "NORTHSTAR OFF SUPPLIES" for "Northstar Office Supplies".
- Stage C — combinations. Up to five payments that together pay one invoice, or one payment that clears up to five invoices.
- Stage D — what is left is described, not guessed. Unpaid, no match, or possible match with the reasons.
- Stage E — a review of the leftovers only. The handful of rows the rules could not settle can get an AI suggestion, which you accept or reject. Anything arithmetic could prove is never decided by a model.
Every status, and what to do about it
Each invoice ends with exactly one status. The status decides what you do next, so each one means one specific thing.
| Status | What it means | What to do |
|---|---|---|
| Paid | One payment for the invoice amount, identified by reference or supplier | Nothing — ready to export |
| Partial payment | Identified, but short by more than 25.00 or by 10% or more | Chase the balance |
| Overpaid | Identified, but over by more than 25.00 or by 10% or more | Refund, or keep as credit |
| Amount mismatch | A small difference — under 25.00 and under 10% | Usually a bank fee or a short-paid line; book the difference |
| Date mismatch | Right amount and payer, but more than 90 days from the invoice date | Confirm it is not an older or newer invoice with the same amount |
| Duplicate payment | Two payments of the full amount for one invoice | Ask for the second payment back |
| Duplicate invoice | Same number, supplier and amount uploaded twice | Remove the copy — a document problem, not a payment one |
| Possible match | Something fits, usually the amount, but nothing identifies it as this invoice's payment | Accept or reject it in the review |
| Unpaid | Nothing on the statement fits, and the invoice is inside the statement period | Chase it |
| No match | The invoice date is outside the period the statements cover | Upload the statement for that period |
| Manually matched | You decided it | Never re-decided by the engine afterwards |
Bank lines that match no invoice are listed separately. Those are payments with no invoice behind them: a missing purchase invoice, a direct debit nobody recorded, or money received for something you never billed.
Why "unpaid" is the status to be careful with
The most expensive mistake in invoice reconciliation is telling someone to chase a customer who already paid. It happens in one of two ways, and both are handled.
The statement does not cover the invoice. An invoice dated after the last bank line, or well before the first, was never in scope — the payment may sit on a statement nobody uploaded. It is reported as outside the period the statements cover, not as unpaid.
The statement was read wrong. If a row's amount was misread, the payment that settled the invoice looks like it does not exist. That is why the statement is checked against its own balances before any matching starts, and why a statement that fails that check is flagged at the top of the report.
A worked example
A month of supplier invoices against one bank statement:
| Invoice | Amount | Bank line | Result |
|---|---|---|---|
| INV-2041 Northstar Office Supplies | 1,240.00 | NORTHSTAR OFF SUPPLIES INV-2041 −1,240.00 | Paid — amount 60 + reference 35 + supplier + date |
| 0417 Brightline Cleaning | 380.00 | BRIGHTLINE CLEANING 0417 −190.00 and −190.00 | Paid in two parts (combination) |
| 7731 Harbour Logistics | 920.00 | HARBOUR LOGISTICS 7731 −916.50 | Amount mismatch — 3.50 short, a fee |
| 5530 Metro Telecom | 64.99 | METRO TELECOM 5530 −64.99 twice | Duplicate payment |
| B-12 Studio Rent | 1,500.00 | none | Unpaid |
Without the reference and the supplier, the 1,240.00 line would be just another payment of that amount. With them, it is proof. The two 190.00 lines only make sense together, which is what the combination stage is for, and the 3.50 difference is small enough to be a fee rather than a part payment.
Why an invoice will not match, and how to fix it
When an invoice stays unmatched although you are sure it was paid, the cause is almost always one of a few ordinary things. Each has a quick fix.
| Cause | What you see | Fix |
|---|---|---|
| The payment is on another statement | Unpaid, or no match outside the period | Upload the statement for the month after the invoice too |
| The bank shows a trading name | Possible match on amount only | Accept it once; the reason is visible in the report |
| One payment for several invoices | Each invoice alone looks unpaid | Found by the combination stage when the invoices add up to the payment |
| Bank charges taken off | Amount mismatch | Book the difference as a bank charge |
| Paid by card or a payment platform | Nothing on the bank statement | Reconcile against the card or platform statement instead |
| Invoice number not in the payment reference | Possible match | Ask payers to quote the number; it is the strongest single signal |
The last row is worth acting on even outside FlowParse. A reference in the payment is worth 35 of the 100 points and turns most possible matches into certain ones — for your own sales invoices, put the invoice number in your payment instructions.
Manual and automated invoice reconciliation compared
Manual reconciliation is fine for a handful of invoices. It breaks down at volume, and not only because of time: the decisions stop being consistent. Automated reconciliation keeps them consistent and leaves you only the rows that need judgement.
| By hand in a spreadsheet | With FlowParse | |
|---|---|---|
| Getting the data in | Typing or copy-pasting from PDFs | Read from the PDFs, scans and photos |
| Checking the statement | Rarely done | Balances checked before matching |
| Matching rule | Whoever is doing it that day | The same scores and thresholds every time |
| Split and combined payments | Found by luck | Up to five parts either way |
| Record of decisions | Highlighted cells | Audit trail with time and change |
| Time for 100 invoices | Hours | The review of the leftovers |
How often to reconcile invoices
Monthly is the usual rhythm: when the bank statement for the month arrives, reconcile that month's invoices against it and carry the open ones forward. A month is short enough that a missing payment is still easy to chase and long enough that most invoices have been paid.
Businesses with many customers paying by transfer often reconcile weekly, because the sooner an unpaid invoice is spotted, the sooner it is chased. At the very least, reconcile before every VAT return and before the year-end close — that is when an invoice booked as paid but never paid costs the most to fix.
Supplier invoices and sales invoices
The same matching works in both directions. For accounts payable, money leaving the account is matched to supplier invoices, and the questions are duplicates and overpayments. For accounts receivable, money arriving is matched to your sales invoices, and the question is who still owes you — see unpaid invoice detection for that side.
If the supplier sends you a statement of account, that is a different reconciliation — their ledger against yours — covered on supplier statement reconciliation.
What you get at the end
The result is a report you can act on and keep: on screen, as an Excel workbook and as a PDF.
- Every invoice with its status, the bank line that decided it, the match score and the reasons.
- A summary — how many paid, unpaid, partial, duplicate and mismatched.
- Unmatched transactions — money that moved with no invoice behind it.
- An audit trail of every decision you made by hand, with the time and what changed. Your decision sits next to the engine's original verdict, never over it.
Only settled invoices — paid, paid with a date mismatch, or matched by hand — go on to the export to accounting software. An invoice still waiting for a decision is never exported as if it were settled.
Getting the documents in
Invoices can be PDFs, scans or phone photos; built-in OCR reads the image ones. Bank statements from any bank work as PDF. Each document is read into structured data first — the same extraction as the invoice parser and bank statement to Excel — so reconciliation always starts from figures that were checked: invoices against their own totals (invoice validation) and statements against their balances.
For a whole quarter or year, upload every statement for the period. Matching across several statements is what makes a payment that landed in the next month findable instead of "unpaid".
