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 NOTPROVIDED shall 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 ClrSys located in the Settlement Information: it indicates which payment infrastructure is used to settle the payments
  • The Service Level SvcLvl located 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 LclInstrm located 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/A means 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 SttlmInf tag must be absent
  • Local Instrument must be valued to code = INST for instant payments
  • Service Level must be valued to code = URGP for RTGS / High value urgent payment
  • Whenever possible, Mambu Payments leverages the existing codes defined in ISO 20022 standards using ExternalCashClearingSystem1Code, ExternalServiceLevel1Code and ExternalLocalInstrument1Code

The table below defines the values to be used:

Country / Area
Payment scheme

Clearing
System

Service
Level

Local
Instrument

Mambu Payments type

SEPA
Credit Transfer

N/A

[C] SEPA

N/A or [C] TRF

sct

SEPA
Instant Credit Transfer

N/A

[C] SEPA

[C] INST

sct_instant

SEPA
RTGS / High value

[C] TGT

N/A or [C]URGP

-

target2

Switzerland
Credit Transfer

[C] SIC for CHF
[C] SEU for EUR

N/A or [C] not in URGP

-

Switzerland
Instant Credit Transfer

[C] SIP

-

N/A or
[C]INST

Switzerland
RTGS / High value

[C] SIC for CHF
[C] SEU for EUR

[C]URGP

-

Norway
Credit Transfer

[C] NOC

N/A or [C] not in URGP

-

Norway
Instant Credit Transfer

[C] NOR

-

N/A or
[C]INST

Norway
RTGS / High value

[C] NOC

[C]URGP

-

Sweden
Credit Transfer

code in:
[C] BCC BGC Clearing CUG
[C] SESBA Sweden Bankgiro Clearing Code

N/A or [C] not in URGP

-

Sweden
Instant Credit Transfer

[C] RIX

-

N/A or
[C]INST

Sweden
RTGS / High value

code in:
[C] SEC Euro RTGS
[C] SSK SEK RTGS (RIX)
[C] RIX SEK RTGS (RIX)

[C]URGP

-

🚧

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:

CountryCodeSystem / DescriptionFormat (Bank ID)
AustriaATBLZAustrian Bankleitzahl5 digits
AustraliaAUBSBAustralian Bank State Branch (BSB) Code6 digits
CanadaCACPACanadian Payments Association Routing Number9 digits
ChinaCNAPSCNAPS Identifier12 digits
GermanyDEBLZGerman Bankleitzahl8 digits
SpainESNCCSpanish Domestic Interbanking Code8-9 digits
United KingdomGBDSCUK Domestic Sort Code6 digits
Hong KongHKNCCHong Kong Bank Code3 digits
IndiaINFSCIndian Financial System Code (IFSC)11 chars
IrelandIENCCIrish National Clearing Code (NSC)6 digits
ItalyITNCCItalian Domestic Identification Code10 digits
JapanJPZGNJapan Zengin Clearing Code7 digits
New ZealandNZNCCNew Zealand National Clearing Code6 digits
PolandPLKNRPolish National Clearing Code (KNR)8 digits
RussiaRUCBCRussian Central Bank Identification Code9 digits
SingaporeSGIBGIBG Sort Code7 digits
SwitzerlandCHSICSwiss Clearing Code (SIC)6 digits
SwitzerlandCHBCCSwiss Clearing Code (BC Code)3-5 digits
USAUSABAUS Routing Number (Fedwire, NACHA)9 digits
USAUSPIDCHIPS Participant Identifier4 digits
South AfricaZANCCSouth African National Clearing Code6 digits