{"uid":"cap_q3_Ga-flqh9bG5lgdJn7y","slug":"statementkit-bank-statement-parser-e4f1ce97","name":"StatementKit: Bank Statement Parser","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/parse?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"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."}}},"responseSchema":{"type":"json","example":{"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":[{"iban":null,"name":null,"currency":"SEK","transactions":[{"id":"ff1a637e10b6cbbb","ocr":null,"date":"2026-03-02","amount":32500,"currency":"SEK","direction":"in","reference":"5001","valueDate":"2026-03-02","endToEndId":null,"description":"Lön Acme AB","balanceAfter":41200.5,"counterparty":null},{"id":"3cbcc9a094dcd39a","ocr":null,"date":"2026-03-03","amount":-129,"currency":"SEK","direction":"out","reference":"5002","valueDate":"2026-03-03","endToEndId":null,"description":"Netflix.com","balanceAfter":41071.5,"counterparty":null},{"id":"afaab09a8e366eba","ocr":null,"date":"2026-03-05","amount":-842.35,"currency":"SEK","direction":"out","reference":"5003","valueDate":"2026-03-05","endToEndId":null,"description":"ICA Maxi Stockholm","balanceAfter":40229.15,"counterparty":null},{"id":"470cc2a77723cc1d","ocr":null,"date":"2026-03-07","amount":-615.4,"currency":"SEK","direction":"out","reference":"5004","valueDate":"2026-03-07","endToEndId":null,"description":"Vattenfall Eldistribution","balanceAfter":39613.75,"counterparty":null}],"accountNumber":null,"closingBalance":null,"openingBalance":null}],"warnings":[]}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.005","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.005/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_LVypNpTFZVcEoMBQnNlVe","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.005","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) into normalized JSON transactions with optional CSV/hledger/SIE4 export","exampleAgentPrompt":"I have a Swedish bank statement exported as CSV with semicolon delimiters and comma decimals — can you parse it into clean JSON transactions? The date column is called 'Bokföringsdatum' and the amount column is 'Belopp'.","exampleUseCases":[{"title":"Automated bookkeeping pipeline ingestion","prompt":"I've got a camt.053 XML file from my Swiss bank and I need to pull out all the transactions as normalized JSON so my bookkeeping tool can import them — can you parse it?"},{"title":"Multi-bank CSV normalization for reconciliation","prompt":"I have CSV exports from three different banks, all with different column names. Can you parse this one from Nordea — the date header is 'Transaktionsdatum', amount is 'Belopp', and they use comma as the decimal separator — and give me structured transactions?"},{"title":"hledger journal generation from MT940","prompt":"I have an MT940 bank statement file I downloaded from my Dutch bank. Please parse all the transactions out of it and export them in hledger format so I can import them into my accounting journal."}],"resultDescription":"Returns a JSON object with a 'format' field identifying the detected format, 'meta' with parsing details (row count, detected columns, delimiter, date format), 'accounts' array containing normalized transactions (each with id, date, amount, currency, direction, reference, valueDate, description, balanceAfter, counterparty), and 'warnings' for any parsing issues encountered.","failureModes":["Unsupported file format (PDF or scanned images are explicitly not supported)","Ambiguous date format causes mis-parsing if dateFormat not specified","Wrong decimal or delimiter separator causes amount parsing errors","Missing currency in file with no fallback provided results in null currency","Column mapping mismatch if CSV headers don't match provided 'columns' map","Malformed or truncated file may yield partial results with truncated:true in meta"],"whenToPreferThis":"Choose StatementKit when you need deterministic, schema-stable parsing of real bank statement files across a wide range of formats (CSV from any bank, camt.052/053/054, MT940, OFX/QFX, QIF) into a unified normalized JSON schema. Prefer it over general-purpose LLM parsing when you need consistent transaction IDs, reliable amount/direction normalization, and structured metadata like IBAN and balances. Ideal for bookkeeping automation, accounting integrations, and financial data pipelines where schema consistency and format breadth matter more than AI-based interpretation.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-23T18:30:34.994Z","isFirstParty":false,"canonicalSlug":"statementkit-bank-statement-parser-e4f1ce97"}