sepaxml
Python SEPA XML implementations
What it is and what it does
sepaxml is a Python library that generates SEPA XML payment files conforming to ISO 20022 PAIN standards. It handles two main payment types: direct debits (PAIN.008 series) and credit transfers (PAIN.001 series), with support for multiple schema versions ranging from 001.02 to 001.11. The library takes payment configuration and transaction details as dictionaries, validates them against the appropriate XML schema, and exports compliant SEPA XML that can be submitted to European banks.
The package wraps xmlschema for validation and text-unidecode for character handling, making it suitable for applications that need to generate payment files programmatically. It supports optional address fields, batch processing, and various payment types (FRST, RCUR, OOFF, FNAL for debits; standard transfers for credits). The library is maintained but aging—last updated 346 days ago—and carries a permissive MIT license.
Use it for:
- Generate direct debit XML files for recurring subscription or utility billing in SEPA countries
- Create credit transfer payment files for payroll or vendor payments in EUR
- Integrate SEPA payment generation into accounting or ERP systems for automated bank file export
- Batch process multiple payments into a single validated SEPA XML document for bank submission
- Support multi-country European payment workflows with optional address fields for compliance
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Generates SEPA XML payment files for direct debits and credit transfers, supporting multiple PAIN schema versions (001 and 008 series) used in European banking.
Yes, if you need SEPA XML generation for European banking workflows. The package is stable, has low dependencies, carries a permissive license, and handles the core use case well. However, be aware that maintenance is aging (last release 346 days ago) and Python version support in classifiers only extends to 3.6—verify compatibility with your target Python version before committing to production use.
Install
sepaxml on PyPI
pip
pip install sepaxmluv
uv add sepaxmlpoetry
poetry add sepaxmlInstalling sepaxml
Before you install
Low install friction with only two runtime dependencies. Maintenance status is aging—last release was 346 days ago and the repository shows no recent commits, though it remains unarchived and has accumulated 134 stars.
License in practice
MIT License permits commercial and private use with minimal restrictions, requiring only attribution and inclusion of the license notice.
Quickstart
pip install sepaxml
from sepaxml import SepaDD
import datetime
config = {
"name": "Account Holder",
"IBAN": "NL50BANK1234567890",
"BIC": "BANKNL2A",
"creditor_id": "DE26ZZZ00000000000",
"currency": "EUR"
}
sepa = SepaDD(config, schema="pain.008.001.02")
payment = {"name": "Payer", "IBAN": "NL50BANK1234567890", "amount": 5000}
sepa.add_payment(payment)
xml_output = sepa.export(validate=True)
Verify before relying
- Whether the package works reliably with modern Python versions beyond 3.6, given classifiers list only up to 3.6
- Current test coverage and whether all supported PAIN schema versions are actively validated
- Whether validation against ISO 20022 schemas is comprehensive or has known gaps
Package facts
| License | MIT License (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — xmlschema, text-unidecode |
| Maintenance | aging — 346 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 359,647/month — #7,248 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: sepaxml-2.7.0-py3-none-any.whl
Keywords: xml, banking, sepa
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
ofxtoolsParses, generates, and converts Open Financial…
copyleft · top 15,000 on PyPI
fintsA pure-Python implementation of the FinTS 3.0…
copyleft · top 15,000 on PyPI
drafthorseGenerates and parses ZUGFeRD XML invoice…
permissive · top 15,000 on PyPI
currency-symbolsMaps ISO 4217 currency codes to their symbols…
permissive · top 5,000 on PyPI
xsdataxsdata generates Python dataclasses from XML…
permissive · top 5,000 on PyPI
iso4217Provides ISO 4217 currency data as a Python…
permissive · top 15,000 on PyPI
xmlschemaValidates XML documents against XSD schemas and…
permissive · top 5,000 on PyPI
mollie-api-pythonPython client library for the Mollie payment…
permissive · top 15,000 on PyPI
CurrencyConverterConverts currency amounts using historical…
unclear · top 15,000 on PyPI
bai2Parses and writes BAI2 files, a standard format…
permissive · top 15,000 on PyPI