Skip to main content
Bankflow

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 pages
PDFSelect statementsPDF, CSV, XLSX or JSON · max 50 MB each
3 files selectedReview before importing.Add files
statement_oct.pdf1.2 MB · 8 pages
amex_q3_2025.pdf3.4 MB · 12 pages
scanned_047.pdf6.1 MB · locked

The 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

  1. 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.

    The statement library, with the active jobs counter called out: imports still running are counted there.
    Statements land in the library with their totals, so a missing month is visible at a glance.
  2. 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.

  3. 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 statement library, with the status column called out, where a statement worth a second look is flagged.
    The status column flags a statement to check before anything is reconciled.
  4. 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 transactions ledger, with the source column called out: every row keeps the statement it came from.
    The source column names the statement each row was read from.
  5. 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.

Start reconciling from a statement that ties.

Upload a statement, watch every balance get checked, and export only once it adds up.