Drop the file your bank calls SWIFT MT940 or CAMT.053. This tab reads it, adds every movement to the opening balance and tells you whether the total matches the closing balance the bank itself wrote. The file never leaves this computer.
| Date | Description | Debit | Credit | Balance | Account |
|---|
The balance column is worked out here, by adding each movement to the opening balance your bank stated. Neither format prints a balance per line — only one at each end of the statement.
They are already read and checked in this tab. A pass unlocks every row of every file you convert over the next 7 days, in this browser — and on any other once you sign in.
The workbook carries a second sheet, Balances: one line per statement with the opening balance, the sum of the movements, the closing balance your bank wrote and the difference between them. The check travels with the file instead of staying on this page.
European banks hand out two machine-readable statements, and which one you get
depends on the bank rather than on you. MT940 is a SWIFT telex
format: plain text, lines that begin :20:, :61: and
:86:, two-digit years and a comma where English puts a decimal point.
CAMT.053 is its ISO 20022 replacement: XML, verbose, with a
<Ntry> element per movement. Banks name them differently again —
«SWIFT MT940», «MT940 Structured», «CAMT.053», «ISO 20022 XML», sometimes just
«electronic statement».
Both are read here, and both come out as the same table. Neither needs an account with us, and neither is uploaded: the reading happens in this browser tab, which you can see for yourself in the network panel of your developer tools.
This is the part worth being precise about, because it is the reason to use this page
rather than a format converter. Both formats carry a balance at each end of the
statement: MT940 writes them as :60F: and :62F:, CAMT as
OPBD and CLBD. Add every movement to the opening balance and
the result must equal the closing balance the bank wrote. When it does, nothing was
misread — not one amount, not one sign, not one line skipped.
When it does not, you are told by how much, and that is where the honesty has to start: neither format carries a running balance per line. There is a figure at each end and nothing in between, so a mismatch is a fact about the statement and cannot be pinned on a single row. A page that highlighted one row in red here would be inventing a precision the file does not contain. Our PDF statement reader can point at the row, because a printed statement usually carries a balance on every line; this one cannot, and says so.
Both formats carry two dates per movement: the value date, when the money counts for interest, and the booking date, when it appeared on the statement. They differ by a day or two, and at the turn of a month they differ by a month. The table books each row on the booking date — that is the date your accounting program expects — and keeps the value date beside it in the workbook and the CSV, so nothing is lost and nothing is guessed.
MT940 makes this harder than it sounds: the booking date is written as four digits,
MMDD, with no year at all. It borrows the year from the value date next
to it, which is correct every day except around New Year, when a December booking sits
beside a January value date. That case is handled rather than ignored.
Banks commonly send a month of every account in a single file: MT940 starts each one
with a new :20:, CAMT with another <Stmt>. Each is read
as its own statement with its own balances and its own check, the account is carried
onto every row, and the summary above the table has a line per account. One file of
four accounts gives four verdicts, not an average.
The same rows in whichever shape the next program wants.
Date, value date, description, debit, credit, running balance, account, type and the bank's reference. A second sheet, Balances, holds one line per statement: opening, movements, computed closing, the bank's closing and the difference. Amounts are numbers, so the column sums.
For anything that imports a comma-separated file, including spreadsheets that refuse other people's .xlsx. Dates stay ISO, which is the one format no locale reads back wrong.
The files QuickBooks and Quicken import without column mapping, built from the rows you can see. QuickBooks Desktop needs its own bank id in the file; what is actually inside one explains why, and the box above is where it goes.
Descriptions arrive as the bank wrote them, including the ?20?
subfields MT940 uses and the remittance text CAMT buries three levels down —
gathered into one readable line, never rewritten. What
those codes mean is a page of its own.
Something else? Write to support@ocrsnip.com.
No. The parser is code running in this browser tab, and there is no endpoint on this site that could receive a file. Open the network panel of your developer tools and convert something: nothing carrying your statement leaves. That is the whole design of the site, not a setting.
Yes. The format is recognised from what is inside the file, not from its name — MT940 by its colon-delimited tags, CAMT by its XML elements. Drop whatever your bank sent. You can also paste the contents straight onto the page.
A camt.052 intraday report reads here too; it is the same structure with a different wrapper. The camt.054 notification is a different document — it reports individual credits and debits rather than a statement with balances — so it may read but will have nothing to reconcile against. The page says plainly when there are no balances to check.
First check the difference against the original: a figure that matches a single transaction usually means the bank sent two files for the period and one is missing. Our reader does not skip lines silently — if it could not read one, it says so rather than leaving it out of the count. If the difference matches nothing, send the file to support and we will look at it; a format we read wrong is a bug worth fixing, not a support ticket to close.
The free converters reshape a file you already have. This one reads a format most tools charge a monthly subscription for, checks it against the bank's own balances and hands back four formats. The first 25 rows are free so you can see the result on your own file before paying anything, and a pass is $4.99 for seven days with no subscription.