Guides · Start here · By Tan Gravam · Updated 2026-10-20
What is pain.001? The ISO 20022 credit transfer initiation message
pain.001 (CustomerCreditTransferInitiation) is the ISO 20022 XML message a company sends to its bank to initiate one or more credit transfers. A file has one group header, one or more payment information blocks (each with one debtor account and one requested execution date) and, in each block, one or more credit transfer transactions. The bank answers with a pain.002 status report.
Definition
pain.001 is the short name of the ISO 20022 message CustomerCreditTransferInitiation. ISO 20022 defines it as a message "sent by the initiating party to the forwarding agent or debtor agent. It is used to request movement of funds from the debtor account to a creditor." The initiating party is either the debtor or a party that initiates the transfer on its behalf; the debtor agent is the financial institution servicing the debtor’s account. ERP and treasury systems such as SAP generate the file from a payment run.
pain stands for the Payments Initiation message set, and the last number is the version: pain.001.001.09 is CustomerCreditTransferInitiationV09 and pain.001.001.03 is CustomerCreditTransferInitiationV03. The message caters for bulk and single payment instructions (EPC132-08 2025 v1.0, section 2.1.1).
Where pain.001 sits
Other ISO 20022 messages have similar names but other jobs, for example pain.008 (direct debit initiation) and pacs.008 (interbank credit transfer). BankLint checks pain.001 only.
- pain.001, company to bank: the payment instructions.
- pain.002, bank to company: the customer payment status report on a pain.001, accepting or rejecting the file, a payment information block or a single transaction with a reason code. The SEPA guidelines pair
pain.001.001.09withpain.002.001.10. See pain.002 status and reason codes.
The three levels: GrpHdr, PmtInf and CdtTrfTxInf
The root element is Document, which contains one CstmrCdtTrfInitn. Inside it, data that applies to many payments is given once at the higher level.
| Level | Occurs | Holds | Mandatory in the schema |
|---|---|---|---|
GrpHdr (group header) | Once per file | Data for the whole file: its identification, creation time, number of transactions and the initiating party. | MsgId, CreDtTm, NbOfTxs, InitgPty; CtrlSum is optional |
PmtInf (payment information) | One or more per file | The debit side shared by its transactions: payment method, payment type, requested execution date, debtor, debtor account, debtor agent and charge bearer. | PmtInfId, PmtMtd, ReqdExctnDt, Dbtr, DbtrAcct, DbtrAgt, at least one CdtTrfTxInf |
CdtTrfTxInf (credit transfer transaction) | One or more per block | One payment: its references, amount, creditor agent, creditor, creditor account and remittance information. | PmtId with EndToEndId, Amt |
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
<CstmrCdtTrfInitn>
<GrpHdr>…</GrpHdr>
<PmtInf>
…
<CdtTrfTxInf>…</CdtTrfTxInf>
<CdtTrfTxInf>…</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>The creditor and the creditor account are optional in the schema but mandatory in SEPA, and SEPA also makes the control sums mandatory (control sums). A complete file is explained element by element in the pain.001 XML example.
Versions: pain.001.001.03 and pain.001.001.09
The version is in the namespace of Document: urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 or urn:iso:std:iso:20022:tech:xsd:pain.001.001.03. The two versions in common use are .03 (2009) and .09 (2019). Later ISO 20022 versions exist, but the 2025 SEPA implementation guidelines are written for .09.
The versions differ in a few elements, such as the agent BIC (BIC in .03, BICFI in .09) and the requested execution date. See pain.001.001.03 vs pain.001.001.09.
SEPA and non-SEPA payments
pain.001 is a global message; a SEPA credit transfer is one way to use it. SEPA payments follow the EPC customer-to-PSP implementation guidelines, a stricter subset: euro only, service level SEPA, charge bearer SLEV, IBANs and names of at most 70 characters. See SEPA Credit Transfer rules.
One file can carry SEPA and other payments in separate payment information blocks, each marked by its service level code, if the bank accepts mixed files. See SEPA and non-SEPA payments in one pain.001.
- SEPA-SCT-SVCLVL-001BLOCKERService level code must be SEPA. When a service level code is given for a SEPA credit transfer, only the code SEPA is allowed.
- SEPA-SCT-CCY-001BLOCKERCurrency must be EUR. SEPA credit transfers are denominated in euro only.
- BNK-SCH-001INFOPayment information block not checked against SEPA rules. This payment information block names a service level other than SEPA, so the SEPA Credit Transfer rules were not applied to it. The XML and ISO 20022 schema checks still cover it.
How to validate a pain.001
The BankLint validator runs all of these checks at once and names the rule behind each finding. The file is processed in memory and not stored. The checks are described in how to validate a pain.001 file.
- The file must be well-formed XML, and its root element and namespace must name a supported version.
- It must be valid against the ISO 20022 schema (XSD) of that version. You can check this on your own machine: validate a pain.001 against the XSD.
- A SEPA file must also follow the SEPA rules, which the schema does not contain.
Questions
What does pain stand for in pain.001?
Payments Initiation, the ISO 20022 message set that pain.001 belongs to. pain.001 is its customer credit transfer initiation message.
What is the difference between pain.001 and pain.002?
pain.001 goes from the company to the bank and contains the payment instructions. pain.002 is the bank’s status report on that pain.001: accepted or rejected, with reason codes.
Is pain.001 only used for SEPA payments?
No. pain.001 is a global ISO 20022 message. SEPA credit transfers use it under the EPC implementation guidelines, which restrict it further; other payments follow the specification of the bank that receives the file.
Which pain.001 version should I use?
The one your bank’s file specification names. The 2025 SEPA guidelines describe pain.001.001.09 only.
Sources: EPC132-08 2025 Version 1.0 (European Payments Council) and the ISO 20022 message schemas. All sources and dates: Standards and sources.
Validate a pain.001 fileFree, no account needed, files are not stored.