API
Developers
Documentation
Bank Statement Sheet API: Developer Documentation
Published March 14, 2026 -- 10 min read
The Bank Statement Sheet 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.
Honest status note: these are the same live endpoints the web app uses. Dedicated API keys are not issued yet — anonymous requests run on the free tier (per-IP limits) and cover Excel/CSV downloads; JSON, OFX and Fortnox downloads require a Pro account's Authorization token. A formal API-key program is planned; contact us if you want early access.
Quick Start
Upload a PDF and get structured data in 3 steps:
1. Upload and Parse
curl -X POST https://api.bankstatementsheet.com/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 CSV (free, no auth needed) curl "https://api.bankstatementsheet.com/api/convert/conv_abc123/download?format=csv" \ -o transactions.csv # Download as Excel (free, no auth needed) curl "https://api.bankstatementsheet.com/api/convert/conv_abc123/download?format=xlsx" \ -o transactions.xlsx # Download as JSON (Pro — authenticate with your account token) curl "https://api.bankstatementsheet.com/api/convert/conv_abc123/download?format=json" \ -H "Authorization: Bearer YOUR_ACCOUNT_TOKEN" \ -o transactions.json # Download as Fortnox-compatible CSV (Pro) curl "https://api.bankstatementsheet.com/api/convert/conv_abc123/download?format=fortnox" \ -H "Authorization: Bearer YOUR_ACCOUNT_TOKEN" \ -o transactions_fortnox.csv
3. Custom Export (Pro)
# Custom columns, date format, and decimal separator curl "https://api.bankstatementsheet.com/api/convert/conv_abc123/download\ ?format=csv\ &columns=date,description,amount\ &date_format=DD/MM/YYYY\ &decimal_separator=comma" \ -H "Authorization: Bearer YOUR_ACCOUNT_TOKEN" \ -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 (free) · fortnox, ofx, json (Pro) |
| 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 — CSV becomes semicolon-separated, European convention) (Pro) |
GET /api/convert/banks
List all supported bank formats.
Code Examples
Node.js
import fs from 'fs';
const API_URL = 'https://api.bankstatementsheet.com';
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://api.bankstatementsheet.com"
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 major Nordic bank formats — plus any bank via our AI engine — 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 | All banks, Excel/CSV |
| Pro | $19/mo | 100 | Fortnox/OFX/JSON, custom exports, batch |
| Business | $49/mo | 500 | Everything in Pro, priority support |
Start integrating today
Create a free account and start parsing bank statements in minutes. No credit card required.