Pain001

Add your payment data

Drag a CSV file here — or click to browse

Maximum 2 MB · read locally by your browser, never uploaded

Download a sample to use as your own template: SEPA credit transfer · cross-border · 20-row batch

Validation result & generated XML

Add data in step 1 — validation runs automatically.

The validated pain.001.001.09 document will appear here — add data in step 1.

Prove it against the official ISO 20022 XSD

Steps 1–2 run fast, hand-written checks. This step runs the genuine article: a Python runtime (via WebAssembly) executing xmlschema against the official pain.001.001.09 schema — the same class of validation the CLI performs. The ~13 MB engine is served from this site and downloaded once, when you ask for it (it starts downloading quietly as soon as step 2 produces valid XML).

Generate XML in step 2 first — the XSD gate validates that output.

    Everything on this page runs in your browser — nothing is uploaded, stored, or sent anywhere. This demo implements a subset of the pipeline (required fields, IBAN mod-97, BIC structure, amount and date formats, recomputed NbOfTxs/CtrlSum control totals). Step 3 runs the official XSD gate right here via WebAssembly. The installed toolchain adds JSON Schema validation and five scheme rulebooks on top — install the CLI for the complete pipeline.

    What this demo shows — and what the real pipeline adds

    Each sample batch is also downloadable as a CSV file to use as the template for your own ERP or spreadsheet export — the header row is the contract.

    The demo above implements the fail-fast layer of the Pain001 pipeline: required-field checks, ISO 13616 mod-97 IBAN checksums, ISO 9362 BIC structure, amount and date formats, and control totals (NbOfTxs, CtrlSum) recomputed from the records rather than trusted. Try the "Introduce an error…" menu — each scenario plants exactly one realistic flaw (a flipped IBAN digit, a malformed BIC, a missing column, a European comma-decimal amount, an impossible date) and shows you the row-level finding a bank's gateway would otherwise report days later.

    The installed toolchain runs a much deeper gate: JSON Schema validation per record with field-alias normalisation, five scheme rulebooks (SEPA SCT, Instant, SDD Core, B2B, cross-border) with rule-by-rule --explain output, and final validation of the rendered document against the official ISO 20022 XSD before a single byte is written. Ten pain.001 versions and pain.008.001.02 are supported.

    pip install pain001
    pain001 -t pain.001.001.09 -d payments.csv -o out/ --scheme sepa-sct --dry-run

    Step 3 above is not a simulation: it boots a Python runtime in WebAssembly and runs xmlschema against the official pain.001.001.09 schema, served from this site — the same class of XSD gate the CLI applies. What remains CLI-only is the rest of the pipeline: JSON Schema normalisation, the five scheme rulebooks with --explain, and the other ten message definitions.