Pain001

Requires Pain001 v0.0.58 or later. Earlier versions do not carry the API shown on this page. Check what you have with pain001 --version, and see the releases page for what is published.

pain.001.001.11 continues post-2019 maintenance with further structured-data refinements. Adoption is led by newer platform builds; most bank channels map it onto their version-9 processing.

What to know about this version#

  • Choose it when a counterpart explicitly profiles against it; otherwise .09 maximises interoperability.
  • Full support: template, XSD, JSON Schema, migration in both directions.

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.

Generate and inspect#

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

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:

from pain001.migration import VersionMapper
rows = VersionMapper().migrate_rows(
    rows, "pain.001.001.11", "pain.001.001.09"
)

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