Convert bank statements programmatically
The BSC API allows you to convert PDF bank statements to Excel (.xlsx) or CSV format programmatically. All API conversions count against your plan's monthly page limit and appear in your "Recent" conversions list.
Authorization headerAll API requests require a Bearer token. Include it in the Authorization header:
Tokens are shown only once when generated. If you lose a token, revoke it and create a new one.
/api/v1/convert| Part | Details |
|---|---|
| Content-Type | multipart/form-data |
| Body field | file — the PDF file |
| Authorization | Bearer <token> |
| Param | Type | Default | Description |
|---|---|---|---|
format | string | xlsx | Output format: xlsx or csv |
minimal | string | false | Set to true to strip all headers — only raw transaction rows |
200 OK — The converted file as a binary download (xlsx or csv)
Custom response headers are included with metadata:
| Header | Description |
|---|---|
X-BSC-Bank | Detected bank name |
X-BSC-Transactions | Number of transactions extracted |
X-BSC-Partial | true if only partial pages were processed (plan limit) |
X-BSC-Pages-Processed | Number of pages actually processed |
X-BSC-Pages-Total | Total pages in the PDF |
Errors return JSON with an error field:
| Status | Meaning |
|---|---|
400 | Bad request (missing file, invalid format, not a PDF) |
401 | Invalid or missing API token |
403 | No active subscription |
429 | Page limit reached |
500 | Conversion failed (parsing error) |
> Normal: bank info header, column names, styled rows
> Minimal: raw transaction rows only, no headers or styling
> Normal: bank info, column headers, then transaction rows
> Minimal: transaction rows only — date,description,amount,balance,reference,counterparty
curl -X POST "/api/v1/convert?format=xlsx" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -F "file=@statement.pdf" \ --output converted.xlsx
curl -X POST "/api/v1/convert?format=csv" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -F "file=@statement.pdf" \ --output converted.csv
curl -X POST "/api/v1/convert?format=csv&minimal=true" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -F "file=@statement.pdf" \ --output data.csv
API conversions share your plan's monthly page limit. Each page of an uploaded PDF counts as one page toward your limit.
If you exceed your limit, the API will return a 429 status. If a PDF has more pages than your remaining quota, only the allowed pages will be processed and the partial flag will be set.
Each transaction row contains these fields (in both xlsx and csv):
| Column | Type | Description |
|---|---|---|
| date | string | Transaction date (YYYY-MM-DD) |
| description | string | Transaction description / memo |
| amount | number | Positive = credit, negative = debit |
| balance | number? | Running balance after transaction (may be empty) |
| reference | string? | Bank reference or transaction ID |
| counterparty | string? | Name of the other party |
Having issues with the API? Contact us at or use the contact form on the main page.