Public proof registry
The banks we've proven — including the ones we failed
A "supported banks" list is difficult for a buyer to audit. This page takes a narrower approach: it is a registry of tests actually run — 64 real statements from 48 banks across 9 countries, each one from a citable public source (court exhibits, regulator filings, charity accounts, the banks' own published specimens). And it includes the documents we couldn't certify, with the reason. Publishing the failures makes the successful rows more useful.
"Proven" means one thing here: opening balance + every transaction = closing balance, checked against the numbers the bank printed — row by row where the statement prints a running balance. Not a marketing percentage: arithmetic on that specific document. When the arithmetic doesn't close, we say so and don't certify. How the check works →
One reading note, so the sums add up for you too: the 64 / 48 / 9 in the headline count the fixed measurement corpus — the suite we re-run before every release. The registry below also shows documents tested beyond that corpus (banks' own published specimens, newer additions, extra European layouts), so counting its rows gives you a larger number. Everything listed was actually run; the headline counts only what the suite measures release over release.
Before you scan for your bank: it's almost the wrong question
We measured it: on a bank we had already seen, the engine certifies about 75% of documents on first contact. On a bank it has never seen: 72%. The entire advantage of "supported" is three points — because the engine reads documents, not bank templates. So the honest answer to "does it work with my bank?" doesn't come from this list. It comes from your statement: drop it on the app and the free preflight tells you — before you pay anything, before we spend anything — how many pages it has, how many separate statements the PDF really contains, the currency, the sign convention, and whether it prints its own transaction counts. No account, no limit, nothing stored.
United States — 16 institutions tested, plus the FDIC teaching sample
| Bank | Docs | Outcome | What the registry says |
|---|---|---|---|
| Citibank | 2 | ✓ 2/2 | one runs to 703 transactions, proven row-level in 2 sections |
| Capital One | 2 | ✓ 2/2 | one prints its own transaction count — 79 declared, 79 read, and the two match |
| TD Bank | 3 | ✓ 3/3 | |
| M&T Bank | 1 | ✓ | net closes; the printed gross totals don't — flagged instead of hidden |
| Regions | 1 | ✓ | a scan — read by vision, not by text layer |
| BMO (US) | 1 | ✓ | |
| First National Bank North | 1 | ✓ | a local Minnesota bank no template library would bother with |
| U.S. Bank | 2 | ± 1/2 | the other is declined with a named diagnosis: a skipped transaction, amount stated |
| Truist | 2 | ± 1/2 | the other failure was ours, not the document's — found in review, fixed since |
| Fifth Third | 2 | ± 1/2 | the other is a court bundle of several statements in one PDF; split by segment it yields 263 transactions where whole-file reading saw 122 |
| Chase | 3 | ✓ 3/3 | the official sample certifies; the multi-account bundle — long this engine's hardest failure — now reads as two statements and certifies per statement (re-run 19 Aug, on the open corpus) |
| Bank of America | 2 | ± | a 76-transaction federal-court exhibit certifies at aggregate level (re-run 19 Aug); the other is the bank's own explainer, which prints no period balances — refusing to certify it was the correct answer |
| Wells Fargo | 2 | ✓ 2/2 | a court exhibit proven row-level, and a district statement with no transactions, certified as exactly that: opening equals closing (re-run 19 Aug) |
| PNC | 1 | ✗ | a 49-page scan; the arithmetic missed by 3,885,143.51, so no certificate was issued |
| Huntington | 1 | ✗ | a scan where two independent readings disagree — we refuse rather than pick one |
| KeyBank | 1 | ✗ | the refusal is itself the proof: the PDF prints "page 1 of 5" and contains 2 pages, and the check reports 25 transactions read of 229 declared |
| FDIC (teaching sample) | 1 | ✓ |
Of the 25 largest US banks by deposits, 15 are covered. The ten that aren't — including Navy Federal, the largest credit union in the world — are missing because no public specimen exists, not because we skipped them: for most neobanks and credit unions, nearly every "sample statement" findable online is a forgery-generator product, and we don't test on those.
United Kingdom — 18 institutions, the best-covered market
Certified: Barclays · HSBC · Lloyds · NatWest (×2) · RBS · Santander UK · Nationwide · Metro Bank (2 of 3) · Co-operative · Virgin Money · Triodos · Unity Trust · Monzo · Revolut · Wise · Starling. The Monzo statement runs to 581 transactions listed newest-first — the engine detects the reversed order and chains the balances backwards. Starling — 365 transactions, proven row-level in two sections — was refused by an earlier revision of the engine; the 19 Aug re-run on the open corpus certifies it, and we keep that history here rather than pretend it was always green.
Not certified: TSB · CAF Bank. The reason UK coverage is deep is methodological: UK charity regulators publish annual accounts with real statements attached, so the corpus there is built from genuinely public documents.
Canada, Australia, India, New Zealand
| Country | Institutions tested | Certified | Notes |
|---|---|---|---|
| 🇨🇦 Canada | RBC, CIBC, TD, BMO | 2 of 4 | |
| 🇦🇺 Australia | ANZ, BankSA, CBA, NAB, Westpac | 2 of 5 | the NAB document is a federal-court bundle of seven statements; split by segment, all seven certify row-level |
| 🇮🇳 India | HDFC (×2), ICICI, SBI | 3 of 4 docs | Dr/Cr sign convention |
| 🇳🇿 New Zealand | ANZ NZ | 1 of 2 docs |
Continental Europe — smaller, and we say so
| Country | What's proven |
|---|---|
| 🇩🇪 Germany | ✓ Postbank and Sparkasse certified — the banks' own published specimen statements, discrepancy 0.00, every amount found printed on the page. Soll/Haben convention proven on real bank documents, not on fixtures we wrote ourselves |
| 🇮🇹 Italy | Intesa Sanpaolo (2 docs), BancoPosta — including the broken-font Intesa case that started this product: a parser read 166.98 where the page printed 4,166.98, and only the balance check caught it |
| 🇫🇷 France | Société Générale — the Débit/Crédit layout reads at 100%, and the document is refused because the bank's specimen prints X XXX,XX placeholders instead of balances. Refusing a document with no real numbers is the check working |
| 🇪🇸 Spain | CaixaBank, via a municipal audit filing |
| 🇦🇹 🇳🇱 Austria, Netherlands | ± partial — a one-page teaching sheet and a scan without an opening balance |
Continental Europe is the gap in this registry, and we'd rather publish the gap than pad the list. The engine reads documents, not banks — the free check tells you in seconds whether yours reads.
Why we publish the failures
On the corpus above — picked because it is hard: scans, court bundles, multi-account files, broken fonts — the arithmetic closed on 47 of 64 statements. That number sits next to competitors' "99.9%" and looks worse, so it deserves the honest frame: it isn't the same measurement. A field-accuracy percentage is computed on the documents that worked. 47/64 is the fraction of a deliberately difficult corpus where every number was proven against the balances the bank printed — a stricter question, published here with the failures attached.
The refusals are part of the product. A clean export alone does not tell its recipient what was proved; the whole point of the balance check is that sometimes the answer is no — and on documents like the KeyBank statement above, the "no" comes with the proof (pages missing, counts short) that turns a failed conversion into a finding.
Rows marked "re-run 19 Aug" reflect the latest engine pass on the open benchmark corpus — the registry updates when the measurements do, in both directions.
Your bank isn't in the list?
Then you're in the majority — and it costs three points, not the product. Drop your statement on the app: the free preflight answers on your document, in seconds, without an account and without storing anything.