Bank Statement Formats Explained: OFX, MT940, QIF, QFX & SEPA
Banks export transaction data in dozens of different file formats. Whether you need to import statements into accounting software, reconcile transactions, or migrate between banking systems, understanding these formats saves hours of manual work. This guide covers every major bank statement format, when to use each one, and how to convert between them.
Every bank, accounting package, and ERP system speaks a different file format dialect. When your bank exports MT940 but your bookkeeper's software only accepts OFX, you are stuck with manual data entry or an error-prone copy-paste workflow. Common scenarios where format knowledge is essential:Why Bank Statement Formats Matter
Format Overview: Quick Comparison
Format Type Origin Primary Use Region OFX XML/SGML Intuit/Microsoft/CheckFree Personal banking Global MT940 Tagged text SWIFT Corporate banking Global QFX XML (OFX variant) Intuit/Quicken Quicken software US/Canada QIF Plain text Intuit/Quicken Legacy Quicken US/Canada CAMT.053 XML (ISO 20022) ISO/EPC SEPA statements Europe ISO 20022 XML ISO Global standard Global NACHA Fixed-width text Nacha (US) ACH payments US BAI2 Delimited text BAI (US) Cash management US CSV Comma-separated Universal Spreadsheet fallback Global
OFX is the most widely supported bank statement format for personal and small business banking. Originally developed by Microsoft, Intuit, and CheckFree in 1997, it has become the de facto standard for downloading bank transactions into personal finance software.OFX (Open Financial Exchange)
OFX File Structure
OFX files use an XML-like structure with headers and tagged transaction blocks:
OFXHEADER:100
DATA:OFXSGML
VERSION:102
CHARSET:1252
<OFX>
<SIGNONMSGSRSV1>
<SONRS>
<STATUS><CODE>0</CODE></STATUS>
<DTSERVER>20260201120000
<LANGUAGE>ENG
</SONRS>
</SIGNONMSGSRSV1>
<BANKMSGSRSV1>
<STMTTRNRS>
<STMTRS>
<CURDEF>USD
<BANKACCTFROM>
<BANKID>123456789
<ACCTID>9876543210
<ACCTTYPE>CHECKING
</BANKACCTFROM>
<BANKTRANLIST>
<STMTTRN>
<TRNTYPE>DEBIT
<DTPOSTED>20260115
<TRNAMT>-42.50
<FITID>2026011501
<NAME>GROCERY STORE
</STMTTRN>
</BANKTRANLIST>
</STMTRS>
</STMTTRNRS>
</BANKMSGSRSV1>
</OFX>
When to Use OFX
- Importing into personal finance software (GnuCash, Money, Moneydance)
- Bank downloads for small business bookkeeping
- As an intermediate format when converting between other formats
MT940 is the SWIFT messaging standard for customer statement messages. Used by banks worldwide for corporate banking, it is the most common format for business-to-bank communication. The format uses cryptic field tags that require knowledge of SWIFT conventions to read.MT940 (SWIFT Standard)
MT940 Field Structure
MT940 uses numbered field tags. Each tag starts with a colon, followed by the tag number:
:20:STMT202602
:25:DEUTDEFF/DE89370400440532013000
:28C:00001/001
:60F:C260131EUR12500,00
:61:2602010201D42,50N029NONREF
:86:Payment to Supplier ABC GmbH
Invoice 2026-001
:61:2602050205C1500,00N062NONREF
:86:Customer payment received
Order #12345
:62F:C260205EUR13957,50Key MT940 Field Tags
| Tag | Name | Description |
|---|---|---|
:20: | Transaction Reference | Unique statement identifier |
:25: | Account Identification | BIC and account number |
:28C: | Statement Number | Sequence number / page |
:60F: | Opening Balance | C/D flag, date, currency, amount |
:61: | Statement Line | Individual transaction |
:86: | Information | Transaction details (free text) |
:62F: | Closing Balance | Final balance after transactions |
When to Use MT940
- Corporate banking and ERP integration (SAP, Oracle, Microsoft Dynamics)
- Multi-bank cash management across countries
- Automated bank reconciliation systems
- Treasury management workflows
QFX and QIF (Quicken Formats)
QFX (Quicken Financial Exchange)
QFX is Intuit's proprietary variant of OFX, specifically designed for Quicken software. It is essentially an OFX file with an additional INTUIT.BID header that identifies the financial institution. Most US and Canadian banks offer QFX downloads.
The key difference from standard OFX:
<!-- QFX adds this Intuit-specific tag -->
<INTU.BID>12345
<INTU.USERID>usernameQIF (Quicken Interchange Format)
QIF is the original Quicken format from the 1990s. It uses a simpler line-based structure. Although officially deprecated by Intuit in 2005, many tools and banks still support it due to its simplicity:
!Type:Bank
D01/15/2026
T-42.50
PGrocery Store
LFood:Groceries
^
D02/01/2026
T1500.00
PClient Payment
LIncome:Services
^Each field starts with a single letter code: D = date, T = amount, P = payee, L = category. The caret (^) marks the end of each transaction.
QFX vs QIF vs OFX
| Feature | QFX | QIF | OFX |
|---|---|---|---|
| Structure | XML (OFX + Intuit headers) | Plain text | XML/SGML |
| Quicken support | Native | Import only | Supported |
| Bank ID included | Yes | No | Yes |
| Multi-account | Yes | No | Yes |
| Status | Active | Deprecated | Active |
- QFX to CSV Converter — Extract transactions to spreadsheet
- QFX to Excel Converter — Open directly in Excel
- QIF to CSV Converter — Convert legacy Quicken files
- QFX to MT940 Converter — Convert for corporate banking
- QIF to MT940 Converter — Upgrade legacy files to SWIFT format
SEPA Formats: CAMT.053 & ISO 20022
CAMT.053 (Bank-to-Customer Statement)
CAMT.053 is the ISO 20022 XML message type for bank account statements, used across the Single Euro Payments Area (SEPA). It replaces MT940 for European banking and provides richer structured data.
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.08">
<BkToCstmrStmt>
<Stmt>
<Id>STMT-2026-02-001</Id>
<Acct>
<Id><IBAN>DE89370400440532013000</IBAN></Id>
<Ccy>EUR</Ccy>
</Acct>
<Bal>
<Tp><CdOrPrtry><Cd>OPBD</Cd></CdOrPrtry></Tp>
<Amt Ccy="EUR">12500.00</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<Dt><Dt>2026-01-31</Dt></Dt>
</Bal>
<Ntry>
<Amt Ccy="EUR">42.50</Amt>
<CdtDbtInd>DBIT</CdtDbtInd>
<BookgDt><Dt>2026-02-01</Dt></BookgDt>
<NtryDtls><TxDtls>
<RmtInf><Ustrd>Invoice 2026-001</Ustrd></RmtInf>
</TxDtls></NtryDtls>
</Ntry>
</Stmt>
</BkToCstmrStmt>
</Document>CAMT.053 vs MT940
| Feature | CAMT.053 | MT940 |
|---|---|---|
| Format | XML | Tagged text |
| Character set | UTF-8 (full Unicode) | SWIFT charset (limited) |
| Structured remittance | Yes | No (free text only) |
| Party identification | Name, IBAN, BIC, address | Limited |
| Reason codes | ISO standardized codes | Proprietary per bank |
| File size | Larger (verbose XML) | Compact |
| Machine readability | Excellent (standard XML parsers) | Requires specialized parser |
ISO 20022: The Global Standard
ISO 20022 is the umbrella standard that includes CAMT.053 and many other message types. SWIFT is migrating all cross-border payments to ISO 20022, making it the future of financial messaging worldwide. Key message types include:
- CAMT.053: Account statement (replaces MT940)
- CAMT.052: Intraday account report
- PAIN.001: Payment initiation (credit transfers)
- PAIN.008: Direct debit initiation
- PACS.008: Interbank credit transfer
US Formats: NACHA & BAI2
NACHA (ACH File Format)
NACHA defines the file format for Automated Clearing House (ACH) transactions in the United States. ACH handles direct deposits, bill payments, and business-to-business transfers. NACHA files use a strict fixed-width format with 94-character records:
101 091000019 1234567890260201... File Header
5200ABC Company 1234567890PPDPayroll ... Batch Header
62209100001912345678 0000004250Emp001 ... Entry Detail
8200000001000910000010000000000000000042501234567890 Batch Control
9000001000001000000010009100001000000000000000004250 File ControlEach record type is identified by the first digit: 1 = File Header, 5 = Batch Header, 6 = Entry Detail, 8 = Batch Control, 9 = File Control.
BAI2 (Cash Management)
BAI2 (Bank Administration Institute version 2) is the US standard for corporate cash management reporting. Unlike NACHA, BAI2 is for reporting, not initiating transactions. It uses comma-delimited records with type codes:
01,BANKNAME,COMPANYID,260201,1200,001,80,1,2/
02,123456789,BANKNAME,1,260201,1200,USD/
03,9876543210,USD,010,125000,,015,134575,/
16,195,4250,0,260201,,REF001,Supplier Payment/
49,134575,2/
98,134575,1,2/
99,134575,1,2/The right format depends on your specific use case:Which Format Should You Use?
| Scenario | Recommended Format | Why |
|---|---|---|
| Personal budgeting app | OFX or QFX | Widest software support for retail banking |
| Corporate ERP (SAP, Oracle) | MT940 or CAMT.053 | Native ERP integration, structured data |
| Sending to accountant/auditor | CSV or Excel | Universal, readable without special software |
| European SEPA banking | CAMT.053 | EU regulatory standard, richer data than MT940 |
| US payroll/ACH processing | NACHA | Required for ACH network transactions |
| Archival and long-term storage | ISO 20022 XML or CSV | Open standards with long-term readability |
| Multi-bank consolidation | CSV (as common denominator) | Every format converts cleanly to CSV |
The most common conversion paths and what to watch for:Converting Between Formats
To CSV (Universal Export)
CSV is the universal fallback. Every bank format converts to CSV with minimal data loss. The main consideration is column mapping, since each source format structures data differently.
- MT940 to CSV — Parses SWIFT field tags into columns
- OFX to CSV — Extracts transaction elements
- QFX to CSV — Strips Intuit headers, extracts data
- QIF to CSV — Converts legacy single-letter codes
- CAMT.053 to CSV — Flattens XML hierarchy
- ISO 20022 to CSV — Handles all ISO 20022 message types
- NACHA to CSV — Decodes fixed-width ACH records
- BAI2 to CSV — Parses type-coded records
From CSV (Creating Bank Files)
When you need to generate bank-format files from spreadsheet data:
- CSV to MT940 — Generate SWIFT-compatible statements
- CSV to OFX — Create files for banking software import
Cross-Format Conversions
- OFX to MT940 — Retail to corporate format
- QFX to MT940 — Quicken to SWIFT
- QIF to MT940 — Legacy to modern corporate
- QFX to Excel — Direct spreadsheet conversion
N029, N062) have no OFX equivalent. CAMT.053 structured remittance information flattens to free text in MT940. Always verify converted output against the original.Character encoding is a common source of problems with bank statements, especially when dealing with international transactions:Encoding and Character Issues
Common Encoding Problems
- MT940: Uses the SWIFT character set (subset of ISO 8859), which does not support all Unicode characters. Currency symbols like € may be written as
EURinstead. - OFX: Often uses Windows-1252 (as declared in the
CHARSETheader), but some banks incorrectly declare encoding. - CAMT.053: Uses UTF-8 by default (XML standard), so encoding issues are rare.
- CSV exports: Encoding depends entirely on the source system. European banks frequently use ISO-8859-1 or Windows-1252.
How to Fix Encoding Issues
- Check the file header for encoding declarations (
CHARSETin OFX,<?xml encoding="..."?>in XML formats) - If characters are garbled, try opening with a different encoding (UTF-8, Windows-1252, ISO-8859-1)
- Convert to UTF-8 before processing to standardize on a single encoding
For a deeper dive into text encoding, see our Text Encoding Guide.
Bank statements contain highly sensitive financial data. When converting or processing these files:Security and Privacy
- Use client-side tools: All ToolsDock converters process data entirely in your browser. No financial data is uploaded to any server.
- Verify the tool: Check that the conversion tool explicitly states client-side processing. Avoid tools that require file uploads to remote servers.
- Secure your files: Delete converted files after importing into your accounting software. Do not store bank statements in cloud storage without encryption.
- Validate output: Always compare a few transactions in the converted file against the original to ensure accuracy before importing into financial systems.
Tools and Resources
Bank Statement Converters
Cross-Format & From CSV
Related: E-Invoice Validators
If you work with electronic invoicing alongside bank statements, these validation tools ensure compliance:
- UBL Invoice Validator — Check Universal Business Language invoices
- PEPPOL Invoice Validator — Verify BIS 3.0 compliance
- XRechnung Validator — German e-invoice compliance
- Factur-X / ZUGFeRD Viewer — View hybrid PDF invoice data
Further Reading
- Text Encoding Guide — Fix character encoding issues in bank files
- CSV Data Cleanup Guide — Clean converted data before importing
- Data Formats: JSON, XML & YAML — Understanding the XML used by CAMT.053 and ISO 20022