pain.001.001.09 (2019) is the version CBPR+ selected for customer credit transfer initiation on the SWIFT network, and the planned replacement for the interbank MT101 relay, a change Swift deferred in August 2026 (Swift). It is Pain001's default recommendation for any new cross-border integration, and the target shape of the MT101 loader.
New to the format? What is pain.001? explains the message, its structure and every version.
What to know about this version#
- Financial institutions are identified with
<BICFI>(renamed from v03's<BIC>). - The 2019 party and account structures add richer identification (including LEI) and proxy account support.
- Structured and hybrid postal addresses meet the CBPR+ structured-address requirement; Pain001 emits both.
- UETR carriage supports end-to-end tracking through the correspondent chain.
Element structure (all versions share this skeleton)#
<GrpHdr>Group Header: message id, creation timestamp,NbOfTxs,CtrlSum, initiating party. Pain001 recomputes the control totals from validated records.<PmtInf>Payment Information: debtor, debtor account and agent, requested execution date, payment method, charge bearer; one block can carry many transactions.<CdtTrfTxInf>Credit Transfer Transaction: amount and currency, creditor, creditor account and agent, remittance information, end-to-end reference.
XSD, element reference and examples#
- Official XSD: ISO publishes the
pain.001.001.09schema in its message catalogue. The open-source pain001 library ships the same XSD and validates every file it generates against it. - Element reference: every path, type, cardinality and code list, generated from that XSD: pain.001.001.09 element reference.
- Example files: XSD-valid files covering this version's elements, in the example corpus.
- Validate in your browser: the demo builds a
pain.001.001.09file from CSV and checks it against the official XSD and your chosen scheme rulebook, without uploading anything.
Generate and inspect#
Records can be reshaped between supported versions. The mapper renames and defaults fields to match the target version; elements the target does not model are not carried over, so re-validate after migrating:
=
See the full version catalogue, or the glossary for the vocabulary used here.
