Compatibility

Compatibility Matrix

The exact support surface (message versions, formats, schemes, and the limitations), verified against shipped code, not marketing.

Everything on this page is verified against the shipped code of pain001 v0.0.70 and its companions, held to 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; <BIC> 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; <BICFI>
pain.001.001.10 – .12 Yes Yes Yes Post-2019 refinements
pain.001.001.13 Yes Yes Yes Published by ISO 19 Mar 2026. Adds optional UnqTxIdr (UETR) and DbtCdtRptgInd. Generated and XSD-validated; no bank channel we track accepts it yet
pain.008.001.02 Yes Yes n/a The only pain.008 version supported (others are not)
pain.002 (responses) No n/a n/a Parsed, not generated-for-submission: status/reason extraction
camt.053 (statements) No n/a n/a 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 CBPR+ structured-address requirement, whose November 2026 date Swift has deferred. 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, as explained under scope).
  • pain.008 is one version: .001.02 only.
  • MT101 loader excludes :23E:, :25:, :28D:, :33B:, :36:, :21F:, :56a:, :51A:, :77B:, :25A:, because 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 are welcome. This page follows the corrections policy.