Skip to content

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.

CSV vs MT940, and why anyone needs to bridge them

CSV is what you get out of a spreadsheet. MT940 is what banks and a lot of accounting software speak. Both describe the same thing, money moving in and out of an account, but they look nothing alike. One’s a grid of columns. The other is a stack of cryptic SWIFT tags like :60F: and :61:, each with its own field order and a comma instead of a dot for the decimal.

So when a finance tool says “import an MT940 file” and all you have is a CSV, you’re stuck. That’s the gap this fills. Paste rows on the left, get a statement block on the right.

How the conversion works

Three columns do the heavy lifting: a date, an amount, and a description. A fourth column, reference, is optional. The tool reads your header row to find them, so date,amount,description works, and so does Value Date,Sum,Narrative. No header? Switch the toggle off and it falls back to column order instead.

Here’s what each row becomes. The amount’s sign decides direction: a positive number turns into a credit (C), a negative one into a debit (D), and that drives the :61: line. The description lands in the matching :86: line right below, wrapped at 65 characters so it doesn’t blow past the SWIFT line limit. Dates get normalized to YYMMDD, whether you typed 2024-03-01, 01/03/2024, or an already-coded 240301.

Balances are where people trip. You set the opening balance, and it’s stamped into :60F: with the date of your first transaction. Then the tool walks every row, adding credits and subtracting debits, and writes the result into :62F:. The math runs in integer cents, so you won’t see a rogue 0.30000004 creeping in from floating point.

A small header block sits up top: :20: for the transaction reference, :25: for your account number, and :28C: for the statement number. All three are yours to set.

A worth-knowing caveat

This produces a simplified MT940. Real bank exports carry extra detail: structured :86: subfields, an envelope of {1:} and {4:} blocks around the message, sometimes a :34F: floor limit. None of that is here. What you get is a clean, minimal statement that’s good for testing an importer, prototyping a reconciliation flow, or feeding software that accepts a basic block. If your auditor needs a byte-perfect file, this isn’t that.

The transaction type defaults to NTRF (a transfer) for every line, since a plain CSV doesn’t say whether a row is a card payment, a standing order, or a fee. Edit the output afterward if you need different codes.

When you’d reach for this

You’re testing an accounting integration and need sample MT940 input fast. Your bookkeeping app only swallows MT940, but your transaction log lives in Sheets. Or you’re learning the format and want a real-ish statement without waiting on a bank export. Drop the data, tweak the account and opening balance, hit Download, and you’ve got an .sta file (or .txt) in seconds. It all runs locally, so account numbers and amounts never leave the page.

FAQ

What columns does my CSV need?

Date, amount, and description, in that order or named in a header. Reference is optional and fills the :61: reference field. Anything beyond those four columns is ignored.

How do debits and credits get decided?

By the sign of the amount. Negative is a debit, positive is a credit. Write -89.99 for money leaving the account and 1250.00 for money coming in.

Is this a real, bank-grade MT940 file?

Nope. It’s a simplified statement with the core tags. It skips the SWIFT message envelope and the structured subfields a production export carries, so treat it as a starting point, not a certified document.

What date formats can I paste?

ISO (2024-03-01), day-first slashes (01/03/2024), dotted dates, or a bare YYMMDD code. They all get converted to the YYMMDD form MT940 uses internally.

Does my financial data get uploaded?

No. The parsing and the balance math both run in JavaScript on your device. Nothing is sent anywhere, which is the whole point when the file is real account activity.

Why does the closing balance look off by a cent sometimes?

It shouldn’t. The running total is computed in whole cents to dodge floating-point drift. If it’s wrong, check that every amount parsed correctly, since a row with an unreadable amount gets skipped and flagged in the notes above the output.

mt940 csv banking swift converter

Related Tools

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.

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

MB to GB

Convert megabytes to gigabytes. Uses 1 GB = 1000 MB (decimal SI), and explains the 1024 GiB vs 1000 GB difference honestly. Live, browser-side.

Meters to Feet

Convert meters to feet in your browser. One meter equals 3.28084 feet. Live converter with a unit dropdown and a reference table for heights and distances.

Meters to Yards

Convert meters to yards in your browser. One meter is about 1.09361 yards. Live converter with a unit dropdown plus a reference table for track and fabric.

Miles to KM

Convert miles to kilometers in your browser. One mile equals exactly 1.609344 km. Live converter with a unit dropdown and a quick reference table.

ML to Cups

Convert milliliters to cups for recipes. 1 US cup equals 236.588 ml. Handles the US cup vs metric 250 ml cup difference, live in your browser.

MM to Inches

Convert millimeters to inches right in the browser. 1 inch is 25.4 mm, so 1 mm equals 0.0393701 inches. Live converter with a unit dropdown and reference table.

mph to km/h

Convert miles per hour to kilometers per hour instantly. 1 mph equals 1.609344 km/h. Live converter with US speed limits mapped to metric.

Number System Converter

Convert between binary, octal, decimal, hexadecimal, and any base from 2 to 36

Ounces to Grams Converter

Convert ounces to grams instantly. 1 oz = 28.3495 g. Made for following recipes and pricing postage when your scale only reads metric.

PSI to Bar

Convert psi to bar instantly. 1 psi equals 0.0689476 bar. Live pressure converter that turns US tire pressures like 32 to 35 psi into bar. Browser-side.

Square Feet to Square Meters

Convert square feet to square meters in your browser. One sq ft is 0.092903 sq m. Live converter with a unit dropdown and a reference table for floor areas.

Stone to Pounds Converter

Convert stone to pounds instantly. 1 stone = 14 lb exactly (about 6.35029 kg). The standard way the UK and Ireland talk about body weight.

View all 62Converter Tools