Payments Initiation

CustomerCreditTransferInitiationV09

painarea
001message
001variant
09version

Payments Initiation

The instruction a customer — or a PISP acting for one — sends to its bank to move money. In PSD2 this is what a bulk or file payment body actually contains.

Schema versions

SWIFT and ISO publish successive XSD revisions of the same business message (e.g. pacs.008.001.08 → .10 → .13; same pattern for camt and pain). Markets pin one via a usage guideline (EPC SEPA, CBPR+, Swiss SPS…) and may add a country suffix (pacs.008.001.08.ch.02) — the Document xmlns must match that XSD.

ISO catalogue (XSD) ↗SWIFT / CBPR+ ↗SWIFT & versioning glossary →

EPC customer initiation baseline used with modern pain.001 file and API payloads. UK Open Banking bulk channels reuse this xmlns.

Markets / railsSEPA SCTUK Open Banking

Facts

Root element
CstmrCdtTrfInitn
Direction
Customer → bank
Namespace
urn:iso:std:iso:20022:tech:xsd:pain.001.001.09
Variant (flavour)
001
Version
09
initiationsepacredit transferbulkpainsicchf

Elements a validator will insist on

Not the full XSD — the paths whose absence causes the rejections you actually see in production.

  • CstmrCdtTrfInitn/GrpHdr/MsgId
  • CstmrCdtTrfInitn/GrpHdr/CreDtTm
  • CstmrCdtTrfInitn/GrpHdr/NbOfTxs
  • CstmrCdtTrfInitn/GrpHdr/InitgPty
  • CstmrCdtTrfInitn/PmtInf/PmtInfId
  • CstmrCdtTrfInitn/PmtInf/PmtMtd
  • CstmrCdtTrfInitn/PmtInf/Dbtr
  • CstmrCdtTrfInitn/PmtInf/DbtrAcct/Id/IBAN
  • CstmrCdtTrfInitn/PmtInf/CdtTrfTxInf/PmtId/EndToEndId
  • CstmrCdtTrfInitn/PmtInf/CdtTrfTxInf/Amt/InstdAmt
  • CstmrCdtTrfInitn/PmtInf/CdtTrfTxInf/Cdtr
  • CstmrCdtTrfInitn/PmtInf/CdtTrfTxInf/CdtrAcct/Id/IBAN

Usage in flows

ISO 20022 payload· XML

pain.001 SEPA credit transfer

One payment information block, one transaction. NbOfTxs and CtrlSum must reconcile with the transactions actually present or the whole file is rejected at group level. Switch XML | JSON in the inspector without leaving this sample.

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>MSG-20260812-0001</MsgId>
<CreDtTm>2026-08-12T09:14:22</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>1250.00</CtrlSum>
<InitgPty>
<Nm>Aggregateur SAS</Nm>
<Id>
<OrgId>
<Othr>
<Id>PSDFR-ACPR-91234</Id>
<SchmeNm>
<Cd>COID</Cd>
</SchmeNm>
</Othr>
</OrgId>
</Id>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>PMT-20260812-0001</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<BtchBookg>false</BtchBookg>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>1250.00</CtrlSum>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>
<Dt>2026-08-13</Dt>
</ReqdExctnDt>
<Dbtr>
<Nm>Marie Lefebvre</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>FR7630006000011234567890189</IBAN>
</Id>
<Ccy>EUR</Ccy>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BICFI>DEMOFRPPXXX</BICFI>
</FinInstnId>
</DbtrAgt>
<ChrgBr>SLEV</ChrgBr>
<CdtTrfTxInf>
<PmtId>
<InstrId>INSTR-0001</InstrId>
<EndToEndId>E2E-2026-0842</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">1250.00</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BICFI>COBADEFFXXX</BICFI>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Atelier Rousseau SARL</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE89370400440532013000</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Facture 2026-0842</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
52 elementsdepth 8pain.001.001.091805 charsxml
Open in Try editor →

Edit in the XML / JSON tab, then run the check.