SEPA Credit Transfer for Germany - pain.001 Generator
Turn vendor bills and ad-hoc payouts into ISO 20022 pain.001 XML files you upload to your own German bank - IBAN-only / BIC-less ready, no gateway, no per-transaction fees, your data never leaves Odoo.
What this module does
This app builds standards-compliant SEPA Credit Transfer (SCT) initiation files in the ISO 20022 CustomerCreditTransferInitiation (pain.001) format. You assemble a batch of credit transfers in Odoo, generate the XML, download it, and upload it through your bank's own online banking or EBICS channel. Nothing is sent to any third-party service: this is a pure format generator, so payment data stays in your database and you keep your existing banking relationship and credentials.
Two schema versions
Emit pain.001.001.09 - the 2019 ISO 20022 message version on which the current SEPA Credit Transfer scheme (2025 rulebook) is based, and the default - or the legacy pain.001.001.03 for an older e-banking upload channel that still requires it. The version is configurable per company and per batch.
IBAN-only / BIC-less
Since 1 February 2016 SEPA is IBAN-only and a BIC is no longer
required inside the SEPA area. When you leave a creditor BIC blank,
the file correctly emits <Othr><Id>NOTPROVIDED</Id>
for the agent - exactly what German banks expect - so a missing BIC
never blocks a payment.
Real IBAN & BIC validation
Every IBAN is checked with the ISO 13616 / ISO 7064 MOD-97-10 algorithm and the per-country length registry; every BIC against the ISO 9362 structure. The module also warns when a BIC's country does not match the IBAN country - a common German-bank rejection cause - before you ever generate the file.
German bank quirks
German umlauts and the Eszett are transliterated to the SEPA Latin character set (ä → ae, ö → oe, ü → ue, ß → ss) and disallowed characters are stripped, so names and remittance text pass the Deutsche Kreditwirtschaft validation. The eight-digit Bankleitzahl (BLZ) is parsed out of every German IBAN.
Feature highlights
| Capability | Detail |
|---|---|
| pain.001 versions | pain.001.001.03 and pain.001.001.09 from one model |
| Booking mode | Batch (collective) or single booking - BtchBookg |
| Charge bearer | SLEV (shared) as mandated for SEPA |
| Service level | SEPA, payment method TRF, currency EUR |
| Remittance | Unstructured free text or structured SCOR creditor reference |
| End-to-End ID | Per transfer, auto-derived from your reference when blank |
| Validation | IBAN MOD-97, BIC ISO 9362, amount ceiling, name presence |
| Build from bills | Turn selected posted vendor bills into a ready batch, netting per payee |
| Workflow | Draft → Generated → Uploaded, with full chatter audit trail |
| Output | Downloadable UTF-8 XML, in-app preview |
How it works
- Set your ordering account IBAN, initiating party and preferred pain.001 version in Settings → SEPA Credit Transfer.
- Create a SEPA Credit Transfer batch and add transfers - manually, from a partner, or by building from posted vendor bills.
- Click Validate Data to surface any IBAN/BIC or amount problems, then Generate pain.001.
- Download the XML and upload it in your bank's online banking or EBICS file-upload area, then mark the batch Uploaded.
Data boundary & disclosure
This module is a format generator. It produces the pain.001 file for you to upload through your own banking channel using your own credentials. It does not connect to, transmit to, or act as a certified provider for any bank or clearing system, and it stores no banking passwords. You remain in full control of when and how each file reaches your bank.
Compatible with Odoo 18 and Odoo 19 - Community and Enterprise.
Screenshots
Credit Transfers
Build From Bills
Update date: 2026-07-02