1. Your payments
CSV, TSV or semicolon-separated. Columns are found from the header (payee/name, IBAN, amount, reference, BIC, id); with no header the order is name, IBAN, amount, reference. Amounts are in euros.
2. Your account and date
Choose a file or paste the text, fill in your details, then click Check and make file.
Result
SEPA file
Before uploading, run the file through the SEPA pain.001 validator for an independent check, and compare the control total with your ledger.
The rules, and what they leave out
- IBANs: ISO 13616 mod-97 check digits and the country's length, for the SEPA-area countries. Spaces, hyphens and lower case are cleaned; nothing else is guessed.
- Amounts: exact cents, no floating point.
1.200,50,1,200.50and1200,5are read; an ambiguous1,234is refused. Zero, negative and three-decimal amounts are errors. - Text: names and references are transliterated to the SEPA character set (for example ü becomes ue), cut to 70 and 140 characters, and XML-escaped, each change reported.
- Totals: number of payments and control sum are computed from the same cents that are written, in the group header and the payment block.
- Also flagged: a possible duplicate payment, a repeated payment id, a weekend or past execution date, and a payee IBAN equal to your debit IBAN.
- Not done: sending money, bank connections, whether an account exists or belongs to the payee, fraud or sanctions screening, direct debits (pain.008), non-euro or non-SEPA payments, bank-specific variants and limits. Reference data is read from memory of public sources; confirm against your bank's file specification.
Common questions
How do I turn a spreadsheet of payments into a SEPA file my bank accepts?
Export the sheet as CSV with a payee name, an IBAN and an amount per row (a reference column is optional), enter your own name, debit IBAN and the date you want the money to leave, and download the pain.001 XML. Most business banking portals have a bulk or file upload for credit transfers that takes this format.
Which pain.001 version does it write?
pain.001.001.03, the long-standing SEPA credit transfer version, and pain.001.001.09, the newer one some banks now ask for. Check your bank's file specification to see which it wants; if it lists a different version, this tool is not the right fit.
What happens if a row has an error?
No file is written at all. Every problem is listed with its line number, so a half-correct batch is never produced. Warnings, such as a character the SEPA set does not allow, are fixed and reported but do not block the file.
Why does it refuse an amount like 1,234 or 1.234?
Because it could mean twelve hundred and thirty-four or one and a quarter. Guessing wrong on a payment is the worst outcome, so the tool asks you to write two decimals. Unambiguous forms such as 1.234,50 and 1,234.50 are read correctly.
Is the payment list uploaded anywhere?
No. The conversion runs in your browser tab and a test in the code asserts there are no network calls. Supplier bank details and your own IBAN never leave your device.
What does this not do?
It does not send money, connect to your bank, check whether an account exists or belongs to the payee, screen for fraud or sanctions, or produce direct debits (pain.008) or non-euro payments. Your bank remains the final validator.