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.02only. - MT101 loader excludes
:23E:,:25:,:28D:,:33B:,:36:,:21F:,:56a:,:51A:,:77B:,:25A:— instruction codes and FX routing need human judgement. - Streaming semantics —
--streamingemits 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.