Technical reference Applies to: Community & Pro
pain.001.001.02 vs .09: choosing a SEPA XML version
If you upload SEPA Credit Transfer files to a bank, you have probably seen
references to pain.001.001.02 and pain.001.001.09. Both are versions of
the same ISO 20022 message — the Customer Credit Transfer Initiation
message, commonly called pain.001 — but they are not interchangeable. Your
bank or upload channel usually expects one specific version.
This guide explains the practical differences and how to decide which version to generate.
What pain.001 is
pain.001 is the ISO 20022 XML message a customer sends to their bank to initiate credit transfers. In the SEPA area it is the standard format for submitting one or many euro credit transfers in a single file: debtor account, execution date, and a list of transactions with creditor name, IBAN, amount, and remittance information.
The number at the end of the identifier is the message version:
pain.001.001.02 is an early version that many banks adopted when SEPA was
introduced, while pain.001.001.09 is the 2019 revision of the message that
the European Payments Council adopted for the SEPA schemes in its 2023
rulebook cycle.
Key differences at a glance
| Aspect | pain.001.001.02 | pain.001.001.09 |
|---|---|---|
| XML namespace | urn:iso:std:iso:20022:tech:xsd:pain.001.001.02 | urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 |
| Generation | Long-established; still accepted by many banks and legacy channels | Current version used by SEPA schemes since the 2023/2024 migration |
| Postal addresses | Mostly unstructured address lines | Full structured address elements (street, building number, postcode, town, country) |
| Schema detail | Fewer, looser elements | More precise element definitions and additional optional data |
| Typical use today | Legacy bank channels, older ERP exports | Modern bank channels, new integrations, address-quality requirements |
Structured addresses: the biggest practical change
The most visible difference is postal address handling. In
pain.001.001.02, addresses are usually provided as free-text address lines.
pain.001.001.09 defines structured elements — street name, building number,
postcode, town, and country — as separate fields.
This matters because banks and payment schemes are progressively moving toward structured address data. If your creditor records already store street, postcode, and town separately, generating pain.001.001.09 with structured addresses prepares your files for these requirements instead of concatenating everything into address lines.
SEPA Generator supports optional structured postal addresses when generating pain.001.001.09.
The European Payments Council will also determine a new end date for unstructured addresses in SEPA payment files in due course. See SEPA structured addresses: the EPC update and how to prepare
Which version does your bank want?
There is no universal answer — it depends on your bank, the upload channel (web portal, EBICS, host-to-host), and sometimes the account configuration:
- Ask your bank first. Most banks document the pain.001 versions they accept per channel. Some accept several versions; others accept exactly one.
- Legacy channels frequently still expect
pain.001.001.02(or.03), because that is what existing customer integrations produce. pain.001.001.03is a third, widely deployed version that some banks and upload channels still ask for explicitly. It sits between.02and.09: if your bank names.03in its channel documentation, that is the version to send, and the same source data can be used for it.- Newer channels and integrations increasingly expect
pain.001.001.09, in line with the SEPA schemes’ migration to the 2019 ISO 20022 message versions. - Test before production. Whichever version you choose, upload a test file through your banking portal before sending real payments. Bank acceptance can depend on bank-specific rules beyond the schema version.
Do you need to migrate from .02 to .09?
If your bank still accepts pain.001.001.02 files, they remain valid to use.
There is no customer-side obligation to change formats until your bank
requires it. That said, moving to pain.001.001.09 is worth planning when:
- your bank announces an end date for older versions on your channel;
- you need structured addresses for cross-border or compliance reasons;
- you are building a new integration and want to avoid a later migration.
Because the two versions structure some elements differently, migrating is
mainly a matter of regenerating files in the new version and re-testing with
your bank — not of editing XML by hand. If you only have the old XML files and
not the source data, SEPA Generator Pro’s XML Tools can migrate supported
pain.001.001.02 and .03 files to .09; test the result with your bank as
you would any new format.
Generating both versions from the same spreadsheet
SEPA Generator is a local desktop application, and its free Community Edition
generates pain.001.001.02, pain.001.001.03 and pain.001.001.09 from the
same CSV, XLS, or XLSX
input. You choose the pain.001 version at generation time, so you can produce a
.02 or .03 file for a legacy channel today and a .09 file when your bank is
ready — without changing your source data. All processing happens locally on
your computer; payment files are never uploaded to a server.
If you already have pain.001 files
When the XML already exists — exported from an ERP or produced by an older tool — SEPA Generator Pro can help you check it before changing anything:
- Validate an existing pain.001 file against the official schemas bundled with Pro and get a readable report of the problems found (how validation works).
- Migrate supported
pain.001.001.02and.03files to.09when your bank asks for the newer version, then review and test the result. - Check address readiness to see which parties have structured, hybrid, incomplete or unstructured addresses (what it reports).
Schema validation catches structural errors; it does not prove that a specific bank will accept the file, because banks can add their own rules. For a worked example of bank-specific requirements, see the Bank of Ireland SEPA XML guide. Pro includes a 14-day free trial with no card or account required; a paid licence is needed to keep using it afterwards (download the trial).
SEPA Generator is a local desktop app. The free, open-source Community Edition creates pain.001 SEPA Credit Transfer XML from CSV and Excel files. SEPA Generator Pro adds Payments and Collections workspaces with saved beneficiaries, customers and mandates, SEPA Direct Debit (pain.008), and XML Tools for validating and migrating existing files.