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.
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.
| Message | Version | Purpose | Key fields |
|---|---|---|---|
| pain.001 | pain.001.001.03 | Customer 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.008 | pacs.008.001.08 | FI 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.002 | pacs.002.001.03 | FI 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.004 | pacs.004.001.02 | Payment 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.002 | pain.002.001.03 | Customer 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.053 | camt.053.001.02 | Bank 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.054 | camt.054.001.02 | Bank 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 field | Transformation | Target field | Resulting value | Status | Remove |
|---|---|---|---|---|---|
| No mappings yet. Select a source field and a target field, then click Add mapping. | |||||
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 pain.001 instruction
Map these nine fields from the pain.001 to the pacs.008:
- Debtor name: PmtInf.Dbtr.Nm to CdtTrfTxInf.Dbtr.Nm
- Debtor IBAN: PmtInf.DbtrAcct.Id.IBAN to CdtTrfTxInf.DbtrAcct.Id.IBAN
- Debtor agent BIC: PmtInf.DbtrAgt.FinInstnId.BIC to CdtTrfTxInf.DbtrAgt.FinInstnId.BIC
- EndToEndId: PmtInf.CdtTrfTxInf.PmtId.EndToEndId to CdtTrfTxInf.PmtId.EndToEndId
- Instructed amount with currency: PmtInf.CdtTrfTxInf.Amt.InstdAmt to CdtTrfTxInf.IntrBkSttlmAmt (or CdtTrfTxInf.InstdAmt)
- Creditor name: PmtInf.CdtTrfTxInf.Cdtr.Nm to CdtTrfTxInf.Cdtr.Nm
- Creditor IBAN: PmtInf.CdtTrfTxInf.CdtrAcct.Id.IBAN to CdtTrfTxInf.CdtrAcct.Id.IBAN
- Creditor agent BIC: PmtInf.CdtTrfTxInf.CdtrAgt.FinInstnId.BIC to CdtTrfTxInf.CdtrAgt.FinInstnId.BIC
- 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 field | Transformation | Target field | Resulting value | Status | Remove |
|---|---|---|---|---|---|
| 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.