Pain001

Everything on this page is verified against the shipped code of pain001 v0.0.56 and its companions — the same discipline as the technical reference. If a cell says no, that is a statement, not an omission.

01. Message definitions#

Message definition Generate XSD-validate Migrate to/from Notes
pain.001.001.03 Yes Yes Yes SEPA/CGI workhorse; element naming
pain.001.001.04 – .08 Yes Yes Yes Channel-specific maintenance versions
pain.001.001.09 Yes Yes Yes CBPR+ version; MT101-relay successor;
pain.001.001.10 – .12 Yes Yes Yes Post-2019 refinements
pain.008.001.02 Yes Yes The only pain.008 version supported — others are not
pain.002 (responses) No Parsed, not generated-for-submission: status/reason extraction
camt.053 (statements) No Parsed for reconciliation

02. Input formats#

Format Support Gate
CSV Built-in Field-alias normalisation, JSON Schema per record
JSON / JSONL Built-in Same pipeline
SQLite (.db/.sqlite) Built-in Table pain001 by default
Parquet pain001[parquet] extra PyArrow
PGP-encrypted (.gpg/.asc) pain001[gpg] extra Decrypted in-process
Excel .xlsx/.xlsm pain001-loader-xlsx IBAN safety guard; formulas resolve, macros never execute; .xls (legacy BIFF) not supported
SWIFT MT101 pain001-loader-mt101 Sequence A/B field map published; out-of-scope tags refuse rather than guess

03. Scheme rulebooks#

sepa-sct (SEPA Credit Transfer) · sepa-inst (SEPA Instant) · sepa-sdd (SEPA Direct Debit Core) · sepa-b2b (SEPA B2B) · xborder-ct (cross-border credit transfer). Each supports --explain rule-by-rule output. Bank-specific profile packs beyond these five do not exist yet — that is the roadmap's rule-pack architecture, not a shipped feature.

04. Address models#

Structured and hybrid postal address elements are generated today, meeting the 14 November 2026 CBPR+ requirement. Unstructured AdrLine output remains available for channels that still accept it.

05. Known limitations#

  • No bank connectivity — Pain001 stops at the validated file; submission is your channel (by design — see scope).
  • pain.008 is one version.001.02 only.
  • MT101 loader excludes :23E:, :25:, :28D:, :33B:, :36:, :21F:, :56a:, :51A:, :77B:, :25A: — instruction codes and FX routing need human judgement.
  • Streaming semantics--streaming emits one independently valid file per chunk with recomputed totals, not a single monolithic document.
  • Python 3.10–3.12 — nothing newer is CI-tested yet.
  • The browser demo implements the fail-fast layer plus the official XSD gate for v09; the full JSON-Schema/rulebook pipeline is CLI-side.

Corrections welcome — this page follows the corrections policy.