# StatementKit: Bank Statement Converter

> StatementKit: Bank Statement Converter is a paid API for AI agents from statementkit.erikssonanton2001.workers.dev, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-17).

Converts bank statement files (CSV, camt.052/053/054, MT940, OFX/QFX, QIF) into normalized JSON, CSV, hledger journal, or SIE4 format

## Facts

- Endpoint: POST https://statementkit.erikssonanton2001.workers.dev/v1/convert?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-17
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/statementkit-bank-statement-converter-56a76401
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_3BzBY5BzMG7fKe9BUgMVx

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability statementkit-bank-statement-converter-56a76401 -d '<json body>'
```

Example prompt: I have an MT940 bank statement from my Swedish bank — can you convert it to a hledger journal using SEK as the currency, with assets:bank:swedbank as the asset account and expenses:general for outgoing transactions?

## When to prefer this

Choose this endpoint when you need deterministic, rule-based conversion of text-based bank statement files (CSV, camt, MT940, OFX/QFX, QIF) into structured formats — especially for bookkeeping workflows requiring hledger or SIE4 output. Prefer it over LLM-based parsers when you need consistent, reproducible results without hallucination risk. Not suitable for PDF or scanned image statements.

## Known failure modes

- Unsupported or malformed file content returns a parse error
- PDF or image-based statements are explicitly not supported and will fail
- Ambiguous CSV date formats without dateFormat override may produce incorrect dates
- Missing currency in file without fallback currency parameter causes incomplete output
- Incorrect column mapping for CSV files leads to failed field extraction

## How this service works

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.

## Output

Returns a JSON object containing the converted file content as a string (in the requested format: JSON, hledger journal, SIE4, or CSV), a suggested filename, the content MIME type, and an array of any warnings encountered during parsing or conversion.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "to": {
   "enum": [
    "csv",
    "hledger",
    "sie4",
    "json"
   ],
   "type": "string",
   "description": "Target format."
  },
  "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"
   }
  },
  "company": {
   "type": "string",
   "description": "Company name for the SIE4 header."
  },
  "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."
  },
  "bankAccount": {
   "type": "string",
   "description": "Bank account number (SIE4, e.g. 1930) or ledger account (hledger)."
  },
  "assetAccount": {
   "type": "string",
   "description": "hledger asset account name."
  },
  "incomeAccount": {
   "type": "string",
   "description": "Counter account for incoming money."
  },
  "expenseAccount": {
   "type": "string",
   "description": "Counter account for outgoing money."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "format": "hledger",
  "content": "2026-03-02 * Lön Acme AB\n    assets:bank:unknown  32500.00 SEK\n    income:unknown\n\n2026-03-03 * Netflix.com\n    assets:bank:unknown  -129.00 SEK\n    expenses:unknown\n\n2026-03-05 * ICA Maxi Stockholm\n    assets:bank:unknown  -842.35 SEK\n    expenses:unknown\n\n2026-03-07 * Vattenfall Eldistribution\n    assets:bank:unknown  -615.40 SEK\n    expenses:unknown\n",
  "filename": "statementkit.journal",
  "warnings": [],
  "contentType": "text/plain; charset=utf-8"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/statementkit-bank-statement-converter-56a76401/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from statementkit.erikssonanton2001.workers.dev](https://www.zero.xyz/host/statementkit.erikssonanton2001.workers.dev/llms.txt)
