📊 MT940 to CSV

Convert an MT940 statement to CSV — one row per transaction, ready for Excel, Sheets or your bookkeeping import. Converted in your browser; nothing is uploaded.

Your statement stays on your device. This page reads the file with JavaScript in your browser. Nothing is uploaded, and it keeps working with your network disconnected.
📄
Drop your MT940 file here
or click to browse — .sta, .mt940, .940, .txt
MT940 & MT942 · .sta .mt940 .940 .txt · up to 20 MB
…or paste the statement text instead

MT940 to CSV, in your browser

Your bank hands you a .sta file; your spreadsheet wants columns. This converter reads the MT940 (or MT942) statement and writes one CSV row per transaction — date, amount, counterparty, IBAN and every SEPA reference the statement carried.

The conversion runs entirely in your browser. Drop the file, check the preview, download the CSV. Nothing is uploaded, so it's safe to use with a live account statement.

Nothing is uploaded. The parser is JavaScript running on your machine. Load the page, disconnect from the internet, and the conversion still works.

Columns in the CSV

Every row is one :61: statement line, enriched with the matching :86: narrative:

  • Statement and Account — statement number and the account IBAN, so multi-page files stay traceable
  • Value date and Entry date — ISO YYYY-MM-DD, which spreadsheets sort correctly
  • Type and Type description — the SWIFT code (NTRF, NDDT…) and what it means
  • Description — the purpose text, unpacked from whichever :86: dialect your bank uses
  • Counterparty, Counterparty IBAN, Counterparty BIC
  • End-to-end reference, Mandate reference, Creditor ID — the SEPA fields (EREF, MREF, CRED)
  • Customer reference and Bank reference — both halves of the :61: reference
  • Currency, Debit, Credit and a signed Amount — separate debit/credit columns for bookkeeping imports, plus one signed column for pivot tables

Getting it into Excel cleanly

Semicolons for European Excel

If your Windows regional settings use a comma as the decimal separator, Excel expects a semicolon-delimited CSV and will jam a comma-delimited file into one column. Tick Use semicolons above and it opens correctly on double-click.

The BOM keeps accents intact

Excel assumes a CSV is in your system's legacy codepage unless the file starts with a UTF-8 byte-order mark. The BOM is on by default, which is why MÜLLER GMBH and ŠKODA survive. Untick it if you're feeding the file to a script that would rather not see it.

Formulas can't sneak in

A payment reference is text a stranger typed. If a cell begins with =, +, - or @, spreadsheets treat it as a formula — the classic CSV injection trick. Those cells get a leading apostrophe, so they stay text.

How to convert

1

Add your MT940 file

Drop the .sta, .940 or .mt940 file above, or paste the raw text.

2

Check the preview

The CSV appears immediately. Switch to the Statement tab if you want to eyeball the balances first.

3

Download

Pick your delimiter and download. Or copy it straight to the clipboard and paste into Sheets.

Security & privacy

  • Converted on your device — the file is never sent anywhere
  • Works offline once the page has loaded
  • No signup, no limit on conversions
  • CSV injection blocked so a payment reference can't run as a formula

Frequently Asked Questions

No. The conversion is JavaScript running in your browser. Disconnect your network after the page loads and it still converts.
Your Excel is set to a locale that uses the comma as a decimal separator, so it expects semicolon-delimited CSV. Tick Use semicolons above and download again.
Both. Separate Debit and Credit columns for accounting imports that expect them, plus a signed Amount column (negative for debits) for pivot tables and quick sums.
Yes. Every statement in the file is converted, and the statement number is kept in its own column. If a page's closing balance doesn't line up with the next page's opening balance, you'll see a warning — that means a page is missing before you import anything.
SWIFT writes 1234,56 with a comma. It's read as 1234.56 and written to the CSV with a dot, which is what spreadsheets and import scripts expect.