Parse a bank statement
Upload a PDF (or XLSX) statement and get structured transactions back. `?format=json` (default) returns ParseResponse; `?format=csv` returns the engine-serialized CSV. `redact=true` returns the redacted document bytes. The file is parsed in memory and never written to disk.
Query Parameters
Header Parameters
Request Body
multipart/form-data
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/parse" \ -F pdf="string"{ "format_version": "string", "metadata": { "bank": "string", "account_holder": "string", "account_number_masked": "string", "statement_period_start": "2019-08-24T14:15:22Z", "statement_period_end": "2019-08-24T14:15:22Z", "opening_balance": "string", "closing_balance": "string" }, "totals": { "credit": "string", "debit": "string" }, "row_wise_reconcilable": true, "transactions": [ { "date": "2019-08-24T14:15:22Z", "narration": "string", "debit": "string", "credit": "string", "balance": "string", "reference": "string", "currency": "string" } ]}{ "error": "string", "error_class": "string", "format_version": "string", "marker_coverage": 0}{ "error": "string", "error_class": "string", "format_version": "string", "marker_coverage": 0}{ "error": "string", "error_class": "string", "format_version": "string", "marker_coverage": 0}{ "error": "string", "error_class": "string", "format_version": "string", "marker_coverage": 0}{ "error": "string", "error_class": "string", "format_version": "string", "marker_coverage": 0}Bill the owner's current overage (admin, manual) POST
Admin-only. Computes this cycle's overage from audit success counts and raises a Paystack invoice for it. Manual trigger until an end-of-cycle cron lands.
Submit a long parse as an async job POST
Queue a statement parse and stream engine progress over Server-Sent Events. Returns 202 with a job_id, an SSE stream_url, and a poll_url fallback. Mirrors /v1/parse: `?format=csv` and `redact=true` are supported. json rides the SSE result event; csv and redact bytes are fetched from /v1/parse/jobs/{id}/result. Use this for large statements; small ones are faster on the synchronous /v1/parse.