Specifications Matrix

Supported Statement Formats & Specifications

Deterministic multi-standard document ingestion with automated schema normalization across 8 financial formats, Parquet streaming, and ledger exports.

Bank Statement Parser provides deterministic, zero-telemetry ingestion and mathematical balance verification across eight primary banking standards worldwide. Every format is normalized into strongly-typed Transaction and Statement models ready for ERP integration, corporate treasury, automated reconciliation, and OLAP analytics.

Format Standard / Specification Extraction Method Validation Engine
PDF Statements Adobe PDF 1.4–2.0 (Vector & Scanned) Spatial coordinate tokenizer & local OCR/vision fallback Mathematical balance verification & IBAN Mod-97 checksum
CSV & Delimited RFC 4180 with Dialect Auto-Detect Statistical delimiter, decimal, and date header inference Column type inference & date format normalization
BAI2 Cash Management Bank Administration Institute (BAI2) Deterministic record state machine (Records 01–99) Account status balance codes & record 88 continuation validation
SWIFT MT940 SWIFT Standards Release 2026 (End-of-Day) Tag-based state machine parser (:20:, :25:, :60F:, :61:, :62F:) Opening/closing balance arithmetic (Fields 60F/62F)
SWIFT MT942 SWIFT Standards Release 2026 (Interim) Intraday credit/debit transaction stream parser Field 34F floor limit & summary amount reconciliation
ISO 20022 CAMT camt.052, camt.053, and camt.054 (v2–v12) Zero-copy XML streaming parser W3C XML Schema (XSD) & opening/closing balance proofs
ISO 20022 PAIN.001 pain.001.001.03–11 (Customer Credit Transfer) Deterministic XML payment initiation parser Payment control sum & transaction count verification
OFX & Quicken QFX Open Financial Exchange (1.02–2.2 SGML & XML) Robust tree parser with SGML unclosed-tag repair Standard banking DTD & transaction UID deduplication

1. ISO 20022 Messaging Standard (CAMT & PAIN.001)

ISO 20022 is the global standard for electronic data interchange between financial institutions. Bank Statement Parser supports canonical cash management messages (CAMT) and payment initiation instructions (PAIN.001) across all published versions (v2 through v12):

  • CAMT.053 (Bank-to-Customer Statement): Detailed end-of-day electronic account statement reporting opening balance, booked entries, batches, and closing available balance.
  • CAMT.052 (Bank-to-Customer Account Report): Intraday or interim statement providing real-time cash position updates.
  • CAMT.054 (Bank-to-Customer Debit/Credit Notification): Granular transaction-level debit or credit notifications used for instant settlement verification.
  • PAIN.001 (Customer Credit Transfer Initiation): Payment instructions parsed for two-way automated reconciliation against incoming CAMT or MT940 statement postings.

2. SWIFT Telecommunication Formats (MT940 & MT942)

The parser provides native tag-based state machines for legacy SWIFT MT formats without reliance on regular expressions:

  • SWIFT MT940: The electronic bank statement message containing field :20: (Transaction Reference), :25: (Account Identification), :28C: (Statement/Sequence Number), :60F: (Opening Balance), :61: (Statement Line), :86: (Information to Account Owner), and :62F: (Closing Balance).
  • SWIFT MT942: Interim transaction report tracking intraday movements with field :34F: minimum amount specification.
  • Structured Field :86: Sub-Tag Parser: Automated extraction of German SEPA, EPC, and international structured tags including /EREF/ (End-to-End Reference), /PREF/ (Payment Reference), /REMI/ (Remittance Info), /IBAN/, and /BIC/.

3. BAI2 Corporate Cash Management

BAI2 is the North American standard created by the Bank Administration Institute for corporate account reporting. Bank Statement Parser deterministically parses the hierarchical record sequence:

  • Record 01: File Header (sender, receiver, creation date/time, file ID).
  • Record 02: Group Header (ultimate receiver, originator, group status).
  • Record 03: Account Identifier (account number, currency, type codes, status amounts).
  • Record 16: Transaction Detail (type code, amount, funds availability, bank reference).
  • Record 88: Continuation Record (extended remittance and transaction descriptions).
  • Records 49, 98, 99: Account, Group, and File Trailer checksums ensuring zero record omission.

4. Open Financial Exchange (OFX & QFX)

Open Financial Exchange (OFX) and Quicken Financial Exchange (QFX) formats are widely used by retail and commercial banks across North America and Europe:

  • OFX 1.02–1.6: SGML-based format with unclosed tags and legacy header key-value blocks. The parser repairs malformed SGML tag hierarchies without memory buffering overhead.
  • OFX 2.x: Clean W3C XML documents containing BANKMSGSRSV1, STMTTRNRS, and STMTRS aggregates.
  • Transaction Deduplication: Unique FITID (Financial Institution Transaction ID) hashing prevents duplicate booking entries during multi-account batch ingestion.

5. Delimited CSV Statements

CSV is the most ubiquitous yet least standardized financial format. Bank Statement Parser implements a statistical dialect inference engine that automatically determines:

  • Delimiter Detection: Comma (,), semicolon (;), tab (\t), or pipe (|).
  • Date Formatting: ISO 8601 (YYYY-MM-DD), European (DD/MM/YYYY), and US (MM/DD/YYYY) formats inferred from semantic date distributions.
  • Number & Currency Notation: Automatic handling of periods vs. commas for thousand separators and decimal points (e.g. 1,234.56 vs. 1.234,56).
  • Amount Semantics: Automatic detection of unified signed amount columns or split Debit / Credit column layouts.

6. Digital and Scanned PDF Statements

Financial institutions frequently deliver statements in PDF format. Bank Statement Parser provides a dual-mode engine for complete document recovery:

  • Digital / Vector PDFs: High-speed extraction directly from internal text streams and spatial coordinates, preserving table columns across multi-page boundaries with sub-millisecond execution.
  • Scanned Image Statements: Optional local, offline OCR and vision fallback models parse bitmap PDFs (TIFF, PNG, scanned documents) into layout-aware bounding boxes without sending a single byte outside your private network.
  • Forensics & Tamper Verification: Automated PDF forensics check for font anomalies, metadata discrepancies, and hidden modification layers to detect altered statements.

7. Analytical & Accounting Export Targets

In addition to strongly-typed JSON and CSV, Bank Statement Parser supports industrial streaming analytics and plain-text accounting ledger pipelines:

  • Streaming Apache Parquet (ParquetStreamWriter): High-performance, columnar Parquet export with snappy or zstd compression. Supports streaming hundreds of thousands of transactions directly to disk or S3 with constant memory usage.
  • Plain-Text Accounting (PTA): Native export formats for hledger, beancount, and ledger-cli double-entry bookkeeping systems.
  • Pandas & Polars DataFrames: Zero-copy integration into Polars and Pandas analytics pipelines via bankstatementparser[parquet] and bankstatementparser[polars] extras.