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)

A pacs.008.001.08 is a Financial Institution to Financial Institution Customer Credit Transfer, used to move funds from a debtor to a creditor via a payment scheme.

Mambu Payments supports the following transfer types:

  • Standard credit transfers
  • Real-time credit transfers
  • RTGS / high-value credit transfers

The payment scheme determines which transfer type applies. See supported payment schemes for a high level description.

1. Message definition and structure

Access the message definition and structure here.

2. Business logic

2.1. Payment identification

A payment is identified by the Payment Information block inside 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>
FieldTagRequiredDescription
End-to-end ID<EndToEndId>MandatoryUnique reference set by the first originator PSP in the payment chain. Use NOTPROVIDED if unavailable.
Transaction ID<TxId>MandatoryUnique reference assigned by the instructing party to the instructed party. May equal the end-to-end ID.
Instruction ID<InstrId>OptionalUnique instruction reference assigned by the instructing party. May equal the transaction ID or end-to-end ID.
UETR<UETR>OptionalUUID v4 end-to-end reference. Originally defined by SWIFT, now adopted outside of SWIFT.

2.2. Determination of payment type

Mambu Payments determines the payment type from three fields in the message:

  • Clearing System (ClrSys) – the payment infrastructure used to settle the payment, located in the Settlement Information block
  • Service Level (SvcLvl) – the rulebook or business rules that apply, located in the Payment Type Information block
  • Local Instrument (LclInstrm) – the local product or processing stream, located in the Payment Type Information block
<FIToFICstmrCdtTrf>
  <GrpHdr>
    <SttlmInf>
      <SttlmMtd>CLRG</SttlmMtd>
      <ClrSys>  <!-- only one of Cd or Prtry must be present -->
        <Cd></Cd>       <!-- ISO code, text 1..4 -->
        <Prtry></Prtry> <!-- Proprietary code, text 1..35 -->
      </ClrSys>
    </SttlmInf>
  </GrpHdr>
</FIToFICstmrCdtTrf>
<FIToFICstmrCdtTrf>
  <CdtTrfTxInf>
    <PmtTpInf>
      <SvcLvl>    <!-- only one of Cd or Prtry must be present -->
        <Cd></Cd>       <!-- ISO code, text 1..4 -->
        <Prtry></Prtry> <!-- Proprietary code, text 1..35 -->
      </SvcLvl>
      <LclInstrm> <!-- only one of Cd or Prtry must be present -->
        <Cd></Cd>       <!-- ISO code, text 1..35 -->
        <Prtry></Prtry> <!-- Proprietary code, text 1..35 -->
      </LclInstrm>
    </PmtTpInf>
  </CdtTrfTxInf>
</FIToFICstmrCdtTrf>

Although these fields are optional in the ISO 20022 standard, Mambu Payments requires some of them to route your payment correctly.

This is fully described in this spreadsheet that details the different property values in order to identify the scheme for both outgoing and incoming pacs.008.

For example, a US wire payment would be created as follows:

<FIToFICstmrCdtTrf>
  <GrpHdr>
    <SttlmInf>
      <SttlmMtd>CLRG</SttlmMtd>
      <ClrSys>
        <Cd>FDW</Cd> <!-- ISO FDW code -->
      </ClrSys>
    </SttlmInf>
    <!-- ... -->
  </GrpHdr>
  <CdtTrfTxInf>
    <PmtTpInf>
      <SvcLvl> 
        <Cd>URGP</Cd>       <!-- ISO code, text 1..4 -->
      </SvcLvl>
      <!-- no local instrument -->
    </PmtTpInf>
    <!-- ... -->
  </CdtTrfTxInf>
</FIToFICstmrCdtTrf>

2.3. Payment initiation date time

For real-time payments, capture the exact initiation date time in the Acceptance Date Time tag inside CdtTrfTxInf. Payment schemes use this to enforce processing time limits.

<CdtTrfTxInf>
  <AccptncDtTm></AccptncDtTm> <!-- ISO date time, millisecond precision -->
</CdtTrfTxInf>

2.4. Party identification

The parties involved in the transfer are declared in CdtTrfTxInf. This includes the Debtor (payer), the Creditor (beneficiary), and optionally an Ultimate Debtor or Ultimate Creditor for on-behalf-of payments.

2.4.1. Party roles

RoleTagRequiredDescription
Debtor<Dbtr>MandatoryThe party that owes funds to the creditor.
Creditor<Cdtr>MandatoryThe party to which funds are due.
Ultimate Debtor<UltmtDbtr>OptionalThe original source of funds, when the Debtor acts on behalf of another party (e.g. a subsidiary).
Ultimate Creditor<UltmtCdtr>OptionalThe ultimate recipient of funds, when the Creditor acts on behalf of another party (e.g. a collection agency). Not supported in Mambu Payments.
<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 in Mambu Payments -->
    <Nm>Ultimate creditor name</Nm>
  </UltmtCdtr>
</CdtTrfTxInf>

2.4.2. Postal address

Provide the postal address of a party inside the <PstlAdr> block within the party identification. Mambu Payments supports unstructured (up to 2 lines), hybrid, and structured addresses.

<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 alpha-2 country code -->
      <AdrLine>Unstructured Address Line 1</AdrLine>
      <AdrLine>Unstructured Address Line 2</AdrLine>
    </PstlAdr>
  </Dbtr>
</CdtTrfTxInf>

2.4.3. Organisation or private identification

Identify a party using either an organisation identification (<OrgId>) for companies or a private identification (<PrvtId>) for individuals. The two are mutually exclusive.

<!-- Organisation identification -->
<CdtTrfTxInf>
  <Dbtr>
    <Nm>Debtor Name</Nm>
    <Id>
      <OrgId>
        <AnyBIC></AnyBIC> <!-- Business Identification Code -->
        <LEI></LEI>       <!-- Legal Entity Identifier -->
        <Othr>
          <Id></Id>
          <SchmeNm>
            <Cd></Cd>
            <Prtry></Prtry>
          </SchmeNm>
        </Othr>
      </OrgId>
    </Id>
  </Dbtr>
</CdtTrfTxInf>
<!-- Private identification -->
<CdtTrfTxInf>
  <Dbtr>
    <Nm>Debtor Name</Nm>
    <Id>
      <PrvtId>
        <DtAndPlcOfBirth>
          <BirthDt></BirthDt>       <!-- Birth date -->
          <PrvcOfBirth></PrvcOfBirth> <!-- Birth province -->
          <CityOfBirth></CityOfBirth> <!-- Birth city -->
          <CtryOfBirth></CtryOfBirth> <!-- Birth country -->
        </DtAndPlcOfBirth>
        <Othr>
          <Id></Id>
          <SchmeNm>
            <Cd></Cd>
            <Prtry></Prtry>
          </SchmeNm>
        </Othr>
      </PrvtId>
    </Id>
  </Dbtr>
</CdtTrfTxInf>

2.5. Debtor account and creditor account

Declare the debtor account (<DbtrAcct>) and creditor account (<CdtrAcct>) inside CdtTrfTxInf. The account identification is mandatory and uses one of two formats:

  • IBAN – standard identifier for cross-border and SEPA domestic payments
  • Other – proprietary identification for non-IBAN accounts, optionally qualified by a scheme name (e.g. BBAN) or issuer
<!-- IBAN format -->
<CdtTrfTxInf>
  <DbtrAcct>
    <Id>
      <IBAN></IBAN>
    </Id>
  </DbtrAcct>
</CdtTrfTxInf>
<!-- Other format -->
<CdtTrfTxInf>
  <DbtrAcct>
    <Id>
      <Othr>
        <Id></Id>
        <SchmeNm>
          <Cd></Cd>
          <Prtry></Prtry>
        </SchmeNm>
        <Issr></Issr>
      </Othr>
    </Id>
  </DbtrAcct>
</CdtTrfTxInf>

2.6. Debtor agent and creditor agent

Declare the debtor agent (<DbtrAgt>, the debtor's bank) and creditor agent (<CdtrAgt>, the creditor's bank) inside CdtTrfTxInf. Identify the agent using one of:

  • BICFI – ISO 9362 Business Identifier Code for financial institutions (BIC 8 or BIC 11)
  • Clearing System Member ID – local clearing code (for instance. Sort Code in the UK, Fedwire Routing Number in the US, or BLZ in Germany)
<!-- BICFI identification -->
<CdtTrfTxInf>
  <DbtrAgt>
    <FinInstnId>
      <BICFI></BICFI>
    </FinInstnId>
  </DbtrAgt>
</CdtTrfTxInf>
<!-- Clearing System Member ID -->
<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>

Find the full list of clearing system codes in the ISO 20022 External Code Sets under ExternalClearingSystemIdentification1Code. The ISO 20022 Registration Authority updates this list quarterly.

Common clearing system codes include:

CountryCodeSystemBank ID format
AustriaATBLZAustrian Bankleitzahl5 digits
AustraliaAUBSBAustralian Bank State Branch (BSB)6 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
USAUSABARouting Number (Fedwire, NACHA)9 digits
USAUSPIDCHIPS Participant Identifier4 digits
South AfricaZANCCSouth African National Clearing Code6 digits