API
Developers
Documentation
Bank Statement Converter API: Developer Documentation
Published March 14, 2026 -- 10 min read
The Bank Statement Converter API lets you parse PDF bank statements programmatically and get structured transaction data in JSON, CSV, or Excel format. Perfect for fintech apps, accounting automation, and financial data pipelines.
Quick Start
Upload a PDF and get structured data in 3 steps:
1. Upload and Parse
curl -X POST https://bsc-api.up.railway.app/api/convert \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@statement.pdf" \
-F "bank=auto"
# Response:
{
"conversion_id": "conv_abc123",
"bank_detected": "handelsbanken",
"confidence": 92,
"pages": 3,
"transaction_count": 47,
"currency_info": {
"primary": "SEK",
"all": ["SEK"],
"multi": false
},
"preview_rows": [
{
"date": "2026-01-15",
"description": "Spotify AB",
"amount": -129.00,
"currency": "SEK",
"balance": 15432.50
}
]
}2. Download Structured Data
# Download as JSON curl "https://bsc-api.up.railway.app/api/convert/conv_abc123/download?format=json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -o transactions.json # Download as CSV curl "https://bsc-api.up.railway.app/api/convert/conv_abc123/download?format=csv" \ -H "Authorization: Bearer YOUR_API_KEY" \ -o transactions.csv # Download as Excel curl "https://bsc-api.up.railway.app/api/convert/conv_abc123/download?format=xlsx" \ -H "Authorization: Bearer YOUR_API_KEY" \ -o transactions.xlsx # Download as Fortnox-compatible CSV curl "https://bsc-api.up.railway.app/api/convert/conv_abc123/download?format=fortnox" \ -H "Authorization: Bearer YOUR_API_KEY" \ -o transactions_fortnox.csv
3. Custom Export (Pro)
# Custom columns, date format, and decimal separator curl "https://bsc-api.up.railway.app/api/convert/conv_abc123/download\ ?format=csv\ &columns=date,description,amount\ &date_format=DD/MM/YYYY\ &decimal_separator=comma" \ -H "Authorization: Bearer YOUR_API_KEY" \ -o custom_export.csv
API Reference
POST /api/convert
Upload and parse a PDF bank statement.
| Parameter | Type | Description |
|---|---|---|
| file | File | PDF file (multipart/form-data) |
| bank | string | Bank ID or "auto" for auto-detection |
GET /api/convert/:id/download
Download parsed transactions in the specified format.
| Parameter | Type | Description |
|---|---|---|
| format | string | xlsx, csv, fortnox, json |
| columns | string | Comma-separated: date,description,amount,currency,balance (Pro) |
| date_format | string | YYYY-MM-DD, DD/MM/YYYY, MM/DD/YYYY, DD.MM.YYYY (Pro) |
| decimal_separator | string | period (1234.56) or comma (1234,56) (Pro) |
GET /api/convert/banks
List all supported bank formats.
Code Examples
Node.js
import fs from 'fs';
const API_URL = 'https://bsc-api.up.railway.app';
async function parseStatement(filePath) {
const formData = new FormData();
formData.append('file', new Blob([fs.readFileSync(filePath)]), 'statement.pdf');
const response = await fetch(`${API_URL}/api/convert`, {
method: 'POST',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' },
body: formData,
});
const { conversion_id, transaction_count, currency_info } = await response.json();
console.log(`Parsed ${transaction_count} transactions (${currency_info.primary})`);
// Download JSON
const download = await fetch(
`${API_URL}/api/convert/${conversion_id}/download?format=json`,
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const data = await download.json();
return data.transactions;
}
const transactions = await parseStatement('./statement.pdf');
console.log(transactions);Python
import requests
API_URL = "https://bsc-api.up.railway.app"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
# Upload and parse
with open("statement.pdf", "rb") as f:
response = requests.post(
f"{API_URL}/api/convert",
headers=HEADERS,
files={"file": ("statement.pdf", f, "application/pdf")},
)
result = response.json()
conversion_id = result["conversion_id"]
print(f"Parsed {result['transaction_count']} transactions")
# Download as JSON
download = requests.get(
f"{API_URL}/api/convert/{conversion_id}/download",
headers=HEADERS,
params={"format": "json"},
)
transactions = download.json()["transactions"]
for txn in transactions[:5]:
print(f" {txn['date']}: {txn['description']} -> {txn['amount']} {txn['currency']}")Supported Banks
We support 50+ bank formats including:
Sweden
- Handelsbanken
- SEB
- Nordea
- Swedbank
- Lansforsakringar
Norway & Denmark
- DNB
- SpareBank 1
- Danske Bank
- Jyske Bank
- Generic (auto-detect)
Rate Limits and Pricing
| Plan | Price | Pages/day | Features |
|---|---|---|---|
| Free | $0 | 5 | Basic banks, watermark |
| Pro | $19/mo | 100 | All banks, custom exports, no watermark |
| Business | $49/mo | 500 | API access, priority support |
Start integrating today
Create a free account and start parsing bank statements in minutes. No credit card required.