The first open benchmark for measuring bank statement extraction accuracy. 15 synthetic statements, 36 parsing challenges, 12 countries, across 3 difficulty tiers.
One row per tool, aggregated across its scores on our released open-benchmark statements (bsb-001..bsb-005) — the same statements are freely downloadable, so any tool's ranking here is independently reproducible.
Turning a bank statement PDF into clean, accurate transaction data — the leaderboard above.
Can the tool make sense of the corpus — match accounts, products, and transfers across documents?
Score your own tool against the released statements and add it to the leaderboard.
Submission instructions on GitHubGet started in three steps.
curl -O https://bankstatemently.com/benchmark/statements/bsb-001-statement.pdf
your-parser bsb-001-statement.pdf > result.jsonHASH=$(shasum -a 256 bsb-001-statement.pdf | cut -d' ' -f1)
curl -X POST https://api.bankstatemently.com/v1/benchmark/evaluate \
-H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \
-d "{\"contentHash\": \"$HASH\", \"transactions\": $(cat result.json)}"Real-world bank statements contain dozens of formatting quirks that break naive parsers.
Statements omit the year from transaction dates (e.g., "03/15" instead of "03/15/2025"), which makes it impossible to sort or reconcile without guessing.
In 4 statementsStatements only print the date on the first transaction of each day — the rest have blank date cells.
In 1 statementStatements place the plus or minus sign after the amount (e.g., "123.45-" instead of "-123.45").
In 1 statementStatements embed currency symbols (e.g., "$1,234.56") directly in amount cells, which breaks numeric parsing in Excel and most CSV importers.
In 2 statementsStatements sometimes lack clear row or column lines.
In 1 statementStatements use separate Credit and Debit columns in some formats, while others use a single Amount column with signs.
In 10 statementsPage headers and footers contain bank logos, page numbers, and disclaimers that can interfere with transaction extraction.
In 1 statementStatements are often image-based PDFs with no selectable text, so copy-paste and standard PDF extractors return nothing useful.
In 3 statementsbsb-001 (Straits Capital (Singapore)) was reissued on 2026-08-11. Reissued to fix a benchmark-generator reproducibility bug (non-deterministic PDF metadata: creation date, embedded font-subset tags, image object ordering). Printed content and every ground-truth answer are unchanged. Original PDF sha256: 7f96da7316b2b540f2f8ecfc4151cd242a501be3ed84204a15bfbbe3c355531b. Superseded by: 8a5b0e296d5d9ffaccfe6e8d99e0b52f7f60db76db54132c8c9ce6b8cbd52720. Content is unchanged — parses or scores produced against the original PDF remain valid, but were keyed to a superseded hash. Re-key rather than re-parsing.
bsb-002 (Liberty National (United States)) was reissued on 2026-08-11. Reissued to fix a benchmark-generator reproducibility bug (non-deterministic PDF metadata: creation date, embedded font-subset tags, image object ordering). Printed content and every ground-truth answer are unchanged. Original PDF sha256: f9947911a399ff0ccb7e8afde6e3380e3f7a1f61a5809b68022ce0b9ba449b06. Superseded by: 7632b2a50b3ab172e18f03ea110241660c220a4ef738bbfb683eba4cccbbc324. Content is unchanged — parses or scores produced against the original PDF remain valid, but were keyed to a superseded hash. Re-key rather than re-parsing.
bsb-003 (Continental Trust (Netherlands)) was reissued on 2026-08-11. Reissued to fix a benchmark-generator reproducibility bug (non-deterministic PDF metadata: creation date, embedded font-subset tags, image object ordering). Printed content and every ground-truth answer are unchanged. Original PDF sha256: d605ff5e2c803f531c18d295354f135017c56082538f41e53d6c37452604a566. Superseded by: 4bad73296bdbcf7142b62c8af421527f88d1d3a6865617e9fea48e6f51c704a1. Content is unchanged — parses or scores produced against the original PDF remain valid, but were keyed to a superseded hash. Re-key rather than re-parsing.
bsb-004 (Silk Road Banking (Hong Kong)) was reissued on 2026-08-07. Reissued to correct errors in the original statement. The second account is now denominated in USD, with a disclosed FX rate. Original PDF sha256: e93cacdb23195adefdf13ef4ba9528f55454c6fb2dc83624fe9c5077c5bc6455. Superseded by: 522f8c9c92cb567580ffca4ac5ff9d4caea7d831764671de0ab8ae0878e513c2. Parses or scores produced against the original PDF are not comparable. Re-parse the reissued PDF.
bsb-004 (Silk Road Banking (Hong Kong)) was reissued on 2026-08-11. Reissued to fix the same generator reproducibility bug as the other released statements, plus a generator fix to how ground-truth account identity is derived: the account name no longer bakes in the account number, which lets a parser that correctly componentizes the printed heading exact-match cross-engine. Printed content (including the heading) is unchanged. Original PDF sha256: 522f8c9c92cb567580ffca4ac5ff9d4caea7d831764671de0ab8ae0878e513c2. Superseded by: 0a4201b0e1a9c9ed834a2dce898a97ef8bac2b959ae6e3eb041c59328e0b19d1. Content is unchanged — parses or scores produced against the original PDF remain valid, but were keyed to a superseded hash. Re-key rather than re-parsing.
bsb-005 (Harbour Bank (Canada)) was reissued on 2026-08-11. Reissued to fix a benchmark-generator reproducibility bug (non-deterministic PDF metadata: creation date, embedded font-subset tags, image object ordering). Printed content and every ground-truth answer are unchanged. Original PDF sha256: 01a26c767b9488e45b358b329e2c9ea3d9fba05878a1963da06fde899827debb. Superseded by: 8919aa5abdb06d377898e5cc78751661fcc80a25a89a477af49ceb0f0d7fe143. Content is unchanged — parses or scores produced against the original PDF remain valid, but were keyed to a superseded hash. Re-key rather than re-parsing.
bsb-001 (Straits Capital (Singapore)) was reissued on 2026-08-14. Reissued to fix account numbers that were previously a static, non-random digit string shared by every synthetic statement for that banking tag. Account numbers now come from a country-keyed format table (#4931). Original PDF sha256: 8a5b0e296d5d9ffaccfe6e8d99e0b52f7f60db76db54132c8c9ce6b8cbd52720. Superseded by: d3d5071b90a33272f31bab5c5660d78b2ae29d2c6e1720477f5e8b167f73e843. Parses or scores produced against the original PDF are not comparable. Re-parse the reissued PDF.
bsb-002 (Liberty National (United States)) was reissued on 2026-08-14. Reissued to fix account numbers that were previously a static, non-random digit string shared by every synthetic statement for that banking tag. Account numbers now come from a country-keyed format table (#4931). Original PDF sha256: 7632b2a50b3ab172e18f03ea110241660c220a4ef738bbfb683eba4cccbbc324. Superseded by: 3700a073ac1262173cbabbd5667cd3a59e04cf0b14e3a865ae25ce21089ab97d. Parses or scores produced against the original PDF are not comparable. Re-parse the reissued PDF.
bsb-003 (Continental Trust (Netherlands)) was reissued on 2026-08-14. Reissued to fix the account number: NL is an IBAN country, but the old template randomized a two-letter "country code" instead of emitting NL's literal IBAN prefix, and the checksum was never a valid ISO 7064 mod-97-10 IBAN check digit. Account numbers now come from a country-keyed format table that emits a real, check-digit-valid IBAN for NL (#4931). Original PDF sha256: 4bad73296bdbcf7142b62c8af421527f88d1d3a6865617e9fea48e6f51c704a1. Superseded by: 4945bcda107e6d7845850e728b90c4dba1cb11de5a13356b0794df349e5527c2. Parses or scores produced against the original PDF are not comparable. Re-parse the reissued PDF.
bsb-004 (Silk Road Banking (Hong Kong)) was reissued on 2026-08-14. Reissued to fix account numbers that were previously a static, non-random digit string shared by every synthetic statement for that banking tag. Hong Kong has no single documented national account-number scheme, so the new generic digit format is honestly noted as such rather than citing a fabricated standard. Account numbers now come from a country-keyed format table (#4931). Original PDF sha256: 0a4201b0e1a9c9ed834a2dce898a97ef8bac2b959ae6e3eb041c59328e0b19d1. Superseded by: 67a5b862696fc06e675db53867be6fcc71a4ecc13998193e8b45e2cd63371051. Parses or scores produced against the original PDF are not comparable. Re-parse the reissued PDF.
bsb-005 (Harbour Bank (Canada)) was reissued on 2026-08-14. Reissued to fix the account number: Canada has no IBAN, but the old template printed a French IBAN (inherited from the base `fr.json` dictionary — format was keyed by language, not jurisdiction). Account numbers are now keyed by country, so `fr-CA` prints Canada's 5-digit-transit + 3-digit-institution + 7-digit-account format instead of France's IBAN (#4931). Original PDF sha256: 8919aa5abdb06d377898e5cc78751661fcc80a25a89a477af49ceb0f0d7fe143. Superseded by: a5cc2a7d210bc657c55b44ac159c5d10b2d71553f3646ce17a64051f918fd960. Parses or scores produced against the original PDF are not comparable. Re-parse the reissued PDF.
Your score is measured across two dimensions — the same framework we use to independently test commercial converters.
Field-by-field comparison of dates, amounts, descriptions, and balances against ground truth.
Balance reconciliation, total validation, and row-level alignment across the full statement.
Download the dataset, integrate the evaluation API, and benchmark your parser.
See how your current solution performs, or try Bankstatemently on your own statements.
Try Bankstatemently Free