Pain001 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 already ran the pain001 library itself: its record validation, the scheme rulebook you chose, XML generation, and the official pain.001.001.09 schema gate on the result, all inside a Python runtime compiled to WebAssembly and served from this site. This button re-runs the schema gate on the XML shown above, so you can edit the document and check it again. The runtime (about 28 MB) downloads once, the first time you validate, and stays cached.

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

    Everything on this page runs in your browser — nothing is uploaded, stored, or sent anywhere. It runs the pain001 library itself, the same package you install with pip, inside a Python runtime compiled to WebAssembly: record validation, IBAN and BIC checks, the scheme rulebook you choose, XML generation with recomputed NbOfTxs/CtrlSum control totals, and the official XSD gate. What the CLI adds is scale and inputs: files of any size, Excel, SQLite, JSON, Parquet and SWIFT MT101, and every message edition — 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.