SEPA XML: the file formats behind euro transfers and direct debits
SEPA XML is the ISO 20022 file format in which companies send euro credit transfers and direct debits to their bank. A pain.001 file carries transfers, a pain.008 file carries direct debit collections, and the bank answers with a pain.002 status report.
pain.001, pain.008 and pain.002
The name of a message has three parts: pain.001.001.09 is the message pain.001, variant 001, version 09. pain stands for payment initiation, the messages a customer sends to its bank. A pain.001 file holds one or more batches of SEPA credit transfers with debtor, creditor, IBAN, amount, execution date and remittance information. A pain.008 file holds direct debit collections and needs, per transaction, the mandate reference and date, the sequence type of the collection and the local instrument CORE or B2B.
The bank checks the file and reports the result in a pain.002 message: accepted, partly accepted or rejected, with a reason code for each rejected payment. The account statement in camt.053 later shows what was booked.
Versions and the move to .09
In Germany, the Deutsche Kreditwirtschaft fixes which versions banks accept, in a format specification updated every November. The version valid from November 19, 2023, moved to the ISO 20022 release of 2019 and to structured address data, in line with the implementation guidelines of the European Payments Council.
Banking.Vision (in German) lists what changes for a company: pain.001.001.03 moves to pain.001.001.09, pain.008 moves to pain.008.001.08, the BIC field is renamed BICFI, the execution date can carry a time, and the address can be structured. With .09, the same format also covers foreign payments, which until then ran in a fixed-length text format introduced in 1986.
Getting a file accepted
Each bank publishes the versions and options it accepts, and a validator checks a file against the schema before it is sent. A company uploads the file in online banking or sends it from its ERP over EBICS. A payment hub produces the right version for each bank. SEPA instant transfers use the same pain.001 message with an instant flag. An optional EBICS procedure of the Deutsche Kreditwirtschaft lets banks notify corporate customers in real time when an instant transfer arrives, the DK writes (in German).
Upcoming payments events
How do I create a SEPA XML file?
Accounting, payroll and ERP software export it from the payment run. Online banking portals and generators create one from a list of payments. Whatever the tool, the file has to use a version the receiving bank accepts.
What is the difference between pain.001 and pacs.008?
pain.001 is the customer-to-bank message: the company tells its bank to pay. pacs.008 is the interbank message the bank then sends to the payee's bank through a clearing system. Finance Loop covers the interbank side in ISO 20022 migration.
Can a SEPA XML file contain instant transfers?
Yes. The pain.001 message marks a transfer as instant, and the bank routes it to TIPS or RT1. Since the instant payments regulation, banks in the euro area must accept instant orders in batches as well as one by one.
SEPA XML and Finance Loop
Finance Loop brings together the treasury and accounting teams who produce payment files and the bank teams who process them. Finance Loop supports When Banks Say 'No', a Frankfurt seminar on international payment flows and the compliance checks they pass.
Finance Loop is a professional network and has the goal of driving the adoption of emerging technologies in finance, such as AI, digital payments, cloud and blockchain solutions. Finance Loop helps its members build skills and personal networks in these fields: Investment & Digital Assets, Payments & Digital Money, Digital Infrastructure & Sovereignty, and Risk & Compliance.