Your bank rejected the file. Find the exact line — in seconds.

Pain001 Validator checks ISO 20022 pain.001 credit transfer files against the official XSD schema and the EPC SEPA business rules, and explains every problem with its location and a repair suggestion.

Validate a file

Free plan: 5 validations/month · up to 2 MB per file · batch of 1. Files are processed in memory and deleted immediately. See plans

What we check

Official XSD schema

Every file is validated against the official ISO 20022 schema for its exact version — pain.001.001.03 through .13 — with element paths and line numbers for each violation.

Control totals & counts

GrpHdr and PmtInf NbOfTxs and CtrlSum are recomputed from the transactions with exact decimal arithmetic. A one-cent CtrlSum difference is one of the most common rejection reasons — we catch it.

IBAN & BIC checks

IBANs are tested with the ISO 13616 mod-97 check digits and country-specific lengths; BICs are checked against the ISO 9362 format.

EPC SEPA rules

For SEPA payments: EUR-only amounts, ChrgBr must be SLEV, SEPA Latin character set, duplicate EndToEndId detection, RF reference check digits, and past execution dates flagged.

Rejected-file doctor

Each finding says what is wrong, where it is, and how to fix it in plain English — not a raw schema error dump. Pro plans can download a corrected file for count and total mismatches.

Version migration help

Still sending .03 files? Starter and Pro reports list the concrete .03 → .09 differences in your file — BIC becomes BICFI, dates get wrapped, unstructured addresses are flagged.

What a report looks like

SeverityRuleFinding
ErrorCTRL-GRPGroup header CtrlSum is 20630.00 but all transaction amounts add up to 20630.75.
/Document/CstmrCdtTrfInitn/GrpHdr/CtrlSum · line 8
Fix: set the group header CtrlSum to 20630.75.
ErrorIBAN-MOD97IBAN fails the ISO 13616 mod-97 check digit test. One or more digits are wrong; banks reject this account number.
Fix: re-check the IBAN against the account statement.
WarningDATE-PASTRequested execution date is in the past. Most banks reject or re-date past-dated batches.