Learn

What is pain.001?

A plain-English guide to ISO 20022 payment messages — and how PainXML helps you get them right before your bank sees them.

ISO 20022 in one paragraph

ISO 20022 is the global standard for financial messaging. It defines a family of XML messages — including pain.001 (a credit transfer initiation) and pain.008 (a direct debit) — that banks exchange to move money. Because the format is strict, a single malformed field (a bad IBAN, a missing address) can get a whole file rejected.

City skyline at dusk

pain.001 — credit transfer

Instructs your bank to send money. One file can contain a batch of many payments to many creditors.

pain.008 — direct debit

Instructs your bank to collect money from debtors, tied to a SEPA mandate. PainXML generates this too.

SEPA vs CBPR+

SEPA

Euro payments within the Single Euro Payments Area. Uses pain.001.001.03 (or .09). Currency is always EUR; IBANs are required.

CBPR+

Swift cross-border payments. Uses pain.001.001.09 and adds a UETR and structured addresses on every transaction.

Modern futuristic architecture

What PainXML checks

Beyond the XML schema itself, PainXML runs a scheme rulebook so you see why a file fails — not just that it did.

  • XSD schema validation with line-level errors
  • IBAN & BIC checksum and format checks
  • Named SEPA & CBPR+ rules (e.g. SEPA-CDTR-IBAN, CBPR-UETR)

What a file looks like

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
  <CstmrCdtTrfInitn>
    <GrpHdr>
      <MsgId>PX-1</MsgId>
      <CreDtTm>2026-10-05T12:00:00</CreDtTm>
      <NbOfTxs>1</NbOfTxs>
    </GrpHdr>
    <PmtInf>
      <Dbtr><Nm>ACME GmbH</Nm></Dbtr>
      <DbtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></DbtrAcct>
      <CdtTrfTxInf>
        <Amt><InstdAmt Ccy="EUR">100.00</InstdAmt></Amt>
        <Cdtr><Nm>Alice Müller</Nm></Cdtr>
        <CdtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></CdtrAcct>
      </CdtTrfTxInf>
    </PmtInf>
  </CstmrCdtTrfInitn>
</Document>

Try it yourself

Validate or generate a file in the studio — everything runs in your browser.

Open the studio