Why an MT940 file fails to import
Accounting software is unforgiving about MT940 and usually says so in three words: “Import failed.” It rarely tells you which of the thousand lines is at fault. This validator reads the same file and tells you exactly what is wrong with it, in the order that matters.
Most rejections come down to one of four things: the balances do not reconcile, a statement page is missing from the middle of the series, an entry is malformed, or the same booking appears twice. All four are checked here.
Nothing is uploaded. This page is JavaScript running on your machine. Load it, disconnect from the internet, and it still works — which is the only honest way to hand a tool a live bank statement.
What is checked
The balances actually add up
The core check: opening balance + credits − debits must equal the closing balance the file states in :62F:. If it does not, the file is truncated or entries are missing, and you are told the exact difference rather than a yes/no. Amounts are compared in whole cents, never as floating-point numbers, so a €0.01 discrepancy is reported as a €0.01 discrepancy and not lost to rounding.
No statement page is missing
Statements are numbered in :28C:. If your file jumps from 41 to 43, statement 42 was never delivered — and importing what you have leaves a hole in your ledger that nobody notices until the quarter closes. Numbering is checked per account, because two accounts each numbered 1, 2, 3 is completely normal and treating them as one sequence would invent gaps that do not exist.
One page follows on from the last
Separately from the numbering: a page's closing balance must equal the next page's opening balance for the same account. When it does not, a page is missing or the pages are out of order, even if the numbering looks continuous.
Entry-level problems
- No value date — the entry cannot be booked to a period
- Zero amount — usually a truncated
:61:line - Value date far from entry date — MT940 writes dates as bare
YYMMDD, and an entry date of1231read in January resolves to the wrong year. More than six months apart is flagged, because that is what a year-boundary mistake looks like - No account number — a statement with no
:25:cannot be attributed to an account - Possible duplicates — entries sharing a date, amount, counterparty and reference
Encoding
German and Nordic banks still ship CP1252 rather than UTF-8. The file is decoded either way and you are told which happened, because a file that looks fine here and arrives at your accounting system full of ü is an encoding problem, not an MT940 problem.
Errors, warnings and notes
Findings are separated, because they need different responses:
- Error — do not import this file until it is explained. Balances that do not reconcile, a missing statement page, an entry with no date.
- Warning — the file is valid but something is worth a look. Possible duplicates, a zero-amount entry, an odd date.
- Note — informational. A statement with no transactions is perfectly legal; an MT942 interim report genuinely has no closing balance to reconcile against.
A clean file reports zero errors and zero warnings. Anything else is shown with the statement and entry it came from, so you can find it in the original.
How to check a file
Add the file
Drop the .sta, .940 or .mt940 file above, or paste the raw text from your banking portal.
Read the verdict
Errors first, then warnings, then notes — each with the statement and entry it belongs to.
Send the report on
Download it as a text file to attach to a ticket with your bank or your software vendor.