pacs.008.001.08 XSD schema and business logic
Learn how to generate valid pacs.008.001.08 messages for your ISO 20022 message-based integration to Mambu Payments (formerly Numeral)
1. Usage
The pacs.008.001.08 is a Financial Institution to Financial Institution Customer Credit Transfer. It is used to initiate a customer credit transfer payment in the following situations:
- Standard credit transfers
- Real-time credit transfers and
- RTGS / high volume credit transfers
The payment scheme embodies the nature of the credit transfer. See the list of payment schemes supported here.
2. Message definition and structure
The pacs.008.001.08 message definition and structure is available here
3. Business logic
3.1. Payment identification
A payment is identified by the Payment Information tag located in the pacs.008.001.08 Creditor Transfer Transaction Information tag CdtTrfTxInf:
<CdtTrfTxInf>
<PmtId>
<!-- ... -->
<InstrId></InstrId> <!-- Instruction ID, optional text 1..35 -->
<EndToEndId></EndToEndId> <!-- End to end ID, mandatory text 1..35 -->
<TxId></TxId> <!-- Transaction ID, mandatory text 1..35 -->
<UETR></UETR> <!-- Unique end-to-end transaction reference, optional UUID-v4 -->
</PmtId>
<!-- ... -->
</CdtTrfTxInf>The transaction ID and end to end ID are mandatory:
- The end-to-end ID represents a unique reference set by the first originator PSP of the payment chain. Sometimes, this information may be missing, in which case the default value
NOTPROVIDEDshall be used - The transaction ID represents a unique transaction reference assigned by the instructing party to the instructed party. It may take the same value as the end to end ID
The instruction ID and UETR are optional:
- The instruction ID represents a unique instruction reference assigned by the instructing party to the instructed party. It may take the same value as the transaction ID or end to end ID
- The UETR is an end-to-end ID under uuid v4 format that is documented here. Originally defined by SWIFT and used in Swift payments, the UETR is now adopted outside of Swift
3.2. Determination of payment type
The payment type is defined by the combination of:
- The Clearing System
ClrSyslocated in the Settlement Information: it indicates which payment infrastructure is used to settle the payments - The Service Level
SvcLvllocated in the Payment Type Information: it indicates the cross-border or community-wide rulebook or business rules that have been agreed on - The Local Instrument
LclInstrmlocated in the Payment Type Information: it indicates the nature of the country or system specific local product and processing stream
<FIToFICstmrCdtTrf>
<GrpHdr>
<!-- ... -->
<SttlmInf>
<SttlmMtd>CLRG</SttlmMtd>
<ClrSys> <!-- Clearing system: only one of Cd or Prtry shall be present -->
<Cd></Cd> <!-- ISO Code, text 1..4 -->
<Prtry></Prtry> <!-- Proprietary code, text 1..35 -->
</ClrSys>
</SttlmInf>
</GrpHdr>
</FIToFICstmrCdtTrf><FIToFICstmrCdtTrf>
<CdtTrfTxInf>
<!-- ... -->
<PmtTpInf>
<!-- ... -->
<SvcLvl> <!-- Service level: only one of Cd or Prtry shall be present -->
<Cd></Cd> <!-- ISO Code, text 1..4 -->
<Prtry></Prtry> <!-- Proprietary code, text 1..35 -->
</SvcLvl>
<LclInstrm> <!-- Local instrument: only one of Cd or Prtry shall be present -->
<Cd></Cd> <!-- ISO Code, text 1..35 -->
<Prtry></Prtry> <!-- Proprietary code, text 1..35 -->
</LclInstrm>
<!-- ... -->
</PmtTpInf>
</CdtTrfTxInf>
</FIToFICstmrCdtTrf>Although these data are optional in ISO 20022, Mambu Payments requires some of them to be present in order to apply the correct processing with the rules defined below:
- An optional qualifier: [C] means Code and [P] means Proprietary Code
N/Ameans not applicable: the field is not used and must be absent-means not checked/any: Mambu Payments will not check the value of this field, if present- If the Clearing System is not applicable, then the Settlement Information
SttlmInftag must be absent - Local Instrument must be valued to code =
INSTfor instant payments - Service Level must be valued to code =
URGPfor RTGS / High value urgent payment - Whenever possible, Mambu Payments leverages the existing codes defined in ISO 20022 standards using
ExternalCashClearingSystem1Code,ExternalServiceLevel1CodeandExternalLocalInstrument1Code
The table below defines the values to be used:
Country / Area | Clearing | Service | Local | Mambu Payments type |
|---|---|---|---|---|
SEPA |
| [C] |
|
|
SEPA |
| [C] | [C] |
|
SEPA | [C] |
|
|
|
Switzerland | [C] |
|
| |
Switzerland | [C] |
|
| |
Switzerland | [C] | [C] |
| |
Norway | [C] |
|
| |
Norway | [C] |
|
| |
Norway | [C] | [C] |
| |
Sweden | code in: |
|
| |
Sweden | [C] |
|
| |
Sweden | code in: | [C] |
|
Work in progress
3.3. Payment initiation date time
For real-time payments, it may be necessary to capture the exact payment initiation date time to ensure that the payment is processed under a limited timeframe defined by the payment scheme. This information can be found in the Acceptance Date Time tag located in the pacs.008.001.08 Creditor Transfer Transaction Information tag CdtTrfTxInf:
<CdtTrfTxInf>
<!-- ... -->
<AccptncDtTm></AccptncDtTm> <!-- ISO date time to the millisecond -->
<!-- ... -->
</CdtTrfTxInf>3.4. Party identification
The parties involved in the credit transfer are identified in the pacs.008.001.08 Creditor Transfer Transaction Information tag CdtTrfTxInf. This includes the Debtor (sender), the Creditor (beneficiary), and optionally the Ultimate Debtor or Ultimate Creditor if the payment is made on behalf of another party.
3.4.1. Ultimate debtor, debtor, creditor, and ultimate creditor
The identification of the parties relies on the Party Identification structure.
<CdtTrfTxInf>
<UltmtDbtr> <!-- optional -->
<Nm>ultimate debtor name</Nm>
</UltmtDbtr>
<Dbtr> <!-- mandatory -->
<Nm>debtor name</Nm>
</Dbtr>
<!-- ... -->
<Cdtr> <!-- mandatory -->
<Nm>creditor name</Nm>
</Cdtr>
<!-- ... -->
<UltmtCdtr> <!-- optional, not supported yet in Mambu Payments -->
<Nm>ultimate creditor name</Nm>
</UltmtCdtr>
</CdtTrfTxInf>- Debtor: The party that owes an amount of money to the (ultimate) creditor
- Creditor: The party to which an amount of money is due
- Ultimate Debtor: The party that is the ultimate source of funds for the payment. This is used when the Debtor is acting on behalf of another party (e.g., a subsidiary)
- Ultimate Creditor: The ultimate party to which an amount of money is due. This is used when the Creditor is acting on behalf of another party (e.g., a payment collection agency)
3.4.2. Postal address
The postal address of a party may be provided within the party identification block PstlAdr. Mambu Payments supports unstructured address up to 2 lines, hybrid address and structured address.
<CdtTrfTxInf>
<Dbtr>
<Nm>Debtor Name</Nm>
<PstlAdr>
<Dept>Department Name</Dept>
<SubDept>Sub Department</SubDept>
<StrtNm>Street Name</StrtNm>
<BldgNb>123</BldgNb>
<BldgNm>Building Name</BldgNm>
<Flr>5</Flr>
<PstBx>PO Box 456</PstBx>
<Room>Room 101</Room>
<PstCd>10001</PstCd>
<TwnNm>Town Name</TwnNm>
<TwnLctnNm>Town Location</TwnLctnNm>
<DstrctNm>District Name</DstrctNm>
<CtrySubDvsn>State or Province</CtrySubDvsn>
<Ctry>US</Ctry> <!-- ISO alph-2 country code -->
<AdrLine>Unstructured Address Line 1</AdrLine>
<AdrLine>Unstructured Address Line 2</AdrLine>
</PstlAdr>
</Dbtr>
</CdtTrfTxInf>3.4.3. Party organisation or private identification
A party can be identified by an organisation identification OrgId for companies or a private identification PrvtId for individuals. The two structures are mutually exclusive.
<CdtTrfTxInf>
<Dbtr>
<Nm>Debtor Name</Nm>
<PstlAdr>
<!-- ... -->
</PstlAdr>
<Id>
<OrgId>
<AnyBIC></AnyBIC> <!-- Business Identification Code -->
<LEI></LEI> <!-- Legal Entity Identifier -->
<Othr>
<Id></Id> <!-- Other identifier -->
<SchmeNm>
<Cd></Cd>
<Prtry></Prtry>
</SchmeNm>
</Othr>
</OrgId>
</Id>
</Dbtr>
</CdtTrfTxInf><CdtTrfTxInf>
<Dbtr>
<Nm>Debtor Name</Nm>
<PstlAdr>
<!-- ... -->
</PstlAdr>
<Id>
<PrvtId>
<DtAndPlcOfBirth>
<BirthDt></BirthDt> <!-- Birth date -->
<PrvcOfBirth> <!-- Birth province -->
<CityOfBirth> <!-- Birth city -->
<CtryOfBirth> <!-- Birth country -->
</DtAndPlcOfBirth>
<Othr>
<Id></Id> <!-- Other identifier -->
<SchmeNm>
<Cd></Cd>
<Prtry></Prtry>
</SchmeNm>
</Othr>
</PrvtId>
</Id>
</Dbtr>
</CdtTrfTxInf>3.5. Debtor account and creditor account
The debtor account DbtrAcct and creditor account CdtrAcct are located in the pacs.008.001.08 Creditor Transfer Transaction Information tag CdtTrfTxInf.
The account identification is mandatory. The format is either:
- IBAN: The International Bank Account Number is the standard identifier for cross-border payments and domestic payments in SEPA countries
- Other: For non-IBAN accounts, the proprietary identification must be used, optionally qualified by a scheme name (e.g., BBAN) and/or an issue
<CdtTrfTxInf>
<DbtrAcct>
<Id>
<IBAN></IBAN>
</Id>
</DbtrAcct>
</CdtTrfTxInf><CdtTrfTxInf>
<DbtrAcct>
<Id>
<Othr>
<Id></Id>
<SchmeNm>
<Cd></Cd>
<Prtry></Prtry>
</SchmeNm>
<Issr></Issr>
</Othr>
</Id>
</DbtrAcct>
</CdtTrfTxInf>3.6. Debtor agent and creditor agent
The debtor agent DbtrAgt (the debtor's bank) and creditor agent CdtrAgt (the beneficiary's bank) are located in the pacs.008.001.08 Creditor Transfer Transaction Information tag CdtTrfTxInf.
The agent is typically identified by one of the following:
- BICFI: The Business Identifier Code is the standard ISO 9362 identifier for financial institutions
- Clearing System Member ID: Used to identify the agent via a local clearing system code (e.g., Sort Code in the UK, Fedwire Routing Number in the US, or BLZ in Germany)
<CdtTrfTxInf>
<DbtrAgt>
<FinInstnId>
<BICFI></BICFI> <!-- BIC 8 or BIC 11 -->
</DbtrAgt>
</CdtTrfTxInf><CdtTrfTxInf>
<DbtrAgt>
<FinInstnId>
<ClrSysMmbId>
<ClrSysId>
<Cd></Cd> <!-- text 1..5 -->
<Prtry></Prtry> <!-- text 1..35 -->
</ClrSysId>
<MmbId></MmbId> <!-- text 1..35 -->
</ClrSysMmbId>
</FinInstnId>
</DbtrAgt>
</CdtTrfTxInf>The official clearing system codes are defined in the ISO 20022 External Code Sets, specifically under the code set name ExternalClearingSystemIdentification1Code. This list is maintained by the ISO 20022 Registration Authority and is updated quarterly.
The most common Clearing System Identifications worldwide are provided below:
| Country | Code | System / Description | Format (Bank ID) |
|---|---|---|---|
| Austria | ATBLZ | Austrian Bankleitzahl | 5 digits |
| Australia | AUBSB | Australian Bank State Branch (BSB) Code | 6 digits |
| Canada | CACPA | Canadian Payments Association Routing Number | 9 digits |
| China | CNAPS | CNAPS Identifier | 12 digits |
| Germany | DEBLZ | German Bankleitzahl | 8 digits |
| Spain | ESNCC | Spanish Domestic Interbanking Code | 8-9 digits |
| United Kingdom | GBDSC | UK Domestic Sort Code | 6 digits |
| Hong Kong | HKNCC | Hong Kong Bank Code | 3 digits |
| India | INFSC | Indian Financial System Code (IFSC) | 11 chars |
| Ireland | IENCC | Irish National Clearing Code (NSC) | 6 digits |
| Italy | ITNCC | Italian Domestic Identification Code | 10 digits |
| Japan | JPZGN | Japan Zengin Clearing Code | 7 digits |
| New Zealand | NZNCC | New Zealand National Clearing Code | 6 digits |
| Poland | PLKNR | Polish National Clearing Code (KNR) | 8 digits |
| Russia | RUCBC | Russian Central Bank Identification Code | 9 digits |
| Singapore | SGIBG | IBG Sort Code | 7 digits |
| Switzerland | CHSIC | Swiss Clearing Code (SIC) | 6 digits |
| Switzerland | CHBCC | Swiss Clearing Code (BC Code) | 3-5 digits |
| USA | USABA | US Routing Number (Fedwire, NACHA) | 9 digits |
| USA | USPID | CHIPS Participant Identifier | 4 digits |
| South Africa | ZANCC | South African National Clearing Code | 6 digits |
Updated about 10 hours ago
