{"uid":"cap_fWGuGQxzmXqM7xeX4hIvR","slug":"statementkit-bank-statement-normalizer-3ae725e9","name":"StatementKit: Bank Statement Normalizer","description":"Deterministic bank statement normalizer for AI agents and bookkeeping tools: CSV from any bank, camt.052/053/054, MT940, OFX/QFX and QIF in; normalized JSON, analysis and CSV/hledger/SIE4 export out.","url":"https://statementkit.zenith-ops.workers.dev/v1/analyze?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"today":{"type":"string","description":"YYYY-MM-DD; flags recurring payments that stopped before this date."},"format":{"enum":["csv","camt","mt940","ofx","qif"],"type":"string","description":"Skip auto-detection."},"columns":{"type":"object","description":"CSV: map field names (date, amount, description, ...) to exact header names.","additionalProperties":{"type":"string"}},"content":{"type":"string","description":"The statement file as text (UTF-8). PDF and scanned images are not supported."},"decimal":{"enum":[",","."],"type":"string","description":"CSV decimal separator override."},"currency":{"type":"string","description":"Fallback ISO 4217 currency when the file has none, e.g. SEK."},"delimiter":{"type":"string","description":"CSV delimiter override: comma, semicolon, tab or pipe."},"dateFormat":{"enum":["ymd","dmy","mdy"],"type":"string","description":"CSV date order override for ambiguous dates."},"includeRaw":{"type":"boolean","description":"Add the raw source fields to every transaction."},"include_transactions":{"type":"boolean","description":"Default true. false returns only the analysis."}}},"responseSchema":{"type":"json","example":{"parsed":{"meta":{"rows":4,"decimal":",","delimiter":";","truncated":false,"dateFormat":"dmy","detectedColumns":{"date":"Bokföringsdatum","amount":"Belopp","balance":"Saldo","reference":"Verifikationsnummer","valueDate":"Valutadatum","description":"Text"}},"format":"csv","accounts":[],"warnings":[]},"analysis":{"accounts":[{"counts":{"in":1,"out":3,"transactions":4},"period":{"to":"2026-03-07","days":6,"from":"2026-03-02"},"totals":{"in":32500,"net":30913.25,"out":1586.75}}]}}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.01","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.01/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_w4uvhtibo82DDvv5RC5aU","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.01","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Parses bank statement files (CSV, camt.052/053/054, MT940, OFX/QFX, QIF) and returns normalized JSON with transaction analysis and optional CSV/hledger/SIE4 export","exampleAgentPrompt":"I have a Swedish bank CSV export with semicolon delimiters and comma decimals — the date column is called 'Bokföringsdatum' and amount is 'Belopp'. Can you parse it into clean JSON transactions and give me a summary of totals for the period, flagging any recurring payments that stopped before 2025-06-01?","exampleUseCases":[{"title":"Bookkeeping automation from CSV export","prompt":"I just downloaded my business checking account CSV from Chase — can you normalize it into clean JSON so my bookkeeping tool can import it? The date column is 'Transaction Date', amount is 'Amount', and description is 'Description'."},{"title":"Multi-format statement ingestion for accounting","prompt":"I have a camt.053 statement from my German bank. Parse it into normalized JSON with full transaction details and also give me the period totals — total in, total out, and net balance."},{"title":"hledger journal generation from MT940","prompt":"Here's my MT940 bank statement file. Convert all the transactions to hledger format and tell me if any recurring payments seem to have stopped before today, 2025-07-15."}],"resultDescription":"Returns a JSON object with a 'parsed' block (detected format metadata, column mappings, warnings, transaction list with date/amount/description/balance/reference fields) and an 'analysis' block (per-account period summary with in/out/net totals and transaction counts). Optional fields include raw source columns per transaction and CSV/hledger/SIE4 formatted export strings.","failureModes":["PDF or scanned image input is not supported — only text-based formats are accepted","Ambiguous CSV date formats without dateFormat override may be mis-parsed","Missing currency in file with no fallback 'currency' parameter causes incomplete metadata","Unrecognized or malformed file format returns a parse error","Incorrect column mapping in 'columns' parameter leads to failed field extraction","Truncated large files may be flagged via 'truncated: true' in metadata with partial results"],"whenToPreferThis":"Choose this endpoint when you need deterministic, rule-based parsing of standard bank statement formats (CSV, camt, MT940, OFX/QFX, QIF) into normalized JSON — especially for bookkeeping automation, accounting ingestion pipelines, or AI agent workflows that need structured financial data without LLM-based extraction. Prefer this over generic document parsers when format fidelity and accounting-grade output (hledger, SIE4) matter.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-23T18:35:05.676Z","isFirstParty":false,"canonicalSlug":"statementkit-bank-statement-normalizer-3ae725e9"}