Reference
ISO 20022 reference: messages, codes and MT940
Message families, balance types, bank transaction codes, statuses and reasons, validation rules and MT940 fields, with the MT940 to camt.053 mapping.
Generated from the tables the viewers and the API use: 20 messages, 10 balance types, 58 reason codes, 72 validation rules.
On this page
Every table on this page comes from the code lists the camt Statement Viewer, the Payment File Viewer, the MT940 Viewer and the API use to read, explain and check files. What you read here is what the tools apply.
ISO 20022 message families
ISO 20022 messages are named by business area and number: camt (cash management) for statements and reports, pain (payments initiation) for what a company sends its bank and gets back, pacs (payments clearing and settlement) for payments between banks. The 6 messages with a viewer are parsed and validated; the others are recognized (the detect operation names them) but not parsed.
| Message | Name and purpose | Flow | MT equivalent | On this site |
|---|---|---|---|---|
| Cash management (camt) | ||||
| camt.053<BkToCstmrStmt> | Bank-to-customer statementThe end-of-day account statement: opening and closing balances and every booked entry of the period. | Bank → account owner | MT940 / MT950 | camt Statement Viewer |
| camt.052<BkToCstmrAcctRpt> | Bank-to-customer account reportIntraday (or interim) account report: balances so far and entries booked or pending during the day. | Bank → account owner | MT941 / MT942 | camt Statement Viewer |
| camt.054<BkToCstmrDbtCdtNtfctn> | Bank-to-customer debit/credit notificationAdvice of individual debits or credits, often the detail behind a batch entry on the statement. | Bank → account owner | MT900 / MT910 | camt Statement Viewer |
| camt.056<FIToFIPmtCxlReq> | FI-to-FI payment cancellation requestAsks the next bank to cancel (recall) a payment. | Bank → bank | MT192 / MT292 | Recognized, not parsed |
| camt.029<RsltnOfInvstgtn> | Resolution of investigationThe answer to a cancellation request or an investigation. | Bank → bank or customer | MT196 / MT296 | Recognized, not parsed |
| camt.055<CstmrPmtCxlReq> | Customer payment cancellation requestA customer asks its bank to cancel a payment it initiated. | Account owner → bank | — | Recognized, not parsed |
| camt.060<AcctRptgReq> | Account reporting requestAsks the bank for a statement or report (camt.052/053/054). | Account owner → bank | MT920 | Recognized, not parsed |
| Payments initiation (pain) | ||||
| pain.001<CstmrCdtTrfInitn> | Customer credit transfer initiationA batch of credit transfers (supplier payments, payroll, wires) sent by a company to its bank. | Account owner → bank | MT101 | Payment File Viewer |
| pain.008<CstmrDrctDbtInitn> | Customer direct debit initiationA batch of direct debits a creditor asks its bank to collect, with the mandate behind each. | Creditor → bank | MT104 | Payment File Viewer |
| pain.002<CstmrPmtStsRpt> | Customer payment status reportThe bank’s answer to a pain.001 or pain.008: accepted, pending or rejected, per file, block or transaction, with reason codes. | Bank → account owner | — | Payment File Viewer |
| pain.007<CstmrPmtRvsl> | Customer payment reversalReverses a direct debit that was already collected. | Creditor → bank | — | Recognized, not parsed |
| pain.013<CdtrPmtActvtnReq> | Creditor payment activation requestA request to pay sent to a debtor. | Creditor → debtor (via banks) | — | Recognized, not parsed |
| pain.014<CdtrPmtActvtnReqStsRpt> | Creditor payment activation request status reportThe debtor’s answer to a request to pay. | Debtor → creditor (via banks) | — | Recognized, not parsed |
| Payments clearing and settlement (pacs) | ||||
| pacs.008<FIToFICstmrCdtTrf> | FI-to-FI customer credit transferThe interbank customer payment: what Fedwire, CHAPS, TARGET2 and SWIFT cross-border (CBPR+) carry. | Bank → bank | MT103 | Recognized, not parsed |
| pacs.009<FICdtTrf> | Financial institution credit transferA bank-to-bank transfer for the banks’ own account (cover payments, liquidity). | Bank → bank | MT202 / MT202COV | Recognized, not parsed |
| pacs.002<FIToFIPmtStsRpt> | FI-to-FI payment status reportInterbank status of a pacs payment: accepted, settled or rejected with a reason. | Bank → bank | — | Recognized, not parsed |
| pacs.004<PmtRtr> | Payment returnReturns the funds of a settled payment (wrong account, closed account, refund). | Bank → bank | — | Recognized, not parsed |
| pacs.003<FIToFICstmrDrctDbt> | FI-to-FI customer direct debitThe interbank leg of a direct debit. | Bank → bank | — | Recognized, not parsed |
| Business application header (head) | ||||
| head.001<AppHdr> | Business application headerThe envelope header (sender, receiver, message id, message definition) that travels with a message on SWIFT and RTGS networks. | Any | — | Recognized, not parsed |
| Administration (admi) | ||||
| admi.002<MsgRjct> | Message rejectA technical rejection of a message that could not be processed. | Any | — | Recognized, not parsed |
Versions and namespaces
A message identifier has four parts: business area, message number, variant and version. camt.053.001.08 is version 08 of variant 001 of camt.053. The XML namespace carries the full identifier:
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.08">
<BkToCstmrStmt>…</BkToCstmrStmt>
</Document>- The viewers and the API read versions
.001.02to.001.13of each supported message, with or without a namespace prefix (<Document>or<ns2:Document>). - Without a namespace, a message is recognized by the element under
<Document>: the root element in the table above. - Versions add elements and sometimes restructure one: a bank’s BIC is
<BIC>in older versions such as camt.053.001.02 and<BICFI>in newer ones; an entry status is a bare code up to .001.06 and<Sts><Cd>from .001.07. The tools read both forms. - Market practice guides (SEPA, CBPR+, national banking associations, your bank’s implementation guide) restrict which elements and codes may be used. A file can be valid ISO 20022 and still break a bank’s rules; the validator reports rules that banks apply unevenly as warnings.
Business application header
On SWIFT and on payment-system networks a message travels with a business application header, head.001 (root element AppHdr), alongside the Document: who sent it (Fr), who receives it (To), its id (BizMsgIdr), which message follows (MsgDefIdr) and when it was created (CreDt).
<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<Fr><FIId><FinInstnId><BICFI>COBADEFFXXX</BICFI></FinInstnId></FIId></Fr>
<To><FIId><FinInstnId><BICFI>NWBKGB2LXXX</BICFI></FinInstnId></FIId></To>
<BizMsgIdr>STMT20261028NW001</BizMsgIdr>
<MsgDefIdr>camt.053.001.08</MsgDefIdr>
<CreDt>2026-10-29T06:15:00Z</CreDt>
</AppHdr>Files a company exchanges with its bank directly (a downloaded statement, an uploaded pain.001) usually have no header. When one is present, the detect operation returns its fields as appHeader.
Where the migration stands
- Euro area: SEPA credit transfers and direct debits have used ISO 20022 (pain.001, pain.008 and camt reporting) since the SEPA migration of 2014.
- Fedwire Funds Service: moved from its proprietary format to ISO 20022 in July 2025.
- SWIFT cross-border payments: the period in which MT and ISO 20022 payment instructions coexisted (MT103, MT202 and related) ended in November 2025; banks exchange pacs.008 and pacs.009 under the CBPR+ rules.
- Statements: MT940 is still widely used for corporate reporting, and many banks offer it next to camt.053. That is why this site reads MT940 and converts it.
- Switzerland: Swiss banks end support for the 2009 schema versions (such as pain.001.001.03) in November 2026, in favour of the 2019 versions (such as pain.001.001.09).
As of October 2026. Your bank or market infrastructure publishes the dates that apply to you.
Balance types
Each balance in a camt.052, camt.053 or camt.054 carries a type code in Bal/Tp/CdOrPrtry/Cd. Booked balances must roll forward: the opening booked balance (OPBD, or PRCD) plus the booked entries gives the closing booked balance (CLBD). The validator checks it under camt.balance.roll-forward.
| Code | Name | Definition | Booked | From MT940 |
|---|---|---|---|---|
| OPBD | Opening booked | Book balance at the start of the reporting period: the closing booked balance of the previous statement. | Yes | :60F: (:60M: on a continuation page) |
| CLBD | Closing booked | Book balance at the end of the reporting period: the opening booked balance plus or minus every entry booked in the period. | Yes | :62F: (:62M: on a page that continues) |
| CLAV | Closing available | Closing balance of funds the account owner can use at the end of the period (booked balance adjusted for float and holds). | No | :64: |
| OPAV | Opening available | Available balance at the start of the reporting period. | No | — |
| ITBD | Interim booked | Book balance calculated during the business day, at the time given; it can still change before the day closes. | Yes | — |
| ITAV | Interim available | Available balance calculated during the business day, at the time given. | No | — |
| PRCD | Previously closed booked | Closing booked balance of the previous statement, as reported then. Some banks send it instead of (or as well as) OPBD. | Yes | — |
| FWAV | Forward available | Balance that will be available on a future date (Dt), taking value-dated entries into account. | No | :65: |
| XPCD | Expected | Balance of booked entries plus pending items expected to be booked: a projection, not a booked figure. | No | — |
| INFO | Information | Balance reported for information only (for example a balance of a related account or a blocked amount). | No | — |
Balance sub-types
A balance may also carry a sub-type in Bal/Tp/SubTp, as a code or a proprietary value. The external code list is longer than the values below; others are shown as written.
| Sub-type | Meaning |
|---|---|
| INTM | Intermediate (a page of a statement that continues) |
Bank transaction codes
Each entry in a camt.052, camt.053 or camt.054 is classified in BkTxCd. The ISO code nests three levels: a domain (Domn/Cd), a family within the domain (Domn/Fmly/Cd) and a sub-family (Domn/Fmly/SubFmlyCd). Read together, PMNT / RCDT / ESCT is a payment, a received credit transfer, a SEPA credit transfer.
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RCDT</Cd>
<SubFmlyCd>ESCT</SubFmlyCd>
</Fmly>
</Domn>
<Prtry>
<Cd>NTRF</Cd>
<Issr>SWIFT</Issr>
</Prtry>
</BkTxCd>- Proprietary codes: a bank can send its own code in
BkTxCd/Prtry/Cd, with the issuer inIssr, alone or next to the ISO code. These are bank-specific: the bank’s implementation guide lists them. Entries converted from MT940 carry the:61:type code here, issuer SWIFT. - Coverage: the tables below are the common codes, not the complete external code list: every domain, the families of PMNT, CAMT, ACMT and the sub-families statements use most. A code not listed is shown as written and never reported as an error. The full list is published with the ISO 20022 external code sets.
Domains
| Domain | Name |
|---|---|
| PMNT | Payments |
| CAMT | Cash Management |
| ACMT | Account Management |
| LDAS | Loans, Deposits & Syndications |
| FORX | Foreign Exchange |
| SECU | Securities |
| DERV | Derivatives |
| TRAD | Trade Services |
| CMDT | Commodities |
| PMET | Precious Metal |
| XTND | Extended Domain |
Families
A family code means the same thing in every domain that uses it (MCOP is miscellaneous credit operations under PMNT, CAMT or ACMT).
| Family | Name | Listed under |
|---|---|---|
| RCDT | Received Credit Transfers | PMNT |
| ICDT | Issued Credit Transfers | PMNT |
| RRCT | Received Real-Time Credit Transfers | PMNT |
| IRCT | Issued Real-Time Credit Transfers | PMNT |
| RDDT | Received Direct Debits | PMNT |
| IDDT | Issued Direct Debits | PMNT |
| RCHQ | Received Cheques | PMNT |
| ICHQ | Issued Cheques | PMNT |
| CCRD | Customer Card Transactions | PMNT |
| MCRD | Merchant Card Transactions | PMNT |
| LBOX | Lockbox Transactions | PMNT |
| CNTR | Counter Transactions | PMNT |
| DRFT | Drafts / Bills of Order | PMNT |
| MCOP | Miscellaneous Credit Operations | PMNT, CAMT, ACMT |
| MDOP | Miscellaneous Debit Operations | PMNT, CAMT, ACMT |
| NTAV | Not Available | PMNT, CAMT, ACMT |
| OTHR | Other | PMNT, CAMT, ACMT |
| ACCB | Account Balancing | CAMT |
| CAPL | Cash Pooling | CAMT |
Sub-families
Sub-family codes combine with the family: ESCT under RCDT is a received SEPA credit transfer, under ICDT an issued one. NTAV (not available) and OTHR (other) appear at every level.
| Sub-family | Name |
|---|---|
| ESCT | SEPA Credit Transfer |
| ESDD | SEPA Core Direct Debit |
| BBDD | SEPA B2B Direct Debit |
| DMCT | Domestic Credit Transfer |
| XBCT | Cross-Border Credit Transfer |
| SDVA | Same Day Value Credit Transfer |
| PRCT | Priority Credit Transfer |
| FICT | Financial Institution Credit Transfer |
| BOOK | Internal Book Transfer |
| ACCT | Account Transfer |
| SALA | Payroll / Salary Payment |
| STDO | Standing Order |
| VCOM | Credit Transfer with Agreed Commercial Information |
| AUTT | Automatic Transfer |
| ATXN | ACH Transaction |
| ACDT | ACH Credit |
| ADBT | ACH Debit |
| ACOR | ACH Corporate Trade |
| ACON | ACH Concentration |
| APAC | ACH Pre-Authorised |
| ARET | ACH Return |
| AREV | ACH Reversal |
| ASET | ACH Settlement |
| PMDD | Direct Debit Payment |
| OODD | One-Off Direct Debit |
| RRTN | Reversal Due to Payment Return |
| RPCR | Reversal Due to Payment Cancellation Request |
| Sub-family | Name |
|---|---|
| UPDD | Reversal Due to Return / Unpaid Direct Debit |
| PRDD | Reversal Due to Payment Reversal |
| CCHQ | Cheque |
| BCHQ | Bank Cheque |
| URCQ | Cheque Under Reserve |
| CDIS | Controlled Disbursement |
| CWDL | Cash Withdrawal |
| CDPT | Cash Deposit |
| FCDP | Foreign Currencies Deposit |
| FCWD | Foreign Currencies Withdrawal |
| POSD | Point-of-Sale Payment — Debit Card |
| POSC | Credit Card Payment |
| SMRT | Smart-Card Payment |
| LBDP | Lockbox Deposits |
| SWEP | Sweeping |
| TOPG | Topping |
| ZABA | Zero Balancing |
| CHRG | Charges |
| FEES | Fees |
| COMM | Commission |
| INTR | Interests |
| TAXE | Taxes |
| ADJT | Adjustments |
| CAJT | Credit Adjustments |
| DAJT | Debit Adjustments |
| NTAV | Not Available |
| OTHR | Other |
Statuses and reason codes
Two different statuses: the status of an entry on a statement (is it booked?) and the status of a payment in a status report (did the bank accept it?). Reason codes say why a payment was rejected or returned.
Entry status
In Ntry/Sts of camt.052, camt.053 and camt.054 (a bare code up to version .001.06, Ntry/Sts/Cd from .001.07). Only booked entries count toward the booked balance.
| Code | Name | Meaning |
|---|---|---|
| BOOK | Booked | Posted to the account: part of the booked balance. |
| PDNG | Pending | Not yet posted; it may still change or be cancelled. Not part of the booked balance. |
| INFO | Information | Reported for information only; it will not be booked (for example an expected or advised item). |
| FUTR | Future | Will be booked on a future date (the booking date). Not part of today’s booked balance. |
Payment status
In pain.002 and pacs.002, at three levels: the whole original message (OrgnlGrpInfAndSts/GrpSts), a payment information block (OrgnlPmtInfAndSts/PmtInfSts) and one transaction (TxInfAndSts/TxSts). The outcome says whether the payment is still in progress, accepted, settled or will not be executed.
| Code | Name | Outcome | Meaning |
|---|---|---|---|
| RCVD | Received | In progress | The message was received; nothing has been checked yet. |
| ACTC | Accepted technical validation | In progress | Syntax and authentication checks passed. |
| ACCP | Accepted customer profile | Accepted | Technical checks and the customer profile checks passed. |
| ACFC | Accepted funds checked | Accepted | Accepted, and the funds are available. |
| ACWC | Accepted with change | Accepted | Accepted, but something was changed (for example the date or remittance information). |
| ACWP | Accepted without posting | Accepted | Accepted, but the payment will not be posted to the creditor’s account. |
| ACSP | Accepted settlement in process | Accepted | All checks passed and the payment is being executed. |
| ACSC | Accepted settlement completed | Settled | Settled on the debtor’s account. |
| ACCC | Accepted settlement completed (creditor) | Settled | Settled on the creditor’s account. |
| ACIS | Accepted and cheque issued | Accepted | A payment by cheque was accepted and the cheque issued, but not yet deposited or cleared. |
| ACPD | Accepted clearing processed | Accepted | Released by the debtor’s bank and accepted by the clearing system. |
| CPUC | Cash picked up by creditor | Settled | The creditor has collected the cash. |
| PDNG | Pending | In progress | Waiting on further checks; the status will change. |
| PART | Partially accepted | Partly accepted | Some transactions accepted; others not yet accepted (pending or rejected); see the transaction statuses. A group or block status only. |
| PATC | Partially accepted technical correct | Partly accepted | Technically correct, but some transactions still await authorisation. A group or block status only. |
| RJCT | Rejected | Not executed | Rejected: the payment will not be executed. The reason code says why. |
| CANC | Cancelled | Not executed | Cancelled after it was accepted (for example on the customer’s request). |
| BLCK | Blocked | In progress | Held; it may be released or cancelled later. |
| PRES | Presented | In progress | A request to pay was presented to the debtor. |
Reason codes
Why a payment was rejected, cancelled or returned: StsRsnInf/Rsn/Cd in pain.002 and pacs.002, and the same codes in RtrInf/Rsn/Cd on returned entries. These are the codes banks commonly send; the full ExternalStatusReason1Code list is longer, and a code not listed is shown as written. A rejection without a reason is reported under pain.status.reason.
| Code | Name | Meaning |
|---|---|---|
| AC01 | Incorrect account number | The account number is wrong (missing, invalid or does not exist). |
| AC02 | Invalid debtor account number | The debtor account number is invalid or missing. |
| AC03 | Invalid creditor account number | The creditor account number is invalid or missing. |
| AC04 | Closed account number | The account is closed. |
| AC05 | Closed debtor account number | The debtor account is closed. |
| AC06 | Blocked account | The account is blocked. |
| AC07 | Closed creditor account number | The creditor account is closed. |
| AC13 | Invalid debtor account type | The debtor account type cannot be used for this payment (for example a consumer account in a B2B direct debit). |
| AG01 | Transaction forbidden | This type of transaction is not allowed on the account (for example a savings account). |
| AG02 | Invalid bank operation code | The bank operation or payment type code is not valid. |
| AM01 | Zero amount | The amount is zero. |
| AM02 | Not allowed amount | The amount is above the maximum allowed. |
| AM03 | Not allowed currency | The currency is not allowed for this payment or account. |
| AM04 | Insufficient funds | Not enough funds on the account to cover the payment. |
| AM05 | Duplication | The payment is a duplicate of one already received. |
| AM06 | Too low amount | The amount is below the minimum allowed. |
| AM07 | Blocked amount | The amount is blocked (for example by a legal order). |
| AM09 | Wrong amount | The amount is not the one agreed or expected. |
| AM10 | Invalid control sum | The control sum does not add up to the individual amounts. |
| BE01 | Inconsistent with end customer | The customer identification does not match the account holder. |
| BE04 | Missing creditor address | The creditor’s address is missing or incomplete. |
| BE05 | Unrecognised initiating party | The initiating party is not known or not authorised. |
| BE06 | Unknown end customer | The end customer is not known at its bank. |
| BE07 | Missing debtor address | The debtor’s address is missing or incomplete. |
| CNOR | Creditor bank is not registered | The creditor’s bank is not reachable in the clearing system. |
| DNOR | Debtor bank is not registered | The debtor’s bank is not reachable in the clearing system. |
| DT01 | Invalid date | A date is invalid (for example a requested execution date in the past or too far ahead). |
| DU01 | Duplicate message ID | The message identification was already used. |
| DU02 | Duplicate payment information ID | The payment information identification was already used. |
| DU03 | Duplicate transaction | The transaction is not unique. |
| DU04 | Duplicate end-to-end ID | The end-to-end identification is not unique. |
| DU05 | Duplicate instruction ID | The instruction identification is not unique. |
| ED05 | Settlement failed | Settlement of the transaction failed. |
| FF01 | Invalid file format | The file or message is not in a format the bank accepts (schema or syntax error). |
| MD01 | No mandate | No valid mandate exists for this direct debit. |
| MD02 | Missing mandatory information in mandate | Mandate data is missing or wrong. |
| MD06 | Refund request by end customer | The debtor asked for a refund of the direct debit. |
| MD07 | End customer deceased | The account holder has died. |
| MS02 | Not specified reason (customer generated) | Refused by the customer; no reason given. |
| MS03 | Not specified reason (agent generated) | Refused by a bank; no reason given. |
| NARR | Narrative | The reason is given as text in AddtlInf. |
| RC01 | Bank identifier incorrect | The bank identifier (BIC or clearing code) is wrong or unknown. |
| RR01 | Missing debtor account or identification | Regulatory data for the debtor (account or identification) is missing. |
| RR02 | Missing debtor name or address | Regulatory data for the debtor (name or address) is missing. |
| RR03 | Missing creditor name or address | Regulatory data for the creditor (name or address) is missing. |
| RR04 | Regulatory reason | Refused for regulatory reasons (sanctions, AML/KYC). |
| SL01 | Specific service offered by debtor agent | Refused because of a service the debtor’s bank offers (for example a direct-debit block set by the debtor). |
| TM01 | Invalid cut-off time | Received after the cut-off time. |
| CUST | Requested by customer | Cancelled or returned at the customer’s request. |
| DUPL | Duplicate payment | The payment was sent twice. |
| FOCR | Following cancellation request | Returned after a cancellation request. |
| FRAD | Fraudulent origin | The payment is believed to be fraudulent. |
| TECH | Technical problem | A technical problem caused the payment to be cancelled or returned. |
| UPAY | Undue payment | The payment was not due. |
| AGNT | Incorrect agent | An agent (bank) in the payment chain is wrong. |
| CURR | Incorrect currency | The currency is wrong. |
| NOAS | No answer from customer | The customer did not answer. |
| NOOR | No original transaction received | The original transaction was never received. |
Validation rules
Every finding from the viewers and the API names one of these 72 rules: the rule field of each issue the validate operation returns. Ids are stable, so match on the id rather than the message text. Severity depends on the finding: error when the message breaks the schema or a rule banks enforce, warning when it is likely wrong or the rule is one not every bank applies, info when it is only worth knowing. Each row can be linked to as #rule-iban.invalid.
| Rule id | What it checks | Based on |
|---|---|---|
| Input and XML | ||
| format.empty | Empty input | Input |
| format.unknown | Not a recognized message | ISO 20022 XML or SWIFT MT940/MT942 |
| format.unsupported | Message type not supported here | Supported: camt.052/053/054, pain.001/002/008, MT940/MT942 |
| xml.malformed | XML is not well-formed | XML 1.0 |
| xml.encoding | Encoding other than UTF-8 | ISO 20022 XML messages are UTF-8 |
| xml.namespace | Namespace | ISO 20022 message namespace urn:iso:std:iso:20022:tech:xsd:<message> |
| xml.version | Message version | Versions .001.02 to .001.13 are read |
| Element values | ||
| field.required | Required element missing | ISO 20022 message definition (mandatory element or attribute), or a usage rule that makes it mandatory |
| field.empty | Empty element | ISO 20022 text types have a minimum length of 1 |
| field.length | Text too long | ISO 20022 MaxNText types |
| field.date | Invalid date or time | ISODate (YYYY-MM-DD) / ISODateTime |
| field.amount | Invalid amount | ActiveOrHistoricCurrencyAndAmount: decimal ≥ 0, 18 digits, 5 decimals |
| field.number | Invalid number | Max15NumericText / DecimalNumber |
| field.indicator | Invalid indicator | CreditDebitCode (CRDT, DBIT) / TrueFalseIndicator |
| Currencies | ||
| ccy.format | Invalid currency code | ActiveOrHistoricCurrencyCode: three capital letters |
| ccy.unknown | Currency not in ISO 4217 | ISO 4217 current currency list |
| ccy.decimals | Too many decimals for the currency | ISO 4217 minor units (amount usage rule) |
| ccy.mismatch | Currency differs from the account | Statement and account currency consistency |
| IBAN and BIC | ||
| iban.invalid | Invalid IBAN | ISO 13616: format, country length, mod-97 check digits |
| iban.country | IBAN country not in the registry list | SWIFT IBAN registry |
| bic.format | Invalid BIC | ISO 9362: 8 or 11 characters |
| bic.country | BIC country code unknown | ISO 3166-1 alpha-2 |
| Codes and references | ||
| code.unknown | Code not in the reference list | ISO 20022 external code sets |
| code.invalid | Invalid code | ISO 20022 code sets |
| ref.duplicate | Duplicate reference | References should identify one item |
| camt statements, reports and notifications | ||
| camt.balance.roll-forward | Balances do not roll forward | Opening booked + booked entries = closing booked |
| camt.balance.missing | Booked balance missing | camt.053 statements report OPBD (or PRCD) and CLBD |
| camt.balance.multiple | Balance type repeated | One balance per type and date |
| camt.summary.count | Transaction summary count differs | TxsSummry NbOfNtries vs entries |
| camt.summary.sum | Transaction summary sum differs | TxsSummry Sum / TtlNetNtry vs entries |
| camt.batch.count | Batch count differs | NtryDtls/Btch/NbOfTxs vs TxDtls |
| camt.batch.sum | Batch amount differs | NtryDtls/Btch/TtlAmt and TxDtls amounts vs entry amount |
| camt.entry.status | Entry status | ExternalEntryStatus1Code: BOOK, PDNG, INFO, FUTR |
| camt.entry.booking-date | Booked entry without booking date | BookgDt for booked entries |
| camt.dates.order | Dates out of order | FrToDt and entry dates |
| camt.pagination | Message continues | MsgPgntn / StmtPgntn LastPgInd |
| pain payment files and status reports | ||
| pain.count.group | Group header count differs | GrpHdr/NbOfTxs = all transactions in the message |
| pain.sum.group | Group header control sum differs | GrpHdr/CtrlSum = sum of all instructed amounts |
| pain.count.payment | Payment information count differs | PmtInf/NbOfTxs = transactions in the block |
| pain.sum.payment | Payment information control sum differs | PmtInf/CtrlSum = sum of the block’s amounts |
| pain.date.past | Requested date in the past | ReqdExctnDt / ReqdColltnDt |
| pain.duplicate.pmtinf | Duplicate payment information id | PmtInfId identifies one block in the message |
| pain.duplicate.e2e | Duplicate end-to-end id | EndToEndId should identify one transaction |
| pain.duplicate.instr | Duplicate instruction id | InstrId identifies one instruction |
| pain.amount.zero | Zero amount | Instructed amount |
| pain.party.name | Party name missing | Creditor / debtor name |
| pain.status.reason | Rejection without a reason | StsRsnInf for RJCT statuses |
| pain.status.mix | Group status does not match transactions | GrpSts vs TxSts |
| pain.status.counts | Status counts differ | NbOfTxsPerSts vs OrgnlNbOfTxs |
| SEPA (applied when the service level is SEPA) | ||
| sepa.currency | SEPA payments are in euro | EPC rulebooks: currency EUR |
| sepa.iban-required | SEPA account must be an IBAN | EPC rulebooks: accounts are identified by IBAN |
| sepa.charset | Characters outside the SEPA set | EPC implementation guidelines: Latin character set |
| sepa.name-length | Name longer than SEPA allows | EPC implementation guidelines: names max 70 characters |
| sepa.remittance | SEPA remittance information | EPC: one Ustrd of 140 characters, or one Strd, not both |
| sepa.charge-bearer | SEPA charge bearer | EPC: ChrgBr SLEV |
| sepa.amount-range | Amount outside the SEPA range | EPC: 0.01 to 999,999,999.99 EUR |
| sepa.country | IBAN country outside SEPA | EPC scheme geographical scope |
| sepa.creditor-id | SEPA creditor identifier missing | SDD rulebook: CdtrSchmeId |
| sepa.mandate | SEPA mandate data missing | SDD rulebook: MndtId and DtOfSgntr |
| sepa.sequence-type | SEPA sequence type missing | SDD rulebook: SeqTp FRST, RCUR, OOFF or FNAL |
| SWIFT MT940 and MT942 | ||
| mt.block | SWIFT block structure | SWIFT FIN message blocks {1:}{2:}{3:}{4:}{5:} |
| mt.field.required | Mandatory field missing | SWIFT MT940/MT942 field specifications |
| mt.field.format | Field format | SWIFT MT940/MT942 field specifications |
| mt.field.order | Field out of order | SWIFT MT940/MT942 field sequence |
| mt.field.length | Field too long | SWIFT MT940/MT942 field lengths |
| mt.charset | Characters outside the SWIFT set | SWIFT FIN character set X |
| mt.balance.roll-forward | Balances do not roll forward | :60a: + :61: entries = :62a: |
| mt.balance.continuity | Statements do not chain | :62a: of one page = :60a: of the next |
| mt.sequence | Statement numbering | :28C: statement and sequence numbers |
| mt.currency | Currency | Balances and entries share one ISO 4217 currency |
| mt.date | Invalid date | SWIFT dates YYMMDD / MMDD |
| mt.summary | Entry totals differ | MT942 :90D: / :90C: number and sum of entries |
MT940 and MT942
MT940 is the SWIFT customer statement: the end-of-day statement many banks send next to, or instead of, camt.053. MT942 is the interim (intraday) report, the counterpart of camt.052. A message is a SWIFT FIN envelope ({1:} basic header, {2:} application header, {4: … -} text block) around tagged fields; the viewer and the API also accept bare field text starting with :20:.
{1:F01NWTHDEF1AXXX0000000000}{2:O9400615261028COBADEFFAXXX00000000002610290615N}{4:
:20:STMT301P1
:25:DE89370400440532013000
:28C:00301/001
:60F:C261027EUR23456,78
:61:2610281028C1190,00NTRFAW-2026-0815//COBA261028001
:86:166?00SEPA-GUTSCHRIFT?20EREF+AW-2026-0815?32Adventure Works GmbH
:62F:C261028EUR24646,78
-}MT940 fields
M = mandatory, O = optional. The last column is where the converter puts each field in a camt.053.
| Tag | Name | Format | M/O | Definition | In camt.053 |
|---|---|---|---|---|---|
| :20: | Transaction Reference Number | 16x | M | The sender’s reference for this statement message. | Stmt/Id |
| :21: | Related Reference | 16x | O | Reference of the MT920 request this statement answers, if any. | not mapped (noted) |
| :25: | Account Identification | 35x | M | The account the statement is for: an IBAN or the bank’s own account number (:25P: adds the owner’s BIC). | Stmt/Acct/Id/IBAN or Othr/Id |
| :28C: | Statement Number / Sequence Number | 5n[/5n] | M | Statement number and, for multi-page statements, the page number. | Stmt/ElctrncSeqNb, StmtPgntn/PgNb |
| :60F: | Opening Balance (first) | 1!a6!n3!a15d | M | Booked balance at the start of the statement: D/C mark, date (YYMMDD), currency, amount. | Bal with Tp OPBD |
| :60M: | Opening Balance (intermediate) | 1!a6!n3!a15d | M | Opening balance of a continuation page: the :62M: of the previous page. | Bal OPBD, sub-type INTM |
| :61: | Statement Line | 6!n[4!n]2a[1!a]15d1!a3!c16x[//16x][34x] | O | One entry: value date, entry date, D/C mark, funds code, amount, transaction type, references, supplementary details. | Ntry |
| :86: | Information to Account Owner | 6*65x | O | After a :61:, details of that entry (often structured with ?nn or /CODE/ subfields); at the end, information about the whole statement. | Ntry/AddtlNtryInf, RmtInf, RltdPties; or Stmt/AddtlStmtInf |
| :62F: | Closing Balance (final) | 1!a6!n3!a15d | M | Booked balance at the end of the statement. | Bal with Tp CLBD |
| :62M: | Closing Balance (intermediate) | 1!a6!n3!a15d | M | Closing balance of a page that continues on the next message. | Bal CLBD, sub-type INTM |
| :64: | Closing Available Balance | 1!a6!n3!a15d | O | Funds available to the account owner at the end of the statement. | Bal with Tp CLAV |
| :65: | Forward Available Balance | 1!a6!n3!a15d | O | Funds that will be available on a future date (repeatable). | Bal with Tp FWAV |
MT942 fields
MT942 uses :20:, :25:, :28C:, :61: and :86: as above and adds these:
| Tag | Name | Format | M/O | Definition |
|---|---|---|---|---|
| :34F: | Debit / (Debit and Credit) Floor Limit Indicator | 3!a[1!a]15d | M | Only entries above this amount are reported (one for debits and credits, or one for each). |
| :13D: | Date/Time Indication | 6!n4!n1!x4!n | M | When the report was produced: YYMMDD, HHMM and the UTC offset. |
| :90D: | Number and Sum of Entries (debits) | 5n3!a15d | O | How many debit entries the report holds and their total. |
| :90C: | Number and Sum of Entries (credits) | 5n3!a15d | O | How many credit entries the report holds and their total. |
The :61: statement line
One :61: per entry, in the format 6!n[4!n]2a[1!a]15d1!a3!c16x[//16x][34x]. Subfields follow each other with no separator; the example line from the statement above reads:
| # | Subfield | Format | Example | Notes |
|---|---|---|---|---|
| 1 | Value date | 6!n | 261028 | YYMMDD. The date the funds are valued (camt.053 Ntry/ValDt). |
| 2 | Entry date | [4!n] | 1028 | MMDD, optional: the booking date. Its year is taken as the one closest to the value date. |
| 3 | Debit/credit mark | 2a | C | C, D, RC or RD (see the marks below). |
| 4 | Funds code | [1!a] | — | Optional: the third letter of the currency code, when the bank uses it. Absent in the example. |
| 5 | Amount | 15d | 1190,00 | Comma as decimal separator, no sign: the mark gives the direction. |
| 6 | Transaction type | 1!a3!c | NTRF | N, S or F followed by three characters (see the type codes below). |
| 7 | Reference for the account owner | 16x | AW-2026-0815 | The customer’s reference, such as an invoice or payment id; NONREF when there is none. |
| 8 | Account servicing institution’s reference | [//16x] | //COBA261028001 | Optional: the bank’s own reference, after a double slash. |
| 9 | Supplementary details | [34x] | — | Optional, on the next line. Absent in the example. |
Debit/credit marks
A reversal mark books in the opposite direction of the entry it reverses. In camt.053 it becomes the booking’s actual direction (CdtDbtInd) plus RvslInd true.
| Mark | Meaning |
|---|---|
| C | Credit |
| D | Debit |
| RC | Reversal of credit (a debit entry) |
| RD | Reversal of debit (a credit entry) |
Transaction type codes
The transaction type subfield starts with an identification letter. N (no SWIFT message) is followed by one of the codes below: NTRF is a transfer, NCHG charges. S is followed by the number of the SWIFT message that caused the entry: S103 for an MT103. F (first advice) is followed by a bank-specific code.
| Code | Meaning |
|---|---|
| BNK | Securities related item — bank fees |
| BOE | Bill of exchange |
| BRF | Brokerage fee |
| CAR | Securities related item — corporate actions related |
| CAS | Securities related item — cash in lieu |
| CHG | Charges and other expenses |
| CHK | Cheques |
| CLR | Cash letters / cheques remittance |
| CMI | Cash management item — no detail |
| CMN | Cash management item — notional pooling |
| CMP | Compensation claims |
| CMS | Cash management item — sweeping |
| CMT | Cash management item — topping |
| CMZ | Cash management item — zero balancing |
| COL | Collections |
| COM | Commission |
| CPN | Securities related item — coupon payments |
| DCR | Documentary credit |
| DDT | Direct debit item |
| DIS | Securities related item — gains disbursement |
| DIV | Securities related item — dividends |
| EQA | Equivalent amount |
| EXT | Securities related item — external transfer for own account |
| FEX | Foreign exchange |
| INT | Interest |
| LBX | Lock box |
| LDP | Loan deposit |
| MAR | Securities related item — margin payments / receipts |
| MAT | Securities related item — maturity |
| Code | Meaning |
|---|---|
| MGT | Securities related item — management fees |
| MSC | Miscellaneous |
| NWI | Securities related item — new issues distribution |
| ODC | Overdraft charge |
| OPT | Securities related item — options |
| PCH | Securities related item — purchase |
| POP | Securities related item — pair-off proceeds |
| PRN | Securities related item — principal pay-down / pay-up |
| REC | Securities related item — tax reclaim |
| RED | Securities related item — redemption / withdrawal |
| RIG | Securities related item — rights |
| RTI | Returned item |
| SAL | Securities related item — sale |
| SEC | Securities |
| SLE | Securities related item — securities lending related |
| STO | Standing order |
| STP | Securities related item — stamp duty |
| SUB | Securities related item — subscription |
| SWP | Securities related item — SWAP payment |
| TAX | Securities related item — withholding tax payment |
| TCK | Travellers cheques |
| TCM | Securities related item — tripartite collateral management |
| TRA | Securities related item — internal transfer for own account |
| TRF | Transfer |
| TRN | Securities related item — transaction fee |
| UWC | Securities related item — underwriting commission |
| VDA | Value date adjustment |
| WAR | Securities related item — warrant |
MT940 to camt.053 mapping
The MT940 Viewer and the convert endpoint turn MT940 (or MT950) statements into one camt.053.001.08 document (urn:iso:std:iso:20022:tech:xsd:camt.053.001.08): one Stmt per statement and one Ntry with one TxDtls per :61:. Field by field:
| MT940 | camt.053.001.08 | Note |
|---|---|---|
| :20: Transaction Reference | Stmt/Id | |
| :21: Related Reference | — | Not carried over (camt.053 has no place for the MT920 request reference). |
| :25: Account | Stmt/Acct/Id/IBAN, else Acct/Id/Othr/Id | An IBAN that passes mod-97 goes in IBAN; anything else in Othr/Id (34 characters at most). |
| :25P: / block 1 or 2 BIC | Stmt/Acct/Svcr/FinInstnId/BICFI | The sending bank of a SWIFT output message services the account. An identifier code that is not a BIC is left out. |
| :28C: Statement number / page | Stmt/ElctrncSeqNb, Stmt/StmtPgntn/PgNb | LastPgInd 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 date | Ntry/ValDt/Dt, Ntry/BookgDt/Dt | Without 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 mark | Ntry/CdtDbtInd, Ntry/RvslInd | C → 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: amount | Ntry/Amt (+ TxDtls/Amt) | Comma decimal to point, written with the currency’s decimals. |
| :61: transaction type (NTRF, S103 …) | Ntry/BkTxCd/Prtry/Cd, Issr SWIFT | Not mapped to ISO domain/family/sub-family codes: the MT codes are too coarse for that to be reliable. |
| :61: reference for the account owner | TxDtls/Refs/AcctOwnrTxId | NONREF is dropped; 35 characters at most. |
| :61: //bank reference | Ntry/AcctSvcrRef | 35 characters at most. |
| :61: supplementary details | TxDtls/AddtlTxInf | |
| :86: (after a :61:) | Ntry/AddtlNtryInf and TxDtls/RmtInf/Ustrd | The 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/ remittance | TxDtls/RmtInf/Ustrd | From 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 statement | Stmt/AddtlStmtInf | |
| (none) | GrpHdr/CreDtTm, Stmt/CreDtTm | MT940 carries no creation time: both are the time of the conversion. |
| (computed) | Stmt/TxsSummry | Counted and summed from the :61: lines. |
What the conversion does not do. It carries what the MT940 says and adds nothing the MT940 lacks, so a camt.053 your bank produces for the same account usually holds more:
:61:transaction types stay proprietary codes (BkTxCd/Prtry, issuer SWIFT). Turning NTRF or NCHG into an ISO domain, family and sub-family would be a guess.- Unstructured
:86:text stays text; only recognized subfields become counterparty, account, agent, reference and remittance elements. - Creation times are the time of the conversion (MT940 has none);
:21:and SWIFT header blocks 3 and 5 are not carried over. - MT942 is refused (it maps to camt.052, which the converter does not produce), and so is input whose balances or entries cannot be read: nothing is converted rather than data dropped.
Check that the receiving system accepts a converted file before you use it in place of a bank-supplied camt.053.
Element glossary
ISO 20022 XML tags are abbreviated element names. These are the ones the viewers spell out in the field inspector and the structure tree; the dot marks the kind of data, in the colours the viewers use.
Currency decimals
An amount may not have more decimal places than its currency’s ISO 4217 minor unit, so 1000.50 in JPY is invalid (ccy.decimals). Of the 179 currency codes the tools know, these have a minor unit other than 2:
| Decimal places | Currencies |
|---|---|
| 0 | BIF CLP DJF GNF ISK JPY KMF KRW PYG RWF UGX UYI VND VUV XAF XOF XPF |
| 3 | BHD IQD JOD KWD LYD OMR TND |
| 4 | CLF UYW |
| None (any number accepted) | XAG XAU XBA XBB XBC XBD XDR XPD XPT XSU XTS XUA XXX |