
Frequently asked questions
Everything you need to know about validating and generating SEPA XML with PainXML.
Do my payment files ever leave my browser?
No. Validation (via WebAssembly) and generation run 100% client-side. PainXML makes no network calls for your payment data — nothing is uploaded, logged, or stored.
What formats do you support?
We validate pain.001 and pain.008 XML against ISO 20022 XSD schemas, and generate pain.001 / pain.008 from CSV or Excel (.xlsx) files.
Do I need an account to use PainXML?
No account is needed for one-off validation or generation. Sign in only if you want to save column-mapping presets across sessions.
What's the difference between SEPA and CBPR+?
SEPA covers euro payments within the Single Euro Payments Area (pain.001.001.03/.09). CBPR+ is Swift's cross-border scheme (pain.001.001.09) and adds UETR and structured-address requirements.
Which pain.001 editions are supported?
pain.001.001.03 and pain.001.001.09 for credit transfers, plus pain.008.001.02 for direct debits.
Is there a free tier?
Yes. The Free plan supports up to 50 transactions per batch, forever. Pro and Team remove the limit.
Where do the XSD schemas come from?
The ISO 20022 XSDs are licensed by SWIFT/ISO and must be supplied by you — see the schemas README for details. Validation still runs entirely in your browser.
Can I use generated files in production?
PainXML is a tool, not a bank. Always review generated files before submitting them to your bank or payment provider.