<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08">
<FIToFICstmrCdtTrf>
<GrpHdr>
<MsgId>ACME2026110501</MsgId>
<CreDtTm>2026-11-05T09:00:00</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>10000</CtrlSum>
<InitgPty><Nm>Acme Trading Ltd</Nm></InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>PmtInf001</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<ReqdExctnDt>2026-11-05</ReqdExctnDt>
<ChrgBr>SHAR</ChrgBr>
<Dbtr>
<Nm>Acme Trading Ltd</Nm>
<PstlAdr><TwnNm>London</TwnNm></PstlAdr>
</Dbtr>
<DbtrAcct><Id><Othr><Id>London current account</Id></Othr></Id></DbtrAcct>
<DbtrAgt><FinInstnId><Nm>London bank</Nm></FinInstnId></DbtrAgt>
<CdtTrfTxInf>
<PmtId><InstrId>Instr001</InstrId><EndToEndId>INV4567</EndToEndId><UETR>a1b2c3d4-e5f6-4789-abcd-ef0123456789</UETR><TxId>TXN2026110501</TxId></PmtId>
<InstdAmt Ccy="USD">10000</InstdAmt>
<SttlmInf><SttlmMtd>INDA</SttlmMtd></SttlmInf>
<CdtrAgt><FinInstnId><Nm>Singapore bank</Nm></FinInstnId></CdtrAgt>
<Cdtr>
<Nm>Meridian Supplies Pte Ltd</Nm>
<PstlAdr><TwnNm>Singapore</TwnNm></PstlAdr>
</Cdtr>
<CdtrAcct><Id><Othr><Id>Singapore account</Id></Othr></Id></CdtrAcct>
<Purp><Cd>SUPP</Cd></Purp>
<RmtInf><Strd><CdtrRefInf><Ref>4567</Ref></CdtrRefInf></Strd></RmtInf>
</CdtTrfTxInf>
</PmtInf>
</FIToFICstmrCdtTrf>
</Document>Example: pacs.008.001.08 (explorer scheme_version). Versions listed in the explorer: pacs.008.001.06, pacs.008.001.08, pacs.008.001.09, pacs.008.001.10. Shortened for display from the chapter walkthrough: one PmtInf and one CdtTrfTxInf, Acme Trading Ltd pays Meridian Supplies Pte Ltd 10000 USD for invoice 4567. This is the base ISO 20022 structure. Scheme rules add to it: under CBPR+ the message must carry a UETR and fully structured debtor and creditor addresses, and under SEPA SCT the charge bearer must be SLEV only. The chapter example names the agents only as the London bank and the Singapore bank, so no BIC is shown. The UETR value shown is illustrative; the chapter names no UETR value.
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08">\n <FIToFICstmrCdtTrf>\n <PmtInf>\n <CdtTrfTxInf>\n <PmtId>\n <InstrId>Instr001</InstrId>\n <EndToEndId>INV4567</EndToEndId>\n <!-- UETR MISSING: required under CBPR+, the payment cannot be tracked end to end -->\n <TxId>TXN2026110501</TxId>\n </PmtId>\n <InstdAmt Ccy="USD">10000</InstdAmt>\n <Dbtr>\n <Nm>Acme Trading Ltd</Nm>\n <PstlAdr><TwnNm>London</TwnNm></PstlAdr> <!-- TRUNCATED: structured address lines missing, sanctions screening cannot complete -->\n </Dbtr>\n </CdtTrfTxInf>\n </PmtInf>\n </FIToFICstmrCdtTrf>\n</Document>
Invalid example (same payment, CBPR+): the UETR is missing and the debtor address is truncated. The creditor agent rejects it with error: missing UETR, because it cannot track the payment end to end or complete sanctions screening. This is a scheme rule failure on top of the base ISO structure, not a base schema failure: the XML is well formed, but the CBPR+ usage guidelines are violated.
Common errors and validation in pacs.008
What you will learn
Your objective. By the end of this lesson, you will be able to explain common errors and validation in pacs.008 and apply it to a real banking scenario.
Why it matters. For a business analyst, validation requirements must be precise.
Chapter objective: After this lesson the learner can read a pacs.008 message block by block, explain each field in business terms, and spot the errors that get a message rejected.
Key learning points
- Three categories of error
- The three categories named
- Structural errors
- The invalid example: missing UETR
Key terms
pacs.002: The status report message that carries a rejection code back to the sender.
UETR: The Universally Unique Transaction Reference that every pacs.008.001.08 must carry under CBPR+ for end to end tracking.
Business validation error: A failure where the XML is well formed but a business rule is violated, such as an account that does not exist.
The error categories are shown beside the XML panel, with the invalid example highlighting the missing UETR and truncated debtor address.
Practise this lesson
Exercise
Read the pacs zero message described in this lesson and identify its key parts.
Use the message structure, fields and example in this lesson.
- What to do. List the three levels of the message and name the field that carries the amount and the field that carries the end-to-end reference.
Correct result. The amount is carried in the instructed amount element and the reference in the end-to-end identification. The three levels are the group header, the payment information, and the credit transfer transaction information.
Why. A message is only useful if you can read it. The group header identifies the message, the payment information identifies the batch, and the transaction information carries the single payment.
Check your understanding
Practice question
Which of the following best describes common errors and validation in pacs.008?
Takeaway and next step
What to remember
For a business analyst, validation requirements must be precise.
Open the message type from this lesson and inspect its fields, then find the field that carries the amount.
Open the ISO 20022 Message Explorer →
Builds on "Line by line walkthrough of a pacs.008".
Transcript and full text
Show transcript
Common errors in a pacs zero zero eight fall into three categories, which are structural errors, business validation errors, and data quality errors. Structural errors occur when the XML is not well formed, when a mandatory element is missing, or when an element contains data in the wrong format, such as a date that is not in ISO format or an amount that contains a comma instead of a decimal point. These errors are usually caught by XML schema validation, and the message is rejected before it reaches the payment engine. The sender receives a pacs zero zero two status report with a rejection code, and must correct and resend the message. Business validation errors occur when the XML is well formed but the business rules are violated. Examples include a debtor account that does not exist, a creditor BIC that is invalid, a charge bearer code that is not allowed for that scheme, or a requested execution date that is in the past. These errors are caught by the payment engine, and they also result in a rejection with a status code. Data quality errors are more subtle, and they occur when the message is technically valid but the data is wrong, such as a creditor name that is misspelled, an address that is incomplete, or a remittance reference that does not match any invoice. These errors may not cause a rejection, but they can cause the payment to be repaired manually, to be delayed, or to be returned by the creditor agent. For a business analyst, validation requirements must be precise. You must document which fields are mandatory, which are optional, and which are conditional, and you must document the error code and the action for each validation failure. Your test cases should include a happy path message that validates cleanly, a message with each mandatory field missing, a message with an invalid BIC, a message with a duplicate Message Identification, and a message with a Control Sum mismatch. Those tests will catch most of the errors that occur in production, and they will give operations teams a clear guide to fixing them. Take a worked example with real numbers. A bank sends a pacs.008 with 50 transactions, and the clearing system rejects the whole message because the Group Header control sum is EUR 499,000 but the transactions total EUR 500,000. The sender finds that one transaction was entered as EUR 9,000 instead of EUR 10,000, corrects it to EUR 10,000, recomputes the control sum to EUR 500,000, generates a new MsgId, and resends. The message is accepted. In the same file, one transaction is then returned by the creditor agent as a pacs.004 with reason code AC01, because the creditor account number has a transposed digit, and the debtor is refunded EUR 10,000. The other 49 transactions settle normally. The two failures are different: the first is a structural error that stops the whole message, and the second is a business error that affects one transaction, and the recovery is different for each. Failure and recovery by category: structural errors reject the whole message, and the recovery is to fix the field and resend with a new MsgId. Business validation errors return one transaction as a pacs.004, and the recovery is to correct the data and send a new payment, not to resend the old one, because the old payment was already processed. Data quality errors, such as a beneficiary name that does not match the account, are held for manual review, and the recovery is to confirm the details with the customer before releasing or returning the payment. The operations team must be able to read the pacs.002 reason code and tell the customer which field to fix, and the requirement must state which reason codes the product can produce and what the customer sees for each one. The most common reason codes are AC01 for an incorrect account number, AC04 for a closed account, AM04 for insufficient funds, BE01 for inconsistent end customer information, FF01 for an invalid file format, RC01 for an incorrect bank identifier, and AG01 for a transaction forbidden by the scheme. For a business analyst, product owner or subject matter expert, the test is to write the validation requirements for a pacs.008 product as a table, with one row per field, the validation rule, the error code, and the customer message. A requirement that says validate the message is not enough, because it does not say which fields are mandatory, which are optional, which are conditional, and what happens when each one fails. The test cases are built from the same table, with one test per row, and a test that covers only the happy path will miss the errors that cause most production incidents. Source: ISO 20022 pacs.008.001.08; ISO 20022 ExternalPaymentTransactionStatus1Code and ExternalReturnReason1Code. Last reviewed 7 November 2026.
Common errors in a pacs zero zero eight fall into three categories, which are structural errors, business validation errors, and data quality errors. Structural errors occur when the XML is not well formed, when a mandatory element is missing, or when an element contains data in the wrong format, such as a date that is not in ISO format or an amount that contains a comma instead of a decimal point. These errors are usually caught by XML schema validation, and the message is rejected before it reaches the payment engine. The sender receives a pacs zero zero two status report with a rejection code, and must correct and resend the message.
Business validation errors occur when the XML is well formed but the business rules are violated. Examples include a debtor account that does not exist, a creditor BIC that is invalid, a charge bearer code that is not allowed for that scheme, or a requested execution date that is in the past. These errors are caught by the payment engine, and they also result in a rejection with a status code. Data quality errors are more subtle, and they occur when the message is technically valid but the data is wrong, such as a creditor name that is misspelled, an address that is incomplete, or a remittance reference that does not match any invoice. These errors may not cause a rejection, but they can cause the payment to be repaired manually, to be delayed, or to be returned by the creditor agent.
For a business analyst, validation requirements must be precise. You must document which fields are mandatory, which are optional, and which are conditional, and you must document the error code and the action for each validation failure. Your test cases should include a happy path message that validates cleanly, a message with each mandatory field missing, a message with an invalid BIC, a message with a duplicate Message Identification, and a message with a Control Sum mismatch. Those tests will catch most of the errors that occur in production, and they will give operations teams a clear guide to fixing them.
Take a worked example with real numbers. A bank sends a pacs.008 with 50 transactions, and the clearing system rejects the whole message because the Group Header control sum is EUR 499,000 but the transactions total EUR 500,000. The sender finds that one transaction was entered as EUR 9,000 instead of EUR 10,000, corrects it to EUR 10,000, recomputes the control sum to EUR 500,000, generates a new MsgId, and resends. The message is accepted.
In the same file, one transaction is then returned by the creditor agent as a pacs.004 with reason code AC01, because the creditor account number has a transposed digit, and the debtor is refunded EUR 10,000. The other 49 transactions settle normally. The two failures are different: the first is a structural error that stops the whole message, and the second is a business error that affects one transaction, and the recovery is different for each.
Failure and recovery by category: structural errors reject the whole message, and the recovery is to fix the field and resend with a new MsgId. Business validation errors return one transaction as a pacs.004, and the recovery is to correct the data and send a new payment, not to resend the old one, because the old payment was already processed. Data quality errors, such as a beneficiary name that does not match the account, are held for manual review, and the recovery is to confirm the details with the customer before releasing or returning the payment.
The operations team must be able to read the pacs.002 reason code and tell the customer which field to fix, and the requirement must state which reason codes the product can produce and what the customer sees for each one. The most common reason codes are AC01 for an incorrect account number, AC04 for a closed account, AM04 for insufficient funds, BE01 for inconsistent end customer information, FF01 for an invalid file format, RC01 for an incorrect bank identifier, and AG01 for a transaction forbidden by the scheme.
For a business analyst, product owner or subject matter expert, the test is to write the validation requirements for a pacs.008 product as a table, with one row per field, the validation rule, the error code, and the customer message. A requirement that says validate the message is not enough, because it does not say which fields are mandatory, which are optional, which are conditional, and what happens when each one fails. The test cases are built from the same table, with one test per row, and a test that covers only the happy path will miss the errors that cause most production incidents. Source: ISO 20022 pacs.008.001.08; ISO 20022 ExternalPaymentTransactionStatus1Code and ExternalReturnReason1Code. Last reviewed 7 November 2026.
Full lesson text (all scenes)
Completing a lesson updates your progress dashboard on the homepage.
Scene timestamps are estimated by allocating the narration text proportionally across the real audio length. The audio playback position is the source of truth: pause freezes the visual, seeking restores the correct scene, replay restarts the scene animation.
Scene beat timestamps for this lesson were measured from the real audio, not estimated.