# MT940 to OFX: Bank Statement Files from Business Banks

- Author: SimpleBankConvert (https://www.simplebankconvert.com)
- Published: 2026-02-04
- Updated: 2026-02-04
- Category: Import file formats
- Canonical: https://www.simplebankconvert.com/blog/mt940-to-ofx

> MT940 to OFX explained: what an MT940 bank statement file is, why business banks send it and how to convert it to OFX or CSV for QuickBooks or Xero.
MT940 to OFX conversion takes the statement file a business bank produces in the SWIFT MT940 layout and rewrites it as an OFX statement. MT940 lists balances and transactions as tagged lines such as :61: and :86:. A converter reads those tags and writes OFX transactions, or a CSV, that QuickBooks or Xero can import.

## What is an MT940 bank statement file?

An MT940 bank statement file is a plain text account statement laid out as a SWIFT message, the MT940 customer statement. It holds an account number, an opening balance, a list of transactions and a closing balance, each on a line that starts with a numbered tag. It is data meant for software, not a document to print.

Open one in a text editor and you see short lines like `:25:` and `:60F:` followed by values. Each tag names a field. [ING Business's MT940 and MT942 format description](https://business.ing.ro/ing2/ingdocuments/MT940-MT942-file-formats.pdf) lists the order for its files: a reference in :20:, the account in :25:, the statement number in :28C:, the opening balance in :60:, then a repeating pair of :61: statement lines and :86: details, and finally the closing balance in :62: and an optional available balance in :64:.

Banks build their files on that shared skeleton but fill some fields their own way, especially :86:. That is why the bank's own format guide is the best reference for your files.

### MT940 and MT942

You may also see MT942 files from the same bank. ING's guide covers both together. As a rule of thumb, MT940 is the end-of-day statement with booked balances, and MT942 is an interim report during the day. For bookkeeping, import the MT940 and ignore the MT942, or you risk bringing in lines twice.

## Reading the :61: and :86: lines of an MT940 statement

The :61: line carries each transaction's date, debit or credit mark, amount and type code. The :86: line that follows it carries the free text: payee, purpose and references. A converter needs both, because the amount lives on :61: and the description you recognize lives on :86:.

ING's guide gives this sample statement line:

```
:61:070202DR2950,00NTRF0,198//PA070202-15335
```

Taken apart, using ING's own field list:

| Piece | Field | Meaning in this sample |
| --- | --- | --- |
| 070202 | Value date, YYMMDD | 2 February 2007 |
| (absent) | Entry date, MMDD | Optional; when missing, it equals the value date |
| D | Debit or credit mark | D, so money out |
| R | Funds code | The third letter of the currency code |
| 2950,00 | Amount | 2,950.00, with a comma as the decimal mark |
| NTRF | Transaction type code | A funds transfer |
| 0,198 | Reference for the account owner | The customer's reference |
| //PA070202-15335 | The bank's own reference | Starts with PA, a bank-initiated transfer |

The guide lists four values for the debit or credit mark: D for debit, C for credit, RD for a reversal of a debit and RC for a reversal of a credit. It also lists type codes such as NTRF for a transfer, NLDP for a loan or deposit and NFEX for foreign exchange.

The :86: line after it is limited to six lines of 65 characters in ING's layout. That is where the counterparty name and payment details sit. Converters usually turn it into the payee and memo in OFX, or the description column in a CSV.

## Why do business banks send MT940 instead of OFX?

Business banks send MT940 because it is the statement format that corporate treasury and ERP systems have read for decades. It came from bank-to-bank messaging, so it fits multi-account, multi-currency reporting. OFX grew up around consumer money software, so many business banking portals never offered it.

That history shows in the files. ING's guide notes that its portal can export statements for several accounts and several dates in one MT940 file. That suits a finance team loading everything into an ERP each morning. It suits a small business owner with QuickBooks less well.

Many banks now also offer camt.053, the XML statement from the ISO 20022 family, alongside or instead of MT940. Look at your bank portal's export options before you convert anything. A CSV or OFX export, if the bank has one, saves the whole conversion step.

Some banks offer a TXT export that is not MT940 at all but a plain table. If your file has no `:61:` lines, it is probably that kind, and [converting a TXT bank file to OFX](/blog/convert-txt-to-ofx) is the closer guide.

## Mapping MT940 tags onto OFX statement fields

Mapping MT940 to OFX is mostly direct: :25: becomes the account number, :60F: and :62F: become the balances, and each :61: and :86: pair becomes one OFX transaction. The converter rewrites dates as eight digits, turns the debit mark into a minus sign, and builds a unique transaction ID.

| MT940 tag | MT940 content | OFX field | Converter's job |
| --- | --- | --- | --- |
| :25: | Account identification | ACCTID | Copy the account number, minus any bank code prefix |
| :60F: | Opening balance with date and currency | CURDEF, DTSTART | Take the currency and the start date |
| :61: value date | YYMMDD | DTPOSTED | Add the century: 070202 becomes 20070202 |
| :61: D or C mark | Debit or credit | TRNTYPE and the sign of TRNAMT | D gives a negative amount, C a positive one |
| :61: amount | Comma decimal | TRNAMT | 2950,00 becomes -2950.00 for a debit |
| :61: references | Owner and bank references | FITID | Use the bank reference if unique, or build one |
| :86: | Free text | NAME and MEMO | Split the counterparty name from the rest |
| :62F: | Closing balance | LEDGERBAL | Copy the balance and its date |

The FITID is the field to watch. OFX readers use it to skip lines they have already imported. The bank reference after `//` is usually unique per transaction, which makes it a good source. If your bank leaves it blank, the converter must build an ID from the date, amount and a counter.

## MT940 to OFX or MT940 to CSV for QuickBooks and Xero

For QuickBooks Online, either works: [Intuit's guide to uploading transactions manually to QuickBooks Online](https://quickbooks.intuit.com/learn-support/en-us/help-article/import-transactions/manually-upload-transactions-quickbooks-online/L0rE9OXBz_US_en_US) lists OFX, QBO and CSV among the accepted files. For QuickBooks Desktop, convert to QBO. For Xero, a CSV laid out for its statement import is the simple choice.

Each target has a trade-off:

- **OFX for QuickBooks Online.** No column mapping, and the file carries transaction IDs. Intuit's page also sets limits for any upload: 350 KB or less and up to 1,000 lines per file.
- **CSV for QuickBooks Online.** Easy to check in a spreadsheet first. Intuit's page says a CSV needs either three columns (date, description, amount) or four (date, description, credit, debit).
- **QBO for QuickBooks Desktop.** Desktop reads bank files through Web Connect. An OFX file is close, but not the same. [Converting QFX or OFX to QBO](/blog/qfx-to-qbo-converter) explains the extra header.
- **CSV for Xero.** Lay it out with date, amount, payee and reference in their own columns.

If you work on a Mac and end up with a CSV that you then want as QBO, [converting CSV to QBO on a Mac](/blog/convert-csv-to-qbo-on-a-mac) covers how to keep Numbers or Excel from changing the dates on the way.

Before the first upload, check the account itself. The bank account in QuickBooks should match the MT940 account, its currency and its opening balance. [Bank details in QuickBooks Online](/blog/bank-detail-in-quickbooks-online) covers where those settings live.

## MT940 downloads that hold several accounts or days

An MT940 download can hold several statements, one per account per day, stacked in a single file. Each one starts with its own :20: and :25: lines and ends with its own closing balance. A converter must split them, because one OFX file or one QuickBooks upload describes a single account.

ING's guide says plainly that all statements for all requested accounts and working dates arrive in one file. A month of daily statements for three accounts can therefore hold about sixty separate statements.

Handle it in this order:

1. Search the file for `:25:`. Count the distinct account numbers.
2. Ask the converter to write one output file per account. If it cannot, split the text file by account first.
3. For each account, check that the closing balance of one day equals the opening balance of the next. A gap means a day is missing.
4. Watch the size. A month of busy daily statements may pass the 1,000 line limit for one QuickBooks Online upload. Split by date if it does.

Days with no transactions still appear in many MT940 files as a statement with an opening and closing balance and no :61: lines. They are harmless. A converter should skip them without writing an empty OFX file.

## Comma decimals and reversal codes that MT940 conversions get wrong

The two errors that slip through most often are amounts read with the wrong decimal mark and reversals given the wrong sign. MT940 writes amounts with a comma, so 2950,00 is two thousand nine hundred fifty. Reversal codes RD and RC flip the meaning of D and C.

Check a converted file for these problems:

- **Comma decimals.** A converter that treats the comma as a thousands separator turns 2950,00 into 295000. Compare three amounts with your bank portal.
- **Reversals.** RD, a reversal of a debit, puts money back into the account. It should be a positive amount. RC takes money out and should be negative. A converter that only looks at the first letter gets both backwards.
- **Two-digit years.** Value dates use YYMMDD. A converter should treat 26 as 2026. Look at the first and last date in the output.
- **Funds code.** The letter between the debit mark and the amount, such as R, is not part of the amount. A sloppy reader may fail on it or drop the line.
- **Long :86: text.** A six-line :86: field may be cut off at the first line break. Check that payees are not all blank or all the same.

After converting, add up the amounts for one statement and add them to the opening balance. The result should equal the :62F: closing balance. This one sum catches every error above.

SimpleBankConvert works from PDF bank statements rather than MT940 files. If your business bank also provides PDF statements, it is in early access and is being built to make CSV files for Xero and CSV or QBO files for QuickBooks Online. [Get started with SimpleBankConvert](/get-started) to hear when accounts open.
