Payments Academy

ISO 20022 Mapping Workbench

Map fields between ISO 20022 messages. Pick a source message and a target message, connect their fields, choose a transformation, validate the result and generate the target XML. Then try the guided exercise: turn a pain.001 customer instruction into a pacs.008 interbank payment. All data is synthetic and for education only. Nothing here connects to a real banking system and nothing moves real money.

Read this first: there is no universal one-to-one transformation between these messages. Real mappings depend on the bank's canonical data model, its enrichment rules and its implementation guidelines for each message. A field that exists in one message may be split, combined, enriched or dropped in another, and the same source field can map differently at different banks. The workbench shows the standard element names and the most common mappings. The validation here is a simplified educational check of shapes and formats, not full scheme or implementation-guideline validation. Check current scheme rules and your bank's guidelines before relying on any mapping in live work.

Best exercise score: not attempted yet

Message catalogue

Seven messages you will meet across a payment's life: initiation, interbank movement, status reporting, return, and account reporting.

MessageVersionPurposeKey fields
pain.001pain.001.001.03Customer Credit Transfer Initiation. A customer instructs its bank to make a credit transfer to a creditor.GrpHdr, PmtInf, Dbtr, DbtrAcct, DbtrAgt, CdtTrfTxInf, Amt, Cdtr, CdtrAcct, CdtrAgt, RmtInf
pacs.008pacs.008.001.08FI to FI Customer Credit Transfer. One financial institution instructs another to move a customer payment onward.GrpHdr, UETR, CdtTrfTxInf, PmtId, IntrBkSttlmAmt, Dbtr, DbtrAcct, DbtrAgt, Cdtr, CdtrAcct, CdtrAgt, RmtInf
pacs.002pacs.002.001.03FI to FI Payment Status Report. A bank reports the status of an earlier payment instruction, for example accepted or rejected.GrpHdr, OrgnlGrpInfAndSts, GrpSts, TxInfAndSts, TxSts, StsRsnInf
pacs.004pacs.004.001.02Payment Return. A bank returns a payment that cannot be applied, with the returned amount and a return reason code.GrpHdr, OrgnlGrpInf, TxInf, RtrdIntrBkSttlmAmt, RtrdInstdAmt, RtrRsnInf
pain.002pain.002.001.03Customer Payment Status Report. A bank tells its customer the status of a payment instruction the customer sent earlier.GrpHdr, OrgnlGrpInfAndSts, GrpSts, OrgnlPmtInfAndSts, TxInfAndSts, TxSts
camt.053camt.053.001.02Bank to Customer Statement. A bank sends an account statement with balances and booked entries for a period.GrpHdr, Stmt, Acct, Bal, Ntry, CdtDbtInd, Sts, NtryDtls
camt.054camt.054.001.02Bank to Customer Debit Credit Notification. A bank notifies its customer of a single debit or credit entry on the account.GrpHdr, Ntfctn, Acct, Ntry, CdtDbtInd, Sts, NtryDtls, RmtInf

Mapping workbench

Choose a source message and a target message. The source panel shows the source XML and its fields with their values. Click a source field, then click a target field, choose a transformation and add the mapping. You can edit a source value in its box to see validation catch a bad amount, a bad IBAN or a bad date. A target field can only be mapped once, so remove a mapping before mapping the same target again.

Source

Target

Build a mapping

No source field selected yet. Click a field in the source panel.

No target field selected yet. Click a field in the target panel.

Format change normalises by type: amounts to two decimal places, IBANs without spaces and in upper case, dates from DD/MM/YYYY to YYYY-MM-DD, names trimmed. Concatenation joins two text fields with a space. A constant value is checked against the target field type when you validate.

Your mappings (0 mappings)

Source fieldTransformationTarget fieldResulting valueStatusRemove
No mappings yet. Select a source field and a target field, then click Add mapping.
Before you generate. The XML below is built only from the fields you mapped, and only in the standard structure shown. A real mapping also depends on the bank's canonical data model, enrichment rules and implementation guidelines, so the same pair of messages can map differently at different banks. The validation here checks shapes and formats only. It is not full scheme or implementation-guideline validation.

Guided exercise: pain.001 to pacs.008

A corporate customer sent a pain.001 with one EUR 25,000 payment. Your job is to map it into the pacs.008 that the debtor bank sends onward to the creditor bank. Map the nine fields below, check your work against the reference mapping, then generate the pacs.008 XML. Each correct mapping earns 10 points. Generating the pacs.008 XML with all nine fields mapped earns 10 more. Total 100 points. Your best score is saved in this browser only.

The payment. Meridian Trading Ltd pays Tan and Lee Supplies Pte Ltd EUR 25,000.00 for invoice INV-2026-0841. Debtor IBAN GB29NWBK60161331926819 (BIC NWBKGB2L). Creditor IBAN DE89370400440532013000 (BIC DEUTDEFF). EndToEndId MERIDIAN-2026-1106-0147. All data is synthetic.

The pain.001 instruction


Map these nine fields from the pain.001 to the pacs.008:

  1. Debtor name: PmtInf.Dbtr.Nm to CdtTrfTxInf.Dbtr.Nm
  2. Debtor IBAN: PmtInf.DbtrAcct.Id.IBAN to CdtTrfTxInf.DbtrAcct.Id.IBAN
  3. Debtor agent BIC: PmtInf.DbtrAgt.FinInstnId.BIC to CdtTrfTxInf.DbtrAgt.FinInstnId.BIC
  4. EndToEndId: PmtInf.CdtTrfTxInf.PmtId.EndToEndId to CdtTrfTxInf.PmtId.EndToEndId
  5. Instructed amount with currency: PmtInf.CdtTrfTxInf.Amt.InstdAmt to CdtTrfTxInf.IntrBkSttlmAmt (or CdtTrfTxInf.InstdAmt)
  6. Creditor name: PmtInf.CdtTrfTxInf.Cdtr.Nm to CdtTrfTxInf.Cdtr.Nm
  7. Creditor IBAN: PmtInf.CdtTrfTxInf.CdtrAcct.Id.IBAN to CdtTrfTxInf.CdtrAcct.Id.IBAN
  8. Creditor agent BIC: PmtInf.CdtTrfTxInf.CdtrAgt.FinInstnId.BIC to CdtTrfTxInf.CdtrAgt.FinInstnId.BIC
  9. Remittance information: PmtInf.CdtTrfTxInf.RmtInf.Ustrd to CdtTrfTxInf.RmtInf.Ustrd

Source

Target

Build a mapping

No source field selected yet. Click a field in the source panel.

No target field selected yet. Click a field in the target panel.

For this exercise the expected transformation is a direct copy for every field. The amount keeps its currency, EUR, when it moves to the pacs.008.

Your exercise mappings (0 mappings)

Source fieldTransformationTarget fieldResulting valueStatusRemove
No mappings yet. Select a source field and a target field, then click Add mapping.

Your score

Score 0 of 100 points. Each correct mapping earns 10 points, successful XML generation earns 10 more.

Best exercise score: not attempted yet

The generated XML contains only the fields you mapped. In a real pacs.008 the header fields (GrpHdr.MsgId, CreDtTm, NbOfTxs) would also be present; they are filled in by the sending bank's system. The UETR is also normally added by the sending bank.

Teaching note. These mappings follow the standard element names and the most common reading of the pain.001 to pacs.008 flow. Real banks differ: some enrich the pacs.008 with data the pain.001 never carried, some derive the interbank settlement amount from the instructed amount plus charges, and some apply their own implementation guidelines on top of the standard. Status codes used include ACCP (accepted) and ACSC (accepted settlement completed). Reason codes used include AC01 (incorrect account number) and AC04 (closed account). Check current scheme rules before relying on any of this in live work.
Back to Practice