Convert Bank Statements Between Any Format
MT940, CAMT.053, OFX, CSV, JSON — spec-compliant, privacy-first, sub-second conversions via a simple REST API.
curl -X POST https://api.finconvert.dev/v1/convert \
-H "Authorization: Bearer fc_live_xxxxx" \
-F "file=@statement.mt940" \
-F "to=csv" \
-o converted.csv MT940 is being deprecated
SWIFT is sunsetting MT940 by 2027–2028, pushing banks to ISO 20022 (CAMT.053). Thousands of systems still depend on legacy formats. Migration is inevitable.
DIY Conversion
- ✕ Weeks of parsing edge cases per format
- ✕ Bank-specific variations in MT940 :86: fields
- ✕ 200+ CAMT.053 fields, 10 levels of nesting
- ✕ Ongoing maintenance as specs evolve
FinConvert API
- ✓ One API call, any format in, any format out
- ✓ Validated against SWIFT and ISO 20022 specs
- ✓ Sub-second conversions, no data retained
- ✓ New formats added regularly, zero effort for you
Supported Formats
Parse any input, format to any output. More formats added continuously.
MT940
SWIFT bank statement format. Line-based with :XX: tags.
CAMT.053
ISO 20022 XML format. The modern standard for bank statements.
OFX
Open Financial Exchange. Supported by QuickBooks, Xero, Sage.
CSV
Universal spreadsheet format. Human-readable, easy to import.
JSON
Universal Transaction Model as JSON. Developer-friendly.
BAI2
US banking standard for corporate treasury.
QIF
Quicken Interchange Format. Legacy accounting import.
How It Works
Three steps. One API call. Any format.
Upload
Send your bank statement file to the API. Format is auto-detected, or specify it explicitly.
Convert
Parsed into our Universal Transaction Model — a normalised, spec-compliant intermediate representation.
Download
Receive the converted file in your target format. No data is stored — process and return.
Simple Integration
One POST request. Any language. Production-ready in minutes.
curl -X POST https://api.finconvert.dev/v1/convert \
-H "Authorization: Bearer fc_live_xxxxx" \
-F "file=@bank-statement.mt940" \
-F "to=csv" \
-o converted.csv const form = new FormData();
form.append("file", fs.createReadStream("statement.mt940"));
form.append("to", "json");
const response = await fetch("https://api.finconvert.dev/v1/convert", {
method: "POST",
headers: { Authorization: "Bearer fc_live_xxxxx" },
body: form,
});
const data = await response.json();
console.log(data.statements); import requests
with open("statement.mt940", "rb") as f:
response = requests.post(
"https://api.finconvert.dev/v1/convert",
headers={"Authorization": "Bearer fc_live_xxxxx"},
files={"file": f},
data={"to": "json"},
)
data = response.json()
print(data["statements"]) Built for Developers
Everything you need to integrate bank statement conversion into your product.
Multi-Format
MT940, CAMT.053, OFX, CSV, JSON — with more formats added continuously. One API for all.
Privacy-First
Files are processed in memory and never stored. No logs, no persistence, no data retention.
Sub-Second
Average conversion under 200ms. Optimised parsing with zero external dependencies.
Spec-Compliant
Every parser and formatter validated against official SWIFT and ISO 20022 specifications.
API Keys
Separate live and test keys. Granular usage tracking per key for full visibility.
Usage Tracking
Real-time conversion counts, format breakdowns, and usage history via the dashboard.
Simple, Transparent Pricing
Pay for what you use. No hidden fees. Scale as you grow.
Free
For prototyping and small projects.
100 conversions/mo
- ✓ All input & output formats
- ✓ Auto-format detection
- ✓ Community support
Pro
For growing products and teams.
5,000 conversions/mo
- ✓ Everything in Free
- ✓ Priority support
- ✓ Usage analytics dashboard
- ✓ Multiple API keys
Business
For high-volume applications.
50,000 conversions/mo
- ✓ Everything in Pro
- ✓ Dedicated support
- ✓ Custom rate limits
- ✓ SLA guarantee
- ✓ Webhook notifications
Enterprise
Need more than 50K conversions/month? Custom volumes, dedicated infrastructure, and premium SLAs.
Contact SalesFrequently Asked Questions
What formats does FinConvert support?
Is my financial data secure?
How does pricing work?
/v1/convert counts as one conversion.
Parsing (/v1/parse) and detection (/v1/detect)
are counted separately. The Free tier gives you 100 conversions/month at no cost.
What happens when SWIFT deprecates MT940?
to parameter
in your API call. Your downstream systems keep working with the same output format.
What's the file size limit?
Do I need an API key?
/v1/detect and
/v1/formats work without authentication.
Conversion and parsing require an API key, which you'll get when you sign up.
What are the rate limits?
Can I self-host FinConvert?
Ready to convert?
Join the waitlist to get early access, priority support, and a generous free tier when we launch.
No spam. Unsubscribe anytime. We'll only email you about launch updates.