pain.001 and pain.008 are the two most widely used ISO 20022 file formats in SEPA bank exchanges. The names look similar, the XML structure is close, but their use is radically different — and mixing the two up is a common source of errors for anyone new to bank integration.
pain.001: the SEPA Credit Transfer
pain.001 (CustomerCreditTransferInitiation) is used to initiate transfers: the sender of the file is the one paying. It's the format used to settle supplier invoices, pay salaries, or move funds between accounts. Each transfer specifies the debtor account, the creditor account, the amount, and a payment reference.
pain.008: the SEPA Direct Debit
pain.008 (CustomerDirectDebitInitiation) is used to initiate direct debits: this time, the sender of the file is the one collecting funds, based on prior authorization from the payer (the SEPA mandate). It's the format used for recurring collections — subscriptions, customer invoices with a signed mandate. Without a valid registered mandate, a pain.008 direct debit will be rejected by the payer's bank.
Where these files fit into the Arkaio flow
From Sage Intacct, an approved supplier invoice selected for payment automatically generates a pain.001 file, sent to the bank via EBICS. Conversely, a customer due date with an active SEPA mandate can generate a pain.008 to trigger collection on the scheduled date. In both cases, XML generation strictly follows the ISO 20022 schema expected by banks — a detail that often trips up in-house implementations.
Common generation errors
Bank rejections on these files almost always come from the same causes: malformed or non-existent IBAN, missing BIC on transfers outside the "STP" SEPA zone, incorrect OrgId structure for creditor identification on direct debits, or an expired or never-registered SEPA mandate. These checks are applied automatically before sending, rather than discovered after a rejection.
Full flow diagram
Approved invoice or due date in Sage Intacct → generation of a pain.001 or pain.008 file depending on payment direction → ISO 20022 compliance checks → EBICS transmission to the bank → status tracking (accepted, rejected, pending) directly visible from the dashboard, with no need to switch tools to check a payment went out.
In summary
- pain.001 initiates transfers (the sender pays), pain.008 initiates direct debits (the sender collects on a mandate)
- Both are generated automatically from approved invoices and due dates in Sage Intacct
- ISO 20022 compliance checks (IBAN, BIC, mandate) are applied before sending, not after a rejection
- The status of every transmitted file stays visible from the Arkaio dashboard