What is an MT940 file?
MT940 is the SWIFT message type banks use to deliver an end-of-day account statement. Your bank exports it from online banking with an extension like .sta, .940, .mt940 or plain .txt, and your accounting software imports it. Between those two steps the file is close to unreadable — it's a stack of colon-delimited tags like :61:2601020102D234,56NTRFINV-2026-0114.
This viewer turns that back into something a person can read: opening and closing balances, one row per transaction, counterparty names and IBANs, and the SEPA references hidden inside the :86: narrative field.
It also reads MT942, the interim (intraday) variant your bank sends during the day. MT942 has a floor limit and transaction-count totals instead of a final closing balance, and the viewer labels it as such rather than pretending a balance is missing.
Nothing is uploaded. The parser runs in your browser. Your account number, balance and counterparties never touch our servers — and the page keeps working if you disconnect from the network after it loads.
How to open an MT940 file
Choose your file
Drop the .sta / .940 / .mt940 file onto the box above, or paste the text straight from your banking portal.
Read the statement
Balances, totals and every transaction appear instantly. Search by counterparty, amount or reference, and open any row for the full detail.
Export if you need to
Download CSV or JSON right here, or hand the file to the PDF and Excel converters.
What the viewer shows you
Balances and a real reconciliation check
Every statement is checked the way an accountant would: opening balance + credits − debits should equal the closing balance. The comparison runs in whole cents, so floating-point noise can't invent a false alarm. If it doesn't add up, you get the expected figure, the figure in the file, and the difference — that usually means the file is truncated or a page is missing.
Transactions in plain language
Each :61: line becomes a row with value date, entry date, description, counterparty, type code and a signed amount. Credits are green and positive, debits red and negative. Reversals (RC / RD) get their own badge, because a reversal of a debit is money coming in and it's easy to book it the wrong way round.
The :86: narrative, decoded
The narrative field is where banks disagree with each other. The viewer detects which dialect your bank uses and unpacks all three:
- German
?nnsubfields (Sparkasse, Volksbank, Deutsche Bank, Commerzbank): booking text, GVC business code, counterparty name and IBAN, plus SEPA prefixesEREF+,MREF+,CRED+andSVWZ+. - Dutch slash tags (ING, Rabobank, ABN AMRO):
/TRTP/,/IBAN/,/NAME/,/REMI/,/EREF/. - Plain free text, which is what most other banks send — shown as-is, with any IBAN picked out.
Multi-page statements, checked for gaps
Long statements arrive split across several :20: blocks linked by intermediate :60M: / :62M: balances. The viewer follows the chain and warns you when one page's closing balance doesn't match the next page's opening balance — the clearest sign a statement is missing from the file.
Awkward encodings handled
German and Nordic banks still ship Windows-1252 with CRLF line endings. If the file isn't valid UTF-8, the viewer re-decodes it as CP1252 so MÜLLER GMBH reads correctly instead of turning into replacement characters — and it tells you it did.
Comma decimals read correctly
SWIFT amounts use a comma for the decimal separator: 1234,56 means one thousand two hundred thirty-four euros and fifty-six cents. Naive readers parse that as 1234 and silently lose the cents. This one doesn't.
Files and banks it reads
- Message types: MT940 (end-of-day statement) and MT942 (interim / intraday statement)
- Extensions:
.sta,.mt940,.940,.mt942,.942,.swi,.txt - Wrapping: raw tag files and files wrapped in the SWIFT
{1:}{2:}{4: … -}envelope - Banks: auto-detected — German, Dutch, Austrian, Swiss, Nordic and generic SWIFT exports
- Encodings: UTF-8 and Windows-1252, LF or CRLF line endings
- Size: up to 20 MB, which is far more than a year of statements
Common use cases
- Check what's actually inside a statement before importing it into your accounting software
- Work out why an import failed — a missing page and a broken balance both show up here
- Find a single payment by counterparty name, IBAN or end-to-end reference
- Read a statement on a machine that has no accounting software installed
- Hand a bookkeeper a readable PDF or CSV instead of a raw
.stafile - Inspect the exact SEPA fields a payment carried, when a customer says they paid
Security & privacy
A bank statement is one of the most sensitive files you own — account number, balance, salary, every counterparty you paid. That shaped how this tool is built:
- Parsed on your device: the viewer, the CSV export and the JSON export all run in your browser. No upload, no request, nothing to log.
- Works offline: load the page, disconnect, and it still parses. That's the easiest way to verify the claim yourself.
- No account needed: no signup, no cookie required to use it.
- The two exceptions are labelled: PDF and Excel rendering happens on our server, so those two pages do upload your file. It's deleted within the hour and never read by a person.