Skip to content

MT940 to CSV

Converter Tools ·
·

Parse an MT940 SWIFT bank statement into a clean CSV with date, value date, amount, debit/credit, type, reference, and description columns.

MT940 vs CSV: what’s the difference?

MT940 is the SWIFT format banks hand you when you download a statement. It’s a stack of tagged lines like :61: and :86:, designed for accounting software to ingest, not for a person to skim. CSV is the opposite: plain rows and columns that Excel, Google Sheets, and every bookkeeping app on earth understand.

So you’ve got a .sta file and your accountant wants a spreadsheet. That’s the gap this fills. Paste the statement on the left, get a table on the right. One transaction per row, ready to import, with the SEPA reference fields (end-to-end ref, mandate, purpose, counterparty name and IBAN) split into their own columns whenever your bank fills them in.

How the conversion works

Each MT940 file is a sequence of tags. The parser walks them in order and pulls out what matters:

  • :20: is the transaction reference, the statement’s header ID.
  • :25: holds the account number (IBAN or account ID). It shows up as context above the table.
  • :28C: is the statement and sequence number.
  • :60F: is the opening balance, and :62F: is the closing balance. These bracket the transactions.
  • :61: is where each line item lives, and :86: is the human-readable description that follows it.

The real work is decoding :61:. That single line packs the value date, an optional booking date, a debit or credit mark, the amount, a transaction type code like NTRF or NMSC, and a reference, all jammed together with no delimiters. The parser reads it field by field per the SWIFT spec. A D mark turns the amount negative; a C keeps it positive. Booking dates borrow their year from the value date, since :61: only stores MMDD for that part.

Then :86: gets cleaned up. Many banks use the structured form with subfield codes like ?00, ?20, ?32, and SEPA tags like SVWZ+, EREF+, MREF+. The Description column drops that scaffolding so you’re left with the readable remittance text, while the structured pieces (end-to-end reference, mandate, creditor id, purpose, counterparty name, IBAN and BIC) each get their own column. The untouched :86: is kept in a Raw column too, so nothing is lost. If your bank writes plain free-text descriptions instead, those pass straight through.

Things to watch out for

Balance lines aren’t transactions. The :60F: and :62F: tags carry the opening and closing balance, and the parser uses them as boundaries rather than turning them into rows. Your CSV holds only the actual :61:/:86: movements.

Amounts use a comma as the decimal separator in MT940, the European convention. The output converts that comma to a period (1250,00 becomes 1250.00) so spreadsheets read it as a real number. Debits come through signed with a minus, which makes summing a column trivial.

Multi-line :86: blocks get stitched together first. SWIFT wraps long descriptions across several physical lines, and any line that doesn’t start with a : is treated as a continuation of the tag above it. So a four-line remittance note ends up in one cell, not scattered across four broken rows.

Heads up on dialects. MT940 has variants, and German, Dutch, and SWIFT-reference layouts differ in how they pad fields and structure :86:. This parser targets the common SWIFT layout and the usual ?NN subfield codes. If your bank does something exotic, check the description column and adjust the input where a field looks off.

Everything runs locally in your browser. Your statement, with its account numbers and payee names, never gets uploaded.

FAQ

What’s the difference between the Date and Value Date columns?

Date is the booking date, when the bank actually posted the entry. Value Date is when the money became available for interest purposes. They’re often the same day, but not always.

Why are some amounts negative?

Debits get a minus sign so you can sum the Amount column directly. Credits stay positive. The Debit/Credit column spells it out too, in case you’d rather filter on text.

Can it open a .sta file directly?

Not yet. Open the file in any text editor (it’s plain text), copy everything, and paste it in. Takes about five seconds.

Does it handle reversals?

Yep. RC (reversal of a credit) posts as a debit, and RD (reversal of a debit) posts as a credit, matching the balance effect the SWIFT spec gives them. Both keep the correct sign in the Amount column and get a Y in the Reversal column so you can spot them.

My description has weird codes in it. What happened?

Some banks pack extra subfields into :86: that don’t follow the standard ?NN pattern. The parser keeps the readable parts. If something looks cluttered, your bank may use a custom dialect that needs the raw text trimmed by hand.

Is the comma decimal handled correctly?

Yes. MT940 uses 1234,56 style amounts, and the output rewrites them as 1234.56 so your spreadsheet treats them as numbers, not text.

converter mt940 swift csv banking

Related Tools

CSV to MT940

Converter Tools

Turn a date, amount, description CSV into a simplified MT940 statement with :20:, :25:, :28C:, :60F:, :61:/:86:, and :62F: tags. Runs in your browser.

CAMT to CSV

Converter Tools

Convert a CAMT.053 bank statement (ISO 20022 XML) into a clean CSV with date, amount, currency, credit/debit, counterparty, and reference columns.

CSV to CAMT

Converter Tools

Build a valid CAMT.053 ISO 20022 bank statement from a simple CSV. Map date, amount, currency, credit/debit, counterparty, and reference into one XML per row.

CSV JSON Converter

Converter Tools

Bidirectional converter between CSV and JSON formats with proper quoting and escaping

CSV to LaTeX Table

Converter Tools

Turn CSV data into a clean LaTeX tabular. Booktabs or hlines, bold headers, smart column alignment, and special chars escaped automatically.

ICS to CSV

Converter Tools

Turn an iCalendar .ics file into a clean CSV with Summary, Start, End, Location, Description, and Organizer columns. Runs in your browser.

OFX to CSV

Converter Tools

Convert an OFX bank or credit-card statement to CSV with Date, Amount, Type, Name, Memo, and FITID columns. Parses unclosed SGML tags in your browser.

QIF to CSV

Converter Tools

Convert a Quicken QIF file into clean CSV with Date, Amount, Payee, Category, Memo, and Cleared columns. Parses every record right in your browser.

vCard to CSV

Converter Tools

Turn .vcf contact files into a clean CSV with name, phone, email, org, title, and URL columns. Parses one card or hundreds, all in your browser.

More in Converter Tools

Cups to ML

Convert cups to milliliters for cooking and baking. 1 US cup equals 236.588 ml. Handles the US cup vs 250 ml metric cup gap, live in your browser.

Currency Converter Pro

Convert between 36+ world currencies with sample exchange rates and multi-currency view

DPI / PPI Converter

Convert between DPI/PPI, pixel dimensions, and physical print size. Give any two of pixels, inches/cm, or DPI and get the third.

Fahrenheit to Celsius

Convert Fahrenheit to Celsius instantly. C = (F - 32) x 5/9. Anchors: 32F is 0C, 212F is 100C, 98.6F is 37C. Calculates in your browser.

Feet to Inches

Convert feet to inches in your browser. One foot is exactly 12 inches, so it's simple multiplication. Live converter with a unit dropdown and reference table.

Feet to Meters

Convert feet to meters in the browser. One foot is exactly 0.3048 meters. Live converter with a unit dropdown and a quick reference table.

Gallons to Liters

Convert gallons to liters fast. 1 US gallon equals 3.78541 liters. Handles US and Imperial gallons with a live converter and reference table.

GB to MB

Convert gigabytes to megabytes. 1 GB = 1000 MB (decimal SI), with an honest note on the 1024 binary basis. Live converter for download sizes and quotas.

GB to TB

Convert gigabytes to terabytes. 1 TB = 1000 GB (decimal SI), with an honest note on the 1024 TiB binary basis. Live converter for drives and cloud storage.

Grams to Ounces Converter

Convert grams to ounces in your browser. 1 g = 0.035274 oz (1 oz = 28.3495 g). Built for cooking, mailing parcels, and weighing jewelry.

Hectares to Acres

Convert hectares to acres in the browser. One hectare is about 2.47105 acres. Live converter with a unit dropdown and a reference table for farmland and parks.

Inches to CM

Turn inches into centimeters in your browser. One inch is exactly 2.54 cm, so multiply and you're done. Live converter with a unit dropdown and reference table.

View all 62Converter Tools