Required headers, accounts, amounts, dates, and version-specific ReqdExctnDt.
SEPA pain.001 validator
Free SEPA XML validator for pain.001 files
To see why a bank rejected your SEPA pain.001 file, upload it here for free. It is checked against the ISO 20022 schema and basic rules from the EPC SEPA Credit Transfer scheme, which is used in 41 European countries, and each error is reported with its location in the file. Bank-specific overlays are not fully covered.
Instant checks for ISO 20022 structure and basic EPC rules — IBAN, control sum, transaction count, charge bearer. Built for people who just got a bank reject and need a location, not a lecture.
We do not store payment files. Validate, read the report, discard.
Bank MIG overlays are out of scope on this free check.
Free check
Upload & validate
In memory only. Nothing is written to disk.
Bank MIG overlays are out of scope here. This pass is ISO / EPC baseline only — a file can still fail at your bank.
What the free checker looks at
Debtor and creditor IBANs, including official length by country.
Group and payment-info totals must match the transactions.
EPC SCT rejects DEBT, CRED, and SHAR on a SEPA batch.
Supported / not supported
| Item | Status |
|---|---|
| pain.001.001.03 | yes |
| pain.001.001.09 | yes |
| pain.001.001.11 | not yet |
| pain.008 | not yet |
| camt.053 / camt.054 (.02 and .08) | API |
| Bank MIG overlays | out of scope |
| Max file size (website) | 1.5 MB |
| Max file size (POST /v1/validate) | 2 MB |
| Files stored | not stored |
| Login | no |
| Rules last updated | 12 September 2026 |
pain.001.001.11 and pain.008 are not supported yet. The website upload checks pain.001. camt.053 and camt.054 (.02 and .08) are on the camt API. A file that passes this ISO / EPC baseline can still be rejected by a bank.
Questions
In short: pain.001 files are checked against the ISO 20022 schema and baseline EPC SEPA Credit Transfer rules, which apply in 41 countries. Your bank's own rules may add more checks.
Which SEPA XML versions does SepaCheck validate?
pain.001.001.03 and pain.001.001.09 (SEPA credit transfer) on the website and POST /v1/validate. pain.008 and pain.001.001.11 are not supported yet. camt.053 and camt.054 versions .02 and .08 are checked on POST /v1/camt/validate.
Are my payment files stored?
No. The website, POST /v1/validate, and the camt validate and convert endpoints process the file in memory and discard it. Logs keep version, size, pass/fail and error codes. The XML is not logged.
If my file passes, will my bank accept it?
Not necessarily. SepaCheck checks ISO 20022 structure and a basic EPC baseline. Banks add their own implementation guidelines, which are out of scope on the free check.
Is there an API?
Yes. POST https://checksepa.com/v1/validate checks pain.001. POST https://checksepa.com/v1/camt/validate and POST https://checksepa.com/v1/camt/convert check and convert camt.053 and camt.054. No API key. Those three routes share one free limit: 30 requests per IP per hour and 200 per UTC day, 2 MB maximum. Higher limits and API keys are on the waitlist, planned from EUR 79/month, and charged only after confirmation.
Free API · higher limits from €79/mo
Validate every pain.001 before bank upload
POST /v1/validate is free: 30 checks per IP per hour, 200 per UTC day, no API key. Join the waitlist for higher limits and API keys. Free to join; €79/mo only after we confirm.