Home / Accuracy

Bank Statement Parsing Accuracy: How We Test and Verify

Updated 4 September 2026 · Methods and results

Most converters claim a percentage. We publish a method instead: every transaction is balance-chain verified against your statement, totals are reconciled, and mismatches are flagged red before you export. Below is the test corpus behind that - including real ANZ statements from public records, 9 of 9 verified end to end.

The honest version: no tool can promise 100% on a statement it has never seen, so we don't. What we can promise is that you will see verification on your own file - not take our word for it. In our tested corpus (five Australian bank formats plus real ANZ statements), every transaction parsed correctly and every balance chain passed.

1. The verification method (runs on every file)

Balance-chain verification

Australian statements carry a running balance on every row. After parsing we check each row: previous balance + amount = this balance. If every row reconciles, the dates, amounts and debit/credit directions are all consistent with the statement itself. If a row doesn't reconcile, it is highlighted in red before you can export - you see exactly what to check, instead of discovering an error later in Xero.

Totals reconciliation

We also compare parsed credits and debits with the statement's own printed totals (e.g. "Total credits: $3,004.85"). A confirmed match is shown on screen; a mismatch is flagged.

An editable table, not a black box

Every parsed row is visible and editable before export. If anything looks wrong, you fix it there - nothing is silently written to the CSV.

2. The test corpus

Test setWhat it isResult
Five Australian bank formats CommBank, Westpac, ANZ, NAB and ING statement layouts (24 transactions), run through the full pipeline: upload → pdf.js text extraction → column reconstruction → parse → verify. All transactions correct. Balance chains pass on every statement (CommBank 6/6, Westpac 4/4, ANZ 4/4, NAB 5/5, ING 5/5).
Real ANZ statements (public records) A real multi-statement ANZ bound PDF from a public government archive (South Australian Electoral Commission records) - not a synthetic sample. Includes ANZ's "15 JUL" month-name dates without a year on each row. 9 of 9 statements parsed correctly; balance chains verified end to end across the bound document.
Independent open benchmark file An AU-format file from the open Bankstatemently parsing benchmark (MIT-licensed, synthetic data, no real customer information), parsed through the same product pipeline. 12/12 rows exact, balance chain 12/12.
Negative tests (documented, on purpose) Foreign statement formats (US, Netherlands, Hong Kong, Canada) and mixed report-plus-statement documents were also tested - as failure cases to characterise the tool's boundaries. Foreign formats may under-parse but fail safe: they flag rather than export wrong data. Mixed documents are detected and the user is warned. This tool targets Australian formats, by design.

What the real-ANZ tests exposed (and we fixed): ANZ writes month names without a year ("15 JUL"), which the parser now resolves against the statement year; "blank" placeholder cells are treated as empty; and address lines that look like dates are rejected because their "month" isn't a real month name. These are the kind of real-format details synthetic samples never reveal.

3. What we don't claim

4. Verify it yourself

  1. Run the in-browser benchmark: open the accuracy test page and run the built-in sample set - it shows exactly how verification behaves.
  2. Use one of your own statements in the converter. Watch for the green "balance chain verified" summary - or the red flags if something needs attention.
  3. If it ever fails on your file: the fair-deal guarantee refunds you within 7 days (see Trust & Accuracy).

See the verification on your own statement

Free to start - no account, no credit card, nothing stored.

Open the converter →
100% local processing · Balance-chain verified · Fair-deal guarantee

FAQ

Is StatementConvert AU really 100% accurate?

No tool can honestly promise 100% on statements it has never seen, and we don't publish a slogan. Instead, every file is verified as it is parsed: each transaction is checked against the running balance, and mismatches are flagged red before export. In our tested corpus - five Australian bank formats and real ANZ statements from public records - every transaction parsed correctly and passed balance-chain verification.

Do you test against real Australian bank statements?

Yes. Our corpus includes a real multi-statement ANZ bound PDF from a public government archive (South Australian Electoral Commission records): 9 of 9 statements parsed correctly with balance chains verified end to end, including ANZ's month-name dates without a year on each row.

What happens if my statement doesn't parse cleanly?

You are told, not silently misled. Rows that don't reconcile against the running balance are highlighted red, and totals are compared with the statement's own figures. If a statement can't be parsed cleanly and you can't fix it in the editable table, the fair-deal guarantee refunds you within 7 days.

Does the converter work with scanned (image) statements?

No. Image-based PDFs have no text layer, so the local parser can't read them yet - the app says so clearly and flags it. Our focus is the standard electronic PDF statements Australian banks provide.

Why don't you claim 99.9% accuracy like other converters?

Because a percentage claim about files we've never seen tells you nothing about your file. What matters is verification you can see: balance-chain checks, totals reconciliation and red flags on your own statement, before you export.

Related pages