{"uid":"cap_WrZvdvgmOcRB1DVIiRv9A","slug":"statementkit-bank-statement-normalizer-a53a943c","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.erikssonanton2001.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_nr5NYsg-qy_rcnRV9PNeY","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) into normalized JSON with transaction analysis and export options","exampleAgentPrompt":"Can you parse this bank statement CSV for me — the columns are mapped as date=Bokföringsdatum, amount=Belopp, description=Text, and the decimal separator is a comma — and give me a full transaction breakdown with totals as of today 2025-07-15?","exampleUseCases":[{"title":"Bookkeeping tool transaction import","prompt":"I have a camt.053 file from my Swiss bank and need it converted to normalized JSON transactions so I can import them into my bookkeeping system — today's date is 2025-07-15 so flag any recurring payments that stopped."},{"title":"Multi-bank CSV consolidation","prompt":"Here's a CSV export from my Swedish bank with semicolon delimiters and comma decimal separators — headers are Bokföringsdatum, Belopp, and Text — can you normalize it into clean JSON and also give me a summary of total income and expenses for the period?"},{"title":"Accounting software hledger export","prompt":"I have an OFX file from my US bank account and I need the transactions parsed out and exported in hledger format so I can import them into my plain-text accounting workflow."}],"resultDescription":"Returns a JSON object with a 'parsed' section containing transaction list (with date, amount, description, balance, reference fields), metadata about the detected format and column mappings, and a list of warnings; plus an 'analysis' section with per-account summaries including transaction counts (in/out), date period covered (from/to/days), and totals (income, expenses, net). Optionally includes raw source fields per transaction.","failureModes":["Unsupported file format (PDF, scanned images not supported)","Ambiguous date format causing mis-parsing — use dateFormat override","Wrong decimal or delimiter separator causing parse errors","Missing currency in file with no fallback provided — use currency parameter","Column names don't match — use columns mapping parameter","Malformed or truncated file content — truncated flag set in response warnings"],"whenToPreferThis":"Choose this endpoint when you need deterministic, rule-based parsing of structured bank statement files (CSV, camt, MT940, OFX/QFX, QIF) into clean normalized JSON — especially when you need consistent output regardless of which bank issued the file. Prefer it over general-purpose LLM-based parsers when auditability and repeatability matter, or when you need accounting-ready exports (hledger, SIE4) directly from the parser output.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-17T12:38:25.868Z","isFirstParty":false,"canonicalSlug":"statementkit-bank-statement-normalizer-a53a943c"}