The bankstatementparser suite

Six Apache-2.0 packages, published on PyPI, built around one auditable Transaction model. Start with the core parser and add only the loaders, writer or integrations you need — nothing is bundled you will not use.

Compare the packages

Every package installs from PyPI with a single pip install. The core parser stands on its own; the loaders, writer, LSP and MCP servers all build on the same model.

The six Apache-2.0 packages in the bankstatementparser suite, with current versions and when to reach for each.
Package Version What it does Install When to reach for it
bankstatementparser v0.0.11 Core parser: CAMT, PAIN.001, MT940, OFX/QFX, CSV and PDF into one Transaction model. pip install bankstatementparser You need to read statements of any format.
bankstatementparser-loader-bai2 v0.0.14 Parse BAI2 cash-management/lockbox files into the Transaction model. pip install bankstatementparser-loader-bai2 You receive US BAI2 files.
bankstatementparser-loader-mt942 v0.0.14 SWIFT MT942 interim transaction reports into the model. pip install bankstatementparser-loader-mt942 You receive intraday MT942 reports.
bankstatementparser-writer-xlsx v0.0.13 Write parsed statements to formatted .xlsx. pip install bankstatementparser-writer-xlsx Analysts/auditors want Excel.
bankstatementparser-lsp v0.0.13 Language Server for editor tooling over statement files/mappings. pip install bankstatementparser-lsp You build editor integrations.
bankstatementparser-mcp v0.0.14 Model Context Protocol server exposing the parser as agent tools. pip install bankstatementparser-mcp You want agents (Claude, Cursor, Zed) to read statements.

The packages in detail

Each package is independently versioned and released, but they share one model and one set of conventions. Pick the pieces your workflow calls for.

bankstatementparser v0.0.11 · live

Core parser

The foundation of the suite. It turns CAMT (ISO 20022), PAIN.001, MT940, OFX/QFX, CSV and PDF statements into a single typed Transaction model. Structured formats take a deterministic path; PDFs fall through to a local model. Everything else in the suite depends on this.

PyPI · GitHub

bankstatementparser-loader-bai2 v0.0.14 · live

BAI2 loader

Reads BAI2 cash-management and lockbox files — the format US banks and treasury systems still lean on — and loads them straight into the same Transaction model as the core parser. No separate data shape to reconcile later.

PyPI · GitHub

bankstatementparser-loader-mt942 v0.0.14 · live

MT942 loader

Handles SWIFT MT942 interim transaction reports, the intraday counterpart to MT940. Ideal when you need same-day visibility of movements before the end-of-day statement arrives, all normalised into the shared model.

PyPI · GitHub

bankstatementparser-writer-xlsx v0.0.13 · live

Excel writer

Takes parsed statements and writes clean, formatted .xlsx workbooks. It closes the loop for the analysts and auditors who live in spreadsheets, without hand-crafting exports for every statement source.

PyPI · GitHub

bankstatementparser-lsp v0.0.13 · live

LSP server

A Language Server that brings editor tooling — navigation, validation and awareness — to statement files and column mappings. Use it when you are building integrations for editors that speak the Language Server Protocol.

PyPI · GitHub

bankstatementparser-mcp v0.0.14 · live

MCP server

Exposes the parser as Model Context Protocol tools, so coding and analysis agents such as Claude, Cursor and Zed can read statements through a safe, well-defined interface rather than raw file access.

PyPI · GitHub

How they fit together

The suite is deliberately layered. The core parser reads the formats it understands directly; the loaders extend that reach; the writer and the integration servers sit on top. What holds the whole thing together is one shared model.

The core parses

bankstatementparser is the entry point. It reads CAMT, PAIN.001, MT940, OFX/QFX, CSV and PDF and produces a single Transaction model — the common currency for everything downstream.

Loaders feed extra formats

The BAI2 and MT942 loaders extend coverage to US cash-management files and intraday SWIFT reports, emitting the very same Transaction records so nothing branches into a second data shape.

The writer exports

Once a statement is a set of transactions, the XLSX writer turns it into formatted Excel workbooks for the analysts and auditors who need to review and sign off on the numbers.

LSP and MCP integrate

The LSP server adds editor tooling and the MCP server exposes the parser to agents, so the same parsing logic reaches both developer editors and AI workflows.

One shared, auditable Transaction model underpins every package: whatever the source format, downstream code — reconciliation, ledgers, exports — is written once against a single typed shape.

The suite is privacy-first. Structured formats are parsed deterministically on-device, and PDFs fall through to a local LLM and a local vision model for scans. Your statements only reach an external provider if you explicitly configure one.

Ready to adopt the suite?

Install the packages you need and read the guides for wiring loaders, the writer and the LSP/MCP servers into your workflow.