
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.

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+
Euro payments within the Single Euro Payments Area. Uses pain.001.001.03 (or .09). Currency is always EUR; IBANs are required.
Swift cross-border payments. Uses pain.001.001.09 and adds a UETR and structured addresses on every transaction.

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.