1. Your SEPA file
Usually a .xml file exported from accounting, payroll or your banking software, starting with <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">.
Choose a file or paste the text, then click Validate.
Result
Payment blocks
| Line | PmtInfId | Date | Transactions | NbOfTxs says | Sum of amounts | CtrlSum says |
|---|
Transactions (IBANs masked)
| Line | EndToEndId | Name | IBAN | Amount |
|---|
Repair the totals and characters
The model, and what it leaves out
- Versions: pain.001.001.03 and .09 (credit transfer) and pain.008.001.02 and .08 (direct debit), detected from the namespace. Element names that differ between versions (BIC and BICFI, a bare date and a Dt wrapper) are checked against the declared version.
- Totals: every amount is read as an exact decimal and summed as integers, then compared with NbOfTxs and CtrlSum in the group header and in each payment block. No floating point is used.
- IBAN: structure, the length for its country and the mod-97 check digits. BIC: 8 or 11 characters of the right shape. A well-formed IBAN is not proof the account exists.
- Dates: a requested date in the past, on a Saturday or Sunday, or on a TARGET2 closing day (1 January, Good Friday, Easter Monday, 1 May, 25 and 26 December) is flagged with the next TARGET day.
- Text: Max35Text, Max70Text and Max140Text limits, and the SEPA character set with a suggested replacement for each character outside it.
- Repair recomputes NbOfTxs and CtrlSum where they already exist and transliterates disallowed characters in names and references. It never edits an IBAN, an amount, a currency, a date or an identifier, does not add or delete elements, and does not shorten text.
- Not checked: full XSD validation and element order, your bank's own rules and limits, whether an account exists or belongs to the named person, creditor identifier check digits, mandate status, cut-off times, SCT Inst, and other message versions.
Common questions
How do I check a SEPA pain.001 file before I upload it to my bank?
Paste the XML or drop the file onto this page. It checks well-formedness, the namespace and version, the required elements, the number of transactions and control sum against the real amounts, every IBAN and BIC, the currency, the execution date against weekends and TARGET2 holidays, field lengths and the SEPA character set, then lists each problem with its line, path, cause and fix.
What does the NbOfTxs and CtrlSum error mean?
NbOfTxs is the number of transactions and CtrlSum is the total of all amounts, stated in the group header and optionally in each payment information block. A bank recomputes both and rejects the file if they differ, which happens after an amount is edited or a transaction is added or deleted by hand. This tool adds the amounts as exact decimals, so 0.10 + 0.20 is 0.30 and not a floating point near-miss.
Which characters are allowed in a SEPA XML file?
Names, references and remittance text may use a-z, A-Z, 0-9 and the characters / - ? : ( ) . , ' + and the space. Accented letters, umlauts, ampersands, at signs, underscores and the euro sign are outside the set and make many banks reject the file. The repair step transliterates them, for example ü to ue, ß to ss and & to +.
Which execution dates does a bank refuse?
A SEPA payment settles on a TARGET2 day, so a requested date on a Saturday, Sunday, New Year's Day, Good Friday, Easter Monday, 1 May, 25 December or 26 December is moved or rejected. A date in the past is rejected by many banks. The report names the reason and gives the next TARGET day.
Can this tool fix my SEPA file?
It can recompute NbOfTxs and CtrlSum from the amounts in the file and transliterate disallowed characters in names and references. It never touches an IBAN, an amount, a currency, a date or an identifier: a wrong IBAN or amount is a payment decision, so it is reported and left to you.
Is it safe to put a payment file with IBANs 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. IBANs are masked in the report and the downloaded findings list. Names and references are shown as they appear in your file. Your own policies still decide whether you may open a payment file in a browser.
What does this not check?
Full XSD validation and element order, your bank's own rules and limits, whether an IBAN exists or belongs to the named person, the creditor identifier check digits, mandate status, cut-off times, instant payments (pain.001 with SCT Inst), and message versions other than pain.001.001.03, pain.001.001.09, pain.008.001.02 and pain.008.001.08. A clean result is not a promise of acceptance.