pain.001.001.06 is a stepping-stone version between the 2009 classic and the 2019 rework. Some treasury management systems export it natively, which is the main reason to generate it.

What to know about this version#

  • Supported end-to-end: JSON Schema, Jinja2 template, official XSD, scheme rulebooks.
  • Consider .09 for new integrations unless your channel says otherwise.

Element structure (all versions share this skeleton)#

  • Group Header — message id, creation timestamp, NbOfTxs, CtrlSum, initiating party. Pain001 recomputes the control totals from validated records.
  • Payment Information — debtor, debtor account and agent, requested execution date, payment method, charge bearer; one block can carry many transactions.
  • Credit Transfer Transaction — amount and currency, creditor, creditor account and agent, remittance information, end-to-end reference.

Generate and inspect#

pain001 init pain.001.001.06 -o work/         # scaffold a starter CSV
pain001 inspect pain.001.001.06               # list required + optional fields
pain001 -t pain.001.001.06 -d payments.csv -o out/ --dry-run

Records migrate losslessly between supported versions:

from pain001.migration import VersionMapper
records_v9 = VersionMapper("pain.001.001.06", "pain.001.001.09").migrate(records)

See the full version catalogue, or the glossary for the vocabulary used here.