Interactive tool
Bank File Reader
Paste an MT940, a camt.053, a pain.002 or a BAI2 file and read it as what it is: the account, its balances, every entry, the codes explained, and whether the file adds up. Nothing you paste leaves this browser, and nothing is kept.
A reader, not a validator: it shows what is in the file and whether its own arithmetic holds. The meanings beside the codes come from the code lookup.
The sample files
One invented account on one day — Example Trading B.V., 30 September 2026, five entries, closing at 99,876.65 EUR — in three statement formats, and the status report for that morning's payment run. Made for testing an importer or a bank-statement configuration: the same day should come out the same from all three.
- example-statement-2026-09-30.mt940.txtThe statement as a SWIFT MT940, in its FIN envelope.
- example-statement-2026-09-30.camt.053.xmlThe same statement as ISO 20022 XML (camt.053.001.08).
- example-statement-2026-09-30.bai2.txtThe same statement as a BAI2 balance report, with its control totals.
- example-status-report-2026-09-30.pain.002.xmlThe bank's answer to that morning's payment run: one payment accepted, one rejected (pain.002.001.10).
They follow the structure the standards and this site's references describe, and this reader's own checks pass on all of them. They are examples written by hand, not output from a bank, and they have not been run against a bank's implementation guide.
How this works
Methodology
It recognises the format from the text, reads it into the same few things every statement has — an account, balances, entries, references — and then holds the file to its own arithmetic: opening plus entries is closing. Amounts are added as exact integers, never as floating-point numbers, so a file is out only when it is out.
Assumptions
- The text pasted is the file as the bank sent it, from its first line.
- BAI2 amounts carry two implied decimals, as the format has no decimal point.
- In a camt file only booked entries count towards the closing booked balance; pending ones are shown and left out of the sum.
Limitations
- It does not validate against the ISO 20022 schemas, SWIFT network rules or any bank's implementation guide.
- It does not read NACHA files, pain.001 instructions or MT942 yet.
- A code the site's lookup does not hold is shown without a meaning. The bank transaction codes of camt files and the MT940 transaction types are in that group today.
Frequently asked questions
Which bank file formats does the reader open?
SWIFT MT940 customer statements (with or without the FIN envelope), ISO 20022 camt.052 account reports, camt.053 statements and camt.054 notifications, pain.002 payment status reports, and BAI2 balance reports. It recognises the format from the text itself, so there is nothing to choose. NACHA files, pain.001 instructions and MT942 are not opened yet.
Does the file I paste leave my browser?
No. The file is read by code running in this page. It is not uploaded, not saved to this browser's storage, not placed in the page address and not sent to analytics; closing or reloading the tab discards it. A bank statement is the most private file a treasury has, so this tool keeps less than any other on the site.
What does the reader check?
That the file adds up by its own rules. For an MT940, that the opening balance (:60a:) plus every :61: line equals the closing balance (:62a:), and that the mandatory tags are there. For a camt.053, that the opening booked balance plus the booked entries equals the closing booked balance, and that the entry count matches the summary. For BAI2, the account control total in the 49 record, and opening ledger plus detail equals closing ledger.
Where do the meanings of the codes come from?
From this site's code lookup, which is itself read out of the reference articles and their primary sources. A code the lookup does not hold is shown as it stands in the file, without a meaning, rather than with a guess.
Is this a validator?
No. It does not check a file against the ISO 20022 schemas, a bank's implementation guide or SWIFT's network rules, and a file it reads cleanly can still be rejected by a bank or an ERP. It reads the structure the standards define, shows you what is in the file, and says so when the arithmetic does not hold.
The formats themselves are explained field by field in the MT940, camt.053, pain.002 and BAI2 references.