SEPA PAYMENT FILE VALIDATOR · RUNS IN YOUR BROWSER · NOTHING UPLOADED

Will your bank accept this SEPA payment file?

Paste or drop a SEPA credit transfer file (pain.001 XML) and get every error with its line number: malformed XML, invalid IBANs, transaction count and control sum, execution dates on a weekend or TARGET2 holiday, non-euro amounts and characters outside the SEPA set. After a hand edit, rebuild the counts and control sums in one click and download the corrected file.

The file is read in this browser tab and never leaves your device. Account numbers are masked to their last four characters in the report. Independent of the EPC and of every bank. The rules are read from memory of the public EPC and ISO 20022 documents; no bank's own validator was available when this was built.

1. Your payment file

Usually an .xml file exported from accounting, payroll or ERP software for upload to online banking: it starts with <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"> (or .09).

Choose a file or paste the text, then click Validate.

The model, and what it leaves out

Common questions

How do I check a SEPA payment file before I upload it to my bank?

Paste the pain.001 XML or drop the file onto this page. It checks the XML structure, the group header and payment blocks, every IBAN with the mod-97 check, the transaction count and control sum at both levels, the execution date against weekends and TARGET2 closing days, the euro currency and amount format, and the characters allowed in names and references, then lists each problem with its line number.

Why was my SEPA XML file rejected with a control sum or NbOfTxs error?

The group header and every payment block repeat the number of transactions and the sum of the amounts. After someone edits an amount or deletes a payee by hand, those two numbers no longer match what the file holds and the bank refuses it. This tool recomputes both and can rewrite just those fields.

How is an IBAN checked?

Move the first four characters to the end, turn letters into numbers (A is 10, B is 11 and so on), and divide the long number by 97. A valid IBAN leaves a remainder of 1. The country also fixes the length, for example 22 characters for Germany and 18 for the Netherlands. The check catches a mistyped or swapped character; it cannot tell you the account belongs to the person you meant to pay.

Why does the bank complain about a character in the payee name?

The basic SEPA character set is the letters a to z without accents, digits and the symbols / - ? : ( ) . , ' + and space. Accented letters, an ampersand and many other symbols fall outside it. Some banks transliterate them and some reject the whole file.

Can this tool fix my SEPA file?

It can recompute NbOfTxs and CtrlSum in the group header and each payment block, which is what is wrong after a hand edit. It never edits a payment: a wrong IBAN, amount or name is a payment decision, so it is reported and left to you.

Is it safe to put a file with bank account numbers into a web page?

The page runs in your browser, the file is read locally and nothing is uploaded; a test in the code asserts there are no network calls. Account numbers are masked to their last four characters in the report and the downloaded findings list. Your own policies still decide whether you may open a payment file in a browser.

What does this not check?

Whether your bank accepts your schema version, your daily limits and cut-off times, whether the creditor's BIC matches the IBAN, sanctions screening, instant-payment (SCT Inst) limits, direct debit (pain.008) files, non-euro and international payment layouts, and any rule your bank adds on top of the EPC scheme. A clean result is not a promise of acceptance.