CSV to SEPA XML Converter

Automate supplier payments: from spreadsheet to bank-ready SEPA XML in seconds.

View on GitHub Adapt This to Your Needs →

What This Project Does

CSV to SEPA XML Converter is a Python application with both GUI and CLI modes that converts payment data from CSV files to SEPA Credit Transfer XML format (pain.001.001.03). It features built-in IBAN/BIC validation, automatic error reporting, and complete audit trails.

You prepare your payments in a CSV file (supplier name, IBAN, amount, reference). The tool validates every field, generates the bank-ready XML, catches errors before upload, and logs everything for compliance. Works interactively via GUI or silently via command line for automation.

See It in Action

Watch how the CSV to SEPA XML Converter validates IBANs, processes 10,000 payment transactions in 0.66 seconds, and generates bank-ready ISO 20022 XML files with complete error reporting.

Key Features

  • Dual Mode
    GUI for interactive use, CLI for automation and scripting
  • Input Validation
    IBAN checksum, BIC format, and amount verification
  • Security
    Formula injection protection and input sanitization
  • Error Reports
    Automatic CSV error reports with detailed validation messages
  • SEPA Compliant
    Generates valid pain.001.001.03 format
  • Audit Trail
    Complete logging to sepa_converter.log
  • Configurable
    Set company IBAN/BIC via GUI or command line
  • macOS Compatible
    Built-in troubleshooting and graceful fallbacks
10,000
Transactions
Tested at scale
0.66 seconds
Processing Time
For 10k payments
1,498 invalid caught
Errors Caught
MOD-97 validation

Quality Assurance

  • IBAN validation with MOD-97 checksum verification
  • BIC format validation (8 or 11 characters)
  • Amount limits and format checking (max 999,999,999.99)
  • Automatic CSV error reports with detailed diagnostics
  • Formula injection protection for security
  • Complete logging to sepa_converter.log

Banking Note: This tool generates standard SEPA XML files in ISO 20022 pain.001.001.03 format. Always test with your bank first using a small batch. Each bank may have slight variations in their requirements. I can customize the output format for your specific bank if needed.

Real-World Applications

Supplier Payments
Convert monthly invoice batches to SEPA XML
Payroll Processing
Bulk salary payments with validation
Expense Reimbursements
Automated payment file generation
Freelancer Payments
Batch contractor payouts with audit trail

Want to Try It?

This tool is free and open-source. It runs locally on YOUR computer. Your payment data never leaves your system, never gets uploaded anywhere. Complete control and privacy guaranteed.

Why try it locally:
  • Test with your actual payment spreadsheets
  • See exactly how it handles your bank's requirements
  • No data privacy concerns—everything stays on your machine
  • Full control over the conversion process
Two Ways to Use This Tool:

If you're a developer:

  1. Clone the repository from GitHub
  2. Install dependencies: pip install -r requirements.txt
  3. Prepare your CSV file with payment data
  4. Run: python csv_to_sepa_xml.py
  5. Upload the generated XML to your bank's portal

If you're not a developer:

Don't worry about the technical setup. I can customize this tool for your specific bank's requirements, set it up to work with your payment workflow, and deliver a ready-to-use solution with clear instructions.

Let Me Handle It For You

How We'll Work Together

  1. Discovery — You walk me through your payment workflow and bank requirements. I confirm whether this tool fits and give you an honest timeline and cost estimate. No commitment needed.
  2. Scope — I send you a written scope: what gets built, what gets tested, when it ships, and what it costs. You approve it or we adjust until it fits.
  3. Build — I configure the tool for your specific bank format and edge cases. You get progress updates every 2 to 3 days. Nothing ships blind.
  4. Handoff — You test with real payment data. I fix anything that does not work. Final payment on delivery. Seven days of support included.
  5. You run it independently — The tool is yours. You have the script, the documentation, and the logic. No dependency on me to keep it running.
Email Me Back to Projects