Skip to content
SEPA Generator
Features Pro Download Contact
Home / Guides

pain.001.001.02 vs pain.001.001.09: which SEPA XML version should you use?

Last updated: 10 July 2026

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

Aspectpain.001.001.02pain.001.001.09
XML namespaceurn:iso:std:iso:20022:tech:xsd:pain.001.001.02urn:iso:std:iso:20022:tech:xsd:pain.001.001.09
GenerationLong-established; still accepted by many banks and legacy channelsCurrent version used by SEPA schemes since the 2023/2024 migration
Postal addressesMostly unstructured address linesFull structured address elements (street, building number, postcode, town, country)
Schema detailFewer, looser elementsMore precise element definitions and additional optional data
Typical use todayLegacy bank channels, older ERP exportsModern 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.

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.
  • 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.

Generating both versions from the same spreadsheet

SEPA Generator is a free, local desktop application that generates both pain.001.001.02 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 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.

Related

  • pain.001 SEPA XML generator
  • SEPA XML validation
  • How to create a SEPA XML file
  • Download SEPA Generator Community Edition

SEPA Generator is a free local desktop app that generates pain.001.001.02 and pain.001.001.09 SEPA Credit Transfer XML from CSV, XLS, and XLSX files — your payment data stays on your computer.

Download Community Edition View Pro Edition

SEPA Generator · Local SEPA payment file generation

Resources Guides pain.001 Generator SEPA XML Validation
GitHub Pro Download Contact Privacy