Statement Normalizer
Deterministic bank-statement parsing for AI agents: messy CSV/OFX exports in, clean categorized ledger rows out.
How to pay
Subscribe
Free
Predictable monthly cost with included usage. Best for steady, high-volume traffic.
- Unlimited tools within plan limits
- One API key, billed once a month
- Cancel any time
Your bank data never sticks anywhere. Statement Normalizer parses in memory only: no storage, no external calls, no LLM in the loop. Deterministic rules, identical output every time. MIT open source, so you can verify that claim or run it locally.
The problem: every bank exports transactions differently. Shifted headers, US and EU date formats, split debit and credit columns, currency symbols, parentheses negatives, decimal commas, junk preamble lines, footer totals. Agents doing bookkeeping either write fragile one-off parsing or hallucinate structure.
Four tools:
- detect_format: identify delimiter, header row, and date convention before committing
- normalize_statement: full parse to clean ledger rows with ISO dates, signed amounts, and heuristic categories
- summarize_statement: inflow, outflow, net, and by-category totals
- to_quickbooks_csv: re-emit as QuickBooks-importable 3-column CSV
See it respond. normalize_statement on a messy CSV row returns:
{
"date": "2026-07-03",
"description": "COFFEE SHOP #42",
"amount": -4.50,
"direction": "out",
"category": "dining"
}
Every payload carries parse warnings and a disclaimer. Bookkeeping assistance, not financial advice. The free tier covers evaluation of all four tools; after that, pay only for what you use.