ValidateFin
Back to blog
·Updated Mar 11, 2026·SEPA·By Eliel Nicaise

pain.001 vs pain.008 — SEPA Credit Transfer vs Direct Debit Explained

Understand the key differences between SEPA pain.001 (Credit Transfer) and pain.008 (Direct Debit) XML formats, when to use each, and how they work.

Two formats, two payment flows

SEPA uses two core ISO 20022 message types for payment initiation: pain.001 (CustomerCreditTransferInitiation) for pushing money to a beneficiary, and pain.008 (CustomerDirectDebitInitiation) for pulling money from a debtor. Despite sharing the same XML foundation, they serve fundamentally different business purposes.

Choosing the wrong format or confusing their fields is a common source of payment failures. This guide explains the structural differences, business use cases, and validation rules for each.

Both formats are governed by the European Payments Council (EPC) rulebooks and follow the ISO 20022 standard. ValidateFin validates both types.

Comparison table

The key differences between pain.001 and pain.008 at a glance:

Aspectpain.001 (Credit Transfer)pain.008 (Direct Debit)
DirectionPush — debtor sends money to creditorPull — creditor collects money from debtor
Use caseSupplier payments, salary transfers, one-time paymentsRecurring collections: subscriptions, utilities, insurance premiums
InitiatorDebtor (payer) initiates the fileCreditor (collector) initiates the file
Key elementCdtTrfTxInf (Credit Transfer Transaction)DrctDbtTxInf (Direct Debit Transaction)
Mandate required?No mandate neededSDD mandate required (MndtId, DtOfSgntr)
Creditor IDNot requiredMandatory (CdtrSchmeId)
Sequence typeNot applicableFRST, RCUR, FNAL, OOFF
Execution date fieldReqdExctnDtReqdColltnDt

When to use pain.001

Use pain.001 (Credit Transfer) when:

You need to pay suppliers, contractors, or employees. The debtor (your company) pushes funds from your bank account to one or more beneficiary accounts.

pain.001 is the most common SEPA format. It supports batch payments (multiple transactions in one file), urgent payments (with specific service level), and both domestic and cross-border EUR transfers.

Common versions: pain.001.001.03 (widely adopted), pain.001.001.09 (2019 update), pain.001.001.11 (latest). ValidateFin validates all three.

When to use pain.008

Use pain.008 (Direct Debit) when:

You need to collect recurring payments from customers — subscriptions, utility bills, insurance premiums, loan repayments. The creditor (your company) pulls funds from the debtor's account.

pain.008 requires a valid SEPA Direct Debit mandate (signed authorization from the debtor). Each transaction must reference the mandate ID, signature date, and sequence type (FRST for first collection, RCUR for recurring, FNAL for last, OOFF for one-off).

The creditor must also have a valid Creditor Identifier (CI) registered in their country: ICS in France, Gläubiger-ID in Germany, etc.

Validate both formats instantly

ValidateFin validates both pain.001 and pain.008 files. Upload your SEPA XML file and get instant feedback on schema compliance, mandatory fields, IBAN validation, and business rules. No file is uploaded — 100% browser-based.

Open SEPA Validator

Frequently Asked Questions

Can one SEPA file contain both credit transfers and direct debits?

No. pain.001 and pain.008 are separate message types with different XML schemas. You cannot mix credit transfers and direct debits in a single file. Submit them as separate files to your bank.

Which format is more complex to implement?

pain.008 (Direct Debit) is more complex because it requires mandate management (MndtId, DtOfSgntr, SeqTp), a Creditor Identifier, and pre-notification to debtors. pain.001 is simpler — just debtor, creditor, amount, and execution date.

Do both formats use the same IBAN/BIC validation?

Yes. Both pain.001 and pain.008 require valid IBANs (mod-97 checksum) and optional BICs. The IBAN validation rules are identical across both formats.

What is a SEPA mandate and why is it only for pain.008?

A SEPA Direct Debit mandate is a signed authorization from the debtor allowing the creditor to collect funds. It is legally required because pain.008 pulls money from someone else's account. pain.001 pushes your own money, so no third-party authorization is needed.

Can I convert a pain.001 file to pain.008?

Not directly. They have different XML structures and business logic. A credit transfer sends money; a direct debit collects money. You need to generate each from the appropriate source data.

Which versions are supported by ValidateFin?

ValidateFin validates pain.001.001.03, .09, .11 and pain.008.001.02, .08, .10 — covering all major EPC-supported versions.

Is the CtrlSum calculated the same way?

Yes. In both formats, CtrlSum is the sum of all individual transaction amounts (InstdAmt). The calculation method is identical.

What is the SeqTp field in pain.008?

SeqTp (Sequence Type) indicates the position in a series: FRST (first collection), RCUR (recurring), FNAL (final), OOFF (one-off). This field does not exist in pain.001.

Can I use pain.001 for refunds?

Yes. Use pain.001 to send money back to a customer. This is simpler than a pain.008 reversal and does not require a mandate.

Do banks charge differently for pain.001 vs pain.008?

Pricing varies by bank and country. Generally, credit transfers (pain.001) are cheaper per transaction than direct debits (pain.008) because SDD involves more processing (mandate verification, return handling).