ValidateFin
Back to blog
Updated Mar 14, 2026SEPA9 min readBy Eliel Nicaise

CSV to SEPA XML Converter: generate pain.001 from a spreadsheet

Turn any CSV or Excel file into a valid SEPA pain.001 or pain.008 XML file in seconds. Here is how the converter works and what your spreadsheet must contain.

Why generate SEPA XML from a spreadsheet?

Most accounting software and ERP systems let you export payment orders as CSV or Excel files. But banks require SEPA XML — specifically the pain.001 format for credit transfers and pain.008 for direct debits. Converting manually is error-prone and time-consuming.

A CSV to SEPA converter bridges this gap: you map your spreadsheet columns to the required SEPA fields, and the tool generates a valid, bank-ready XML file instantly — with IBAN validation, amount formatting, and namespace compliance included.

ValidateFin's converter handles both pain.001 (credit transfers) and pain.008 (direct debits), with automatic IBAN validation, amount formatting, and SEPA namespace compliance.

What your CSV must contain

The converter requires at minimum these columns (column names can be mapped visually):

# CSV input (semicolon-separated)
creditor_name;creditor_iban;creditor_bic;amount;currency;reference
Supplier A;DE89370400440532013000;COBADEFFXXX;1200.00;EUR;INV-2026-001
Supplier B;FR7630006000011234567890189;BNPAFRPPXXX;350.00;EUR;INV-2026-002

# Generated pain.001 XML output
<Document>
  <CstmrCdtTrfInitn>
    <GrpHdr>
      <MsgId>MSG-20260303-001</MsgId>
      <CreDtTm>2026-03-03T09:00:00</CreDtTm>
      <NbOfTxs>2</NbOfTxs>
      <CtrlSum>1550.00</CtrlSum>
      <InitgPty><Nm>My Company</Nm></InitgPty>
    </GrpHdr>
    <PmtInf>
      <PmtInfId>PMT-001</PmtInfId>
      <PmtMtd>TRF</PmtMtd>
      <ReqdExctnDt><Dt>2026-03-05</Dt></ReqdExctnDt>
      <Dbtr><Nm>My Company</Nm></Dbtr>
      <DbtrAcct>
        <Id><IBAN>BE68539007547034</IBAN></Id>
      </DbtrAcct>
      ...
    </PmtInf>
  </CstmrCdtTrfInitn>
</Document>

Required fields explained

These 5 fields are mandatory in every SEPA pain.001 transaction:

  • Debtor IBANThe account to be debited — must be a valid IBAN (mod-97 verified).
  • Creditor IBANThe beneficiary account — also IBAN-validated before XML generation.
  • AmountMust be a positive decimal number (e.g. 1500.00). Currency defaults to EUR.
  • Payment referenceThe reference communicated to the creditor — max 140 characters (EndToEndId).
  • Execution dateRequested execution date in YYYY-MM-DD format. Must be a banking business day.
  • Creditor/Debtor nameLegal name of the beneficiary or debtor — max 70 characters, no special characters beyond the SEPA character set.
  • BIC (optional)Bank Identifier Code — optional within SEPA since 2016 for domestic transfers, but required for cross-border non-SEPA payments.
  • CurrencyISO 4217 currency code — defaults to EUR. SEPA only supports EUR for cross-border transactions.

Common errors when generating SEPA XML

These are the most frequent issues when converting CSV to SEPA:

Invalid IBAN checksum

A typo in the IBAN will fail the mod-97 check. The converter validates all IBANs before generating XML.

Amount with wrong decimal separator

Use a dot (.) as decimal separator. Commas (,) cause parsing errors in most banking systems.

Missing BIC for non-EEA banks

Within SEPA, BIC is optional for domestic transfers but required for cross-border or non-EEA creditors.

Duplicate EndToEndId references

Each payment in a SEPA file must have a unique EndToEndId. Duplicate references cause the bank to reject the batch or individual transactions.

Special characters in names

SEPA only allows a restricted character set (a-z, A-Z, 0-9, and a few special chars like / - ? : ( ) . , '). Accented characters like é, ü, ñ may be rejected.

Execution date on non-business day

The requested execution date must be a valid TARGET2 banking day. Weekends and bank holidays cause rejection or delayed processing.

Step-by-step: converting your CSV

Follow these steps to generate a valid SEPA XML file from your spreadsheet:

  1. 1Prepare your CSVExport your payment data from your accounting software or create a CSV with at least: creditor name, IBAN, amount, and reference.
  2. 2Upload to the converterOpen the CSV to SEPA converter and upload your file. The tool auto-detects delimiters (comma, semicolon, tab).
  3. 3Map your columnsUse the visual interface to match your CSV column headers to the required SEPA fields. The tool remembers your mapping.
  4. 4Enter debtor detailsFill in your company name, IBAN, BIC, and the requested execution date. These apply to all transactions in the batch.
  5. 5Generate and downloadClick generate — the tool validates all IBANs, formats amounts, and produces a valid pain.001 or pain.008 XML ready for your bank.

The entire process takes seconds and runs 100% in your browser — no data is uploaded to any server.

Pain.001 vs pain.008: which format do you need?

Pain.001 (Customer Credit Transfer Initiation) is used for outgoing payments — you send money to suppliers, employees, or partners. This is the most common use case for CSV conversion.

Pain.008 (Customer Direct Debit Initiation) is used for collecting payments — you pull money from customers who have signed a direct debit mandate. This is used by subscription services, utilities, and membership organizations.

ValidateFin's converter supports both formats. Select the payment type before generating the XML, and the tool will use the correct namespace and structure.

Generate your SEPA XML file now

Upload your CSV, map your columns visually, and download a valid pain.001 or pain.008 file in seconds. 100% free, no registration, no data uploaded.

Open the CSV to SEPA Converter

Frequently Asked Questions

How do I convert a CSV file to SEPA XML format?

Upload your CSV to ValidateFin's CSV to SEPA Converter, then use the visual column mapping interface to match your CSV headers to SEPA fields (debtor IBAN, creditor IBAN, amount, reference, etc.). The tool generates a valid pain.001 or pain.008 XML file.

What is the difference between pain.001 and pain.008?

Pain.001 (Customer Credit Transfer Initiation) is for outgoing bank transfers — you push money to creditors. Pain.008 (Customer Direct Debit Initiation) is for collecting payments — you pull money from debtors. The converter supports both.

Do I need to format my CSV in a specific way?

No. The converter accepts any CSV format. The visual mapping interface lets you assign each column to the corresponding SEPA field. Required fields include creditor/debtor name, IBAN, amount, currency, and payment reference.