Skip to content

Guide

camt.053 vs MT940: differences and field-by-field mapping

Both are the end-of-day bank statement: the same balances and the same entries. MT940 packs them into short text fields; camt.053 spells them out in XML, with room for the references, parties and codes that MT940 squeezes into one free-text field. Here is what differs, and where every MT940 field goes in a camt.053.

What differs

MT940 and camt.053 compared
AspectMT940camt.053
FormatTagged text fields (:20:, :61: …), optionally in a SWIFT FIN envelopeXML, validated against a published schema
CharactersThe SWIFT character set: no accents or umlauts on the SWIFT networkUTF-8: names and text as written
AmountsComma decimal, no sign; a D/C mark gives the directionPoint decimal, never negative; CdtDbtInd (CRDT, DBIT) gives the direction
Entry typeA three-letter code after N, S or F (NTRF, NCHG), chosen per bankAn ISO bank transaction code in three levels (PMNT/RCDT/ESCT), plus an optional proprietary one
References16 characters for the customer’s and the bank’s reference35 characters; separate end-to-end id, instruction id, mandate id and UETR
CounterpartyInside :86:, in a bank-specific layoutStructured: name, account, bank and address in their own elements
RemittanceInside :86:, 6 lines of 65 characters in allUnstructured text or a structured creditor reference (RF) in RmtInf
BatchesOne :61: per booking; the detail of a batch is not thereA batch entry can list every transaction in TxDtls (or a camt.054 does)
ReturnsA returned-item code (NRTI) and text in :86:A return reason code in RtrInf and the original references
Balances:60F: opening, :62F: closing, :64: available, :65: forwardBal with a type code each: OPBD, CLBD, CLAV, FWAV …
Long statementsSplit into pages (:28C: page number, :62M: / :60M:)Pagination elements, rarely needed

What a camt.053 gains is mostly structure: an accounting system can match an incoming payment on its end-to-end id and its bank transaction code, and route a return by its reason code, instead of parsing a bank’s :86: layout.

Field-by-field mapping

The mapping the MT940 Viewer and the convert endpoint use to turn an MT940 into camt.053.001.08 (urn:iso:std:iso:20022:tech:xsd:camt.053.001.08): one Stmt per statement, one Ntry with one TxDtls per :61:.

MT940 to camt.053.001.08 mapping
MT940camt.053.001.08Note
:20: Transaction ReferenceStmt/Id
:21: Related Reference—Not carried over (camt.053 has no place for the MT920 request reference).
:25: AccountStmt/Acct/Id/IBAN, else Acct/Id/Othr/IdAn IBAN that passes mod-97 goes in IBAN; anything else in Othr/Id (34 characters at most).
:25P: identifier codeStmt/Acct/Ownr/Id/OrgId/AnyBICThe account owner’s BIC (field 25a identifies the account and, optionally, its owner). An identifier code that is not a BIC is left out.
:25: BIC/account, or the SWIFT headerStmt/Acct/Svcr/FinInstnId/BICFIThe bank that services the account: a BIC written before the account in :25:, else the bank that sent the statement (the sender in block 2 of a SWIFT output message, or in block 1 of an input one).
:28C: Statement number / pageStmt/ElctrncSeqNb, Stmt/StmtPgntn/PgNbLastPgInd is true for :62F:, false for :62M:.
:60F: / :60M:Bal Tp OPBD:60M: and :62M: carry the sub-type code INTM (Bal/Tp/SubTp/Cd, an intermediate balance carried to the next page) so the page break stays visible.
:62F: / :62M:Bal Tp CLBD
:64:Bal Tp CLAV
:65:Bal Tp FWAV (one per :65:)
:61: value date / entry dateNtry/ValDt/Dt, Ntry/BookgDt/DtWithout an entry date the booking date is the value date. The entry date’s year is the one closest to the value date.
:61: D/C markNtry/CdtDbtInd, Ntry/RvslIndC → CRDT, D → DBIT, RD → CRDT + RvslInd, RC → DBIT + RvslInd (the indicator gives the booking’s actual direction). EC/ED (MT942 expected entries) are refused.
:61: amountNtry/Amt (+ TxDtls/Amt)Comma decimal to point, written with the currency’s decimals.
:61: transaction type (NTRF, S103 …)Ntry/BkTxCd/Prtry/Cd, Issr SWIFTNot mapped to ISO domain/family/sub-family codes: the MT codes are too coarse for that to be reliable.
:61: reference for the account ownerTxDtls/Refs/AcctOwnrTxIdNONREF is dropped; 35 characters at most.
:61: //bank referenceNtry/AcctSvcrRef35 characters at most.
:61: supplementary detailsTxDtls/AddtlTxInf
:86: (after a :61:)Ntry/AddtlNtryInf and TxDtls/RmtInf/UstrdThe full text is kept (500 characters at most in AddtlNtryInf; Ustrd in 140-character parts). Structured :86: lines join as written (they are wrapped mid-word), free-text lines with a space.
:86: ?20–?29 / /REMI/ remittanceTxDtls/RmtInf/UstrdFrom structured :86: the remittance lines (or SVWZ+) are used instead of the whole text.
:86: ?32/?33, /NAME/, /CNTP/TxDtls/RltdPties/Dbtr (credits) or Cdtr (debits)/Pty/Nm
:86: ?31, /IBAN/TxDtls/RltdPties/DbtrAcct or CdtrAcct
:86: ?30, /BIC/TxDtls/RltdAgts/DbtrAgt or CdtrAgt (BICFI, else clearing member id)
:86: EREF+ / /EREF/TxDtls/Refs/EndToEndId
:86: MREF+ / /MARF/TxDtls/Refs/MndtId
:86: at the end of the statementStmt/AddtlStmtInf
(none)GrpHdr/CreDtTm, Stmt/CreDtTmMT940 carries no creation time: both are the time of the conversion.
(computed)Stmt/TxsSummryCounted and summed from the :61: lines.

What a conversion cannot add

A converted file carries what the MT940 says and nothing more, so the camt.053 your bank produces for the same account usually holds more:

  • Transaction types stay proprietary codes (BkTxCd/Prtry, issuer SWIFT): NTRF does not say whether a transfer was SEPA, domestic or cross-border, so an ISO code would be a guess.
  • Unstructured :86: text stays text; only subfields the converter recognizes become parties, accounts, references and remittance.
  • Batch detail, return reason codes and UETRs that the bank never put in the MT940 cannot appear in the camt.053.
  • Creation times are the time of the conversion: MT940 has none.

A conversion is a bridge for a system that only reads camt.053 while a bank still sends MT940. For the long run, ask the bank for camt.053 itself; the migration guide has a checklist.