MT940 is the SWIFT customer statement message — the format banks have used for decades to send end-of-day account statements to corporate clients. It is being retired in favour of ISO 20022 camt.053 (the MT↔MX coexistence period ends in November 2026), but billions of lines of MT940 are still produced daily and every bank statement parser in production still has to read it. This reference covers every tag you will actually meet, in the order it appears in a statement.
The tag reference
| Tag | Name | Format | Notes |
|---|---|---|---|
| :20: | Transaction Reference Number | 16x | Sender's reference for the whole statement. Always present. |
| :21: | Related Reference | 16x | Optional — links the statement to a prior instruction (e.g., a :202: request). |
| :25: | Account Identification | 35x | The account being reported — usually the IBAN, sometimes a domestic account number or IBAN in an odd format. |
| :28C: | Statement Number / Sequence Number | 5n[/5n] | e.g. 00042/001 — statement 42, page 1. Multi-page statements share the first number. |
| :60F: / :60M: | Opening Balance | C/D YYMMDD CCC amount | F = first, M = intermediate (page 2+ of a long statement). Amount uses a comma as decimal separator. |
| :61: | Statement Line | complex | One per transaction. Anatomy decoded below — the field everyone searches for. |
| :86: | Information to Account Owner | 6×65x | The remittance/remark text that follows a :61:. Either free text or structured ?NN subfields / SEPA tags. |
| :62F: / :62M: | Closing Balance | C/D YYMMDD CCC amount | F = final (last page), M = intermediate (carried to next page). The value every reconciliation checks. |
| :64: | Available Balance | C/D YYMMDD CCC amount | Current cleared/available balance — often different from the closing book balance. |
| :65: | Forward Available Balance | C/D YYMMDD CCC amount | Projected balance at a future value date (pending debits). Can repeat. |
| :90D: / :90C: | Summary totals | count CCC amount | Number and sum of debit (:90D:) or credit (:90C:) entries in the statement. |
| :NS: | Non-SWIFT Extension | 65x | Bank-specific data — some banks hide proprietary structured info here. |
Anatomy of a :61: statement line
A single :61: line packs up to ten subfields:
:61:2609210921D1000,00NTRFNONREF//E2E-001
└─┬─┘ └─┬┘ └─┬─┬───┘└┬┘└──┬──┘└─┬───┘
value entry D/ amt funds tx cust //bank
date date C code code ref ref- Value date —
YYMMDD, always present. - Entry date — optional
MMDD(booking date; may differ from value date). - Debit/credit mark —
C,D, or the reversal marksRC/RD. - Funds code — optional single letter (S = same-day, V = value-date, B = booked).
- Amount — comma as decimal separator:
1000,00. - Transaction type —
N+ 3-letter code (see table below). - Customer reference —
NONREFor a reference, up to the//delimiter. - Bank reference — after
//: the bank's own entry ID. - Supplementary details — free text that may spill onto the next physical line.
Debit/credit marks
| Mark | Meaning |
|---|---|
| C | Credit — money in. |
| D | Debit — money out. |
| RC | Reversal credit — reverses a previous debit. Money effectively comes back to you. |
| RD | Reversal debit — reverses a previous credit. Money is effectively taken back. |
Parsers trip over RC/RD constantly: an RD entry must be treated as negative — a returned direct debit shows as RD, not as a normal debit.
Transaction type codes
The letter after the amount identifies the transaction class. Common codes:
| Code | Meaning |
|---|---|
| NTRF | Transfer — ordinary SEPA credit transfers and most payments. |
| NDDT | Direct debit — a SDD collection charged to the account. |
| NMSC | Miscellaneous — catch-all for bank-specific postings. |
| NCHK | Cheque. |
| NBNK | Bank charges / fees. |
| NINT | Interest credit or debit. |
| NCMZ | Cash management sweep / zero balancing. |
| NCCO / NRCR | Card payment / card receipt (acquiring settlement). |
| NEXN | External transfer — FX or cross-border payments. |
Structured :86: — the remittance tag
The :86: field either contains free text or a structured form that starts with a transaction-type ?00 code, then subfields tagged ?NN. German-language banks (and most SEPA MT940s) use the structured variant:
| Subfield | Content |
|---|---|
| ?00 | Posting text / transaction class ("SEPA UEBERWEISUNG"). |
| ?10 | Original posting text. |
| ?20–?29 | Remittance lines — free text or SEPA tags (below). |
| ?30 | Counterparty BIC. |
| ?31 | Counterparty IBAN / account number. |
| ?32, ?33 | Counterparty name (continues across both). |
| ?34 | SEPA purpose code. |
| ?60–?63 | Additional remittance text. |
Inside the ?20–?29 lines, SEPA remittance is packed as four-letter tags:
| Tag | Maps to (camt) | Content |
|---|---|---|
| EREF+ | EndToEndId | End-to-end reference — the invoice or mandate ref you need for reconciliation. |
| SVWZ+ | RmtInf/Ustrd | SEPA remittance text (unstructured). |
| CRED+ | CdtrSchmeId | Creditor scheme identifier (SDD collections). |
| MREF+ | MndtId | Mandate reference (SDD). |
| PURP+ | Purp | SEPA purpose code (SALA, PENS, etc.). |
| ABWA+ / ABWE+ | RltdPties | Alternative / corrected counterparty name. |
| RTRN+ | RtrInf | Return reason code for rejected/returned payments. |
A worked example
:61:2609210921D1000,00NTRFNONREF//E2E-001 :86:020?00SEPA UEBERWEISUNG?20SVWZ+Invoice INV-1042?30DEUTDEFF?31DE89370400440532013000?32Supplier One Ltd
- Debited 1,000.00 on 21 September 2026 (value date = entry date).
- Type NTRF — an ordinary transfer; bank reference E2E-001.
- Structured :86: says it was a SEPA transfer with remittance "Invoice INV-1042", paid to Supplier One Ltd (DE8937...3000 via DEUTDEFF).
Try it on real data
Paste a statement into the MT940 to CSV converter to see every field decoded in a table, or convert the same file to ISO 20022 with the MT940 → camt.053 converter to see how each tag maps across — our MT940 → camt.053 migration guide covers the coexistence deadline and what changes at the message level.
Frequently Asked Questions
What is tag :86: in an MT940?
:86: is "Information to Account Owner" — the remittance/remark text attached to the preceding :61: transaction line. In SEPA statements it is usually structured: a ?00 posting code followed by ?NN subfields carrying the counterparty name (?32/?33), IBAN (?31), BIC (?30), and the SEPA remittance tags EREF+, SVWZ+, CRED+, and MREF+.
What is the difference between :62F: and :64:?
:62F: is the final book balance of the statement period — what the ledger showed at the statement's closing date. :64: is the available balance — what you could actually withdraw at generation time, after holds and pending debits. Reconciliation should tie against :62F:, not :64:.
What do C, D, RC, and RD mean in :61:?
C is a credit and D a debit. RC and RD are reversal marks: RC reverses a previous debit (money comes back), RD reverses a previous credit (money is taken back — e.g., a returned direct debit). Treat RD entries as negative amounts when summing.
Why does the amount use a comma?
SWIFT MT formats use the comma as the decimal separator and no thousands separator:1234567,89. Parsers that assume a dot will either mis-parse or return NaN — normalise the comma before converting to a number.




