Pain.001 vs Pain.002 vs Pain.008: What Each SEPA Message Type Does
The pain family contains messages that have related names but different directions and jobs. Sending a payment instruction, collecting a direct debit, and receiving a bank status response are separate events. Choosing the wrong message type is not a small XML-tag mistake: it changes who is instructing whom to do what.
The three message types at a glance
| Message | Purpose | Direction | Product handling |
|---|---|---|---|
pain.001 | Customer Credit Transfer Initiation | You instruct your bank to send money. | Generated for credit-transfer output. |
pain.002 | Payment Status Report | A bank reports file or transaction status back to you. | Not generated or parsed by this product. |
pain.008 | Customer Direct Debit Initiation | You instruct your bank to collect money from payers. | Generated when Direct Debit output is selected. |
Pain.001: start a credit transfer
Use pain.001 when your organization is paying employees, suppliers, or other recipients. The generator creates a CstmrCdtTrfInitn document, writes PmtMtd as TRF, and uses the selected bank profile to determine the namespace and profile-specific rules.
This is the product's main credit-transfer flow. For practical profile requirements, see the ING SEPA guide or the other bank guides in the SEPA hub.
Pain.008: start a direct debit collection
Use pain.008 when your organization is collecting from payers rather than sending funds to recipients. With Direct Debit selected, the same generator switches to CstmrDrctDbtInitn, writes PmtMtd as DD, and includes direct-debit fields such as mandate reference, signature date, local instrument, and sequence type.
This is not a modified credit-transfer file. It is a different initiation message with payer, creditor, and mandate roles. For the direct-debit workflow, see How to Automate SEPA Direct Debit: Convert Excel to pain.008 XML.
Pain.002: read the bank's response, not another payment instruction
pain.002 is a Payment Status Report. Conceptually, it is how a bank can report acceptance, rejection, or transaction status after receiving an initiation message. It is not an instruction to move money and it is not a converter output.
The implementation switch
The generator takes a transfer type. For a credit transfer it selects the pain.001.001.03 default namespace unless the chosen bank profile overrides it; for Direct Debit it selects pain.008.001.02. It changes the root element, payment method, requested date field, payment-type fields, and transaction structure accordingly. That is why converting a pain.001 file into pain.008 by editing the root tag is unsafe.
Decision table: what are you trying to do?
| Your goal | Message | Who provides it? |
|---|---|---|
| Send payments from your account to recipients | pain.001 | Your payment-initiation workflow generates it. |
| Collect authorized direct debits from payer accounts | pain.008 | Your direct-debit initiation workflow generates it. |
| Understand whether the bank accepted or rejected an initiation | pain.002 | The bank sends it; this product does not generate or parse it. |
Running payroll every month?
Salary Mode turns your spreadsheet into ready-to-submit payment XML.
Try Salary ModeReady to generate bank-compliant SEPA XML files?
Stop struggling with manual formatting. Generate compliant ISO 20022 XML files in seconds directly in your browser.
Start Converting Now (Free)