Skip to content
SEPA Generator
Pro Community Guides
Download free trial
Home / Guides

Technical reference Applies to: Community & Pro

pain.001.001.02 vs .09: choosing a SEPA XML version

Last updated: 26 October 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.

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.03 is a third, widely deployed version that some banks and upload channels still ask for explicitly. It sits between .02 and .09: if your bank names .03 in 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.02 and .03 files to .09 when 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).

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

Get Community (free) Explore Pro

SEPA Generator · by Niryosys · Local SEPA payment file generation

Product
Pro SEPA bulk payments Direct Debit software Mandate management Community download Download Pro Pro support
Tools & workflows
CSV to SEPA XML Excel to SEPA XML pain.001 Generator Direct Debit Generator SEPA XML Validation
Resources
Guides Community guides Pro guides Release notes Common SEPA XML rejection errors pain.001 versions GitHub
Company
Contact Privacy Terms Legal notice

© 2026 NIRYOSYS. All rights reserved.