Bank reconciliation: Reconcile against rows that already add up.
Reconciliation goes wrong upstream, when the transactions typed or imported from a statement do not match the statement. Bankflow reads each statement, checks every running balance against the rows, and reconciles the printed opening and closing figures before a single line reaches your ledger.
50 free page credits · No card · Cancel anytime
- Running balances checked
- Source page beside every row
- Exceptions, not everything
Add statements
50 free pagesThe ledger is out, and nobody knows which row.
A reconciliation that does not tie is rarely a bank error. It is a transaction keyed twice, a debit entered as a credit, or a page of the statement that never made it into the import. Found at month-end, each one means reading the statement and the ledger side by side, line by line, until the difference turns up. The cheaper point to catch it is the moment the statement is read: if the rows extracted from a statement do not walk from its opening balance to its closing balance, the statement is not finished, and it should not be posted.
How it works
Where each difference gets caught
- 01
Every row is checked against the one before
As a statement is read, each row's balance is tested against the previous balance plus or minus the transaction. Debit and credit columns swapped by the layout are caught and corrected when the balances prove it.

Statements land in the library with their totals, so a missing month is visible at a glance. - 02
The statement has to tie end to end
The opening and closing balances printed on the statement are compared with what the extracted rows add up to. A statement that does not tie is not quietly accepted.
- 03
Only the lines that need you are flagged
A statement that does not reconcile carries an issue badge, and small breaks consistent with an unstated fee are marked as such rather than as a failure, so the review goes straight to the rows in question.

The status column flags a statement to check before anything is reconciled. - 04
Check a row against the page it came from
Open the statement workspace and the parsed rows sit beside the source PDF, with the row under review boxed in both. Correct it there, against the page it was read from.

The source column names the statement each row was read from. - 05
Post a file you know is whole
Export to QuickBooks as QBO, to Xero or Sage as OFX, or to CSV and Excel, knowing the transactions in it already walk from the opening balance to the closing one.
Controls that run before the ledger does
Running balance validation
Each row is tested against the running balance, so an extraction error shows up at the row it happened, not as a total that is off.
Opening and closing tie-out
The statement's own printed balances are the target. Extracted rows either reach them or the statement is flagged.
Debit and credit correction
Layouts that confuse which column is which are corrected when the balance arithmetic shows the swap, not guessed at from the header.
Soft warnings for small breaks
A small gap that looks like an unstated fee is labelled as a possible fee, so it is looked at rather than mistaken for a failed parse.
Source beside the row
Every extracted transaction can be checked against the region of the page it was read from, which is what makes a reconciliation defensible.
Duplicates stopped at the door
The same PDF uploaded twice is recognised by its file hash and not processed again, so a statement cannot be counted twice by accident.
FAQ
Common questions
Does Bankflow reconcile against my accounting software?
It reconciles each statement against itself: rows against running balances, and the whole against the printed opening and closing figures. What it hands your accounting software is a file already known to tie, which is what makes the reconciliation there quick.
What happens when a statement does not balance?
It is flagged, and the rows responsible are marked for review. You can compare them against the source page and correct them there. Nothing is presented as reconciled that is not.
What about statements with no running balance column?
Some layouts print a balance only per day or only at the end. Those are validated against the balances the statement does print, such as net daily totals for daily-ending-balance layouts, and against the opening and closing figures.
Can it catch a missing page?
A missing page shows up as a statement whose rows do not reach its closing balance, which is exactly the check that runs on every statement.
Which formats can I export the reconciled transactions to?
Excel, CSV, JSON, OFX, QBO, QFX, QIF, IIF, and layouts for Xero, Sage, MYOB, and NetSuite, scoped to whichever account, date range, or filter you are working in.
How can I test it on a statement that gave me trouble?
Start with 50 free page credits, no card required, and upload the statement that would not reconcile last month.
Keep exploring
Tax Preparation
A year of statements, tagged and totalled for the return.
Cash Flow Forecasting
Runway, monthly P&L, and what-if scenarios from real history.
Accounts Payable
Invoices and receipts read into QuickBooks and Xero bills.
Historical Data Import
Backfill the years your bank feed never reached.
Bank Statement Converter
What a converter has to get right, and what the file looks like when it does.
Start reconciling from a statement that ties.
Upload a statement, watch every balance get checked, and export only once it adds up.