Convert a SWIFT MT940 statement into a clean CSV file. Free, no signup, no size limit.
.sta, .mt940, .txt
:20: — Transaction reference:25: — Account identification:28C: — Statement and sequence number:60F: / :60M: — Opening balance (final / intermediate):61: — Statement line: value date, entry date, debit/credit mark, amount, reference:86: — Information to account owner, joined across continuation lines:62F: / :62M: — Closing balanceMT940 is not a delimited file, so opening it directly in Excel or saving it as .csv without conversion
produces one column of tag-prefixed text. Two format quirks make a naive fix worse. First,
decimal commas: an amount is written 1200,50, and a CSV opened under a
US-locale spreadsheet reads that as one thousand two hundred fifty, off by a factor of ~100 in the wrong
direction if you strip the comma instead of converting it. This converter normalises the comma to a
decimal point before writing any output.
Second, descriptions span lines: the :86: field frequently wraps onto
unlabelled continuation lines, which a naive CSV export either drops or turns into orphan rows. Here they
are appended to the :61: statement line they belong to, so the CSV stays one row per
transaction.
:61:2507150715D1200,50NDDTREF67890//BANKREF002 :86:DIRECT DEBIT INSURANCE CONTINUATION LINE FOR INSURANCE
becomes one CSV row: date 2025-07-15, direction DEBIT, amount -1200.50, and the full description including the continuation line.
No. Everything runs in your browser — there is no server component. You can verify with your browser's network tab, or save the page and use it offline.
Comma works for US/UK Excel and most import tools. If your Excel is set to a European locale, the comma is treated as the decimal separator and a comma CSV will split amounts across two columns — download the semicolon version instead.
Yes, though it is being replaced by CAMT.053 under ISO 20022. Many banks still deliver MT940 alongside the newer XML format.
MT942 (interim transaction report) uses the same :61: and :86:
structure, so it generally parses correctly here as well.