OdooWiki OCA HUB

Account Payment SEPA Direct Debit

account_payment_sepa_direct_debit folder_open OCA/bank-payment-alternative open_in_new
Banking addons License: AGPL-3

Module to export direct debit orders in SEPA XML file format.

ISO 20022 is the new international standard for bank XML files. This module implements SEPA Direct Debit (SDD), more specifically ISO 20022 PAIN (PAyment INitiation) versions 008.001.02 and 008.001.08. It follows the SEPA direct debit implementation guidelines of the European Payments Council.

This module also supports PAIN version 008.003.02 which is used in Germany. You can read more about this in german on ebics.de.

It supports both SEPA Core and SEPA B2B mandates.

auto_awesome What this module does

AI-generated from the code · Odoo 19.0

Generate SEPA Direct Debit XML payment files (PAIN 008.001.02, 008.001.08 and 008.003.02) from payment orders, and manage SEPA Core/B2B mandates, including printing mandate forms and automatic expiry of unused mandates.

This module lets you collect customer payments by SEPA Direct Debit. On a payment order using the "SEPA Direct Debit for customers" method, the Generate button produces a bank XML file in the PAIN 008 format (old, new, or the German 008.003.02 version), ready to send to your bank.

It adds SEPA fields to mandates: a format (SEPA CORE or SEPA B2B) and a unique mandate reference limited to 35 characters. A mandate linked to a non-IBAN bank account is refused. From the mandate form you can print a ready-to-sign SEPA mandate document, available in the customer's language.

Business rules are enforced when payment lines move from draft to open: expired mandates and one-off mandates already used are blocked with a clear message. Payment lots automatically receive the right sequence type (Recurring, Final or One-Off) and local instrument (CORE or B2B) based on the mandate.

When a generated file is marked as uploaded, the mandate's last debit date is recorded; one-off mandates and final recurring mandates are then set to expired. A scheduled job also expires SEPA mandates left unused for 36 months and logs a message on the mandate.

Your company (or each payment method line) must have a valid SEPA Creditor Identifier, checked for correctness and shown in Accounting settings and on the company form.

Models and fields (8)
  • res.company · extends an existing modelsepa_creditor_identifier (SEPA Creditor Identifier)
  • account.payment.lot · extends an existing modelsequence_type, mandate_required
  • res.config.settings · extends an existing modelsepa_creditor_identifier
  • account.payment.line · extends an existing modelmandate_type (Mandate Type), mandate_state (Mandate State), mandate_format (Mandate Format)
  • account.payment.order · extends an existing model
  • account.payment.method · extends an existing modelpain_version
  • account.banking.mandate · extends an existing modelformat, unique_mandate_reference
  • account.payment.method.line · extends an existing modelsepa_creditor_identifier (SEPA Creditor Identifier)

Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 2 confirmed, 7 with no information of 9 versions.

Sources · Odoo 18.0

Confirmed on 2026-11-03 in branch 18.0 of OCA/bank-payment-alternative.

terminal Installation and usage

OCA documentation · Odoo 19.0

This module depends on :

  • account_payment_sepa_base
  • account_payment_mandate

This module is part of the OCA/bank-payment-alternative suite.

For setting the SEPA creditor identifier:

  • Go to Invoicing/Accounting \> Configuration \> Settings.
  • On the field "SEPA Creditor Identifier" in the section SEPA/PAIN, you can fill the corresponding identifier.

If your country requires several identifiers (like Spain), you must:

  • Go to Invoicing/Accounting \> Configuration \> Settings.
  • On the section SEPA/PAIN, check the mark "Multiple identifiers".
  • Now go to Invoicing/Accounting \> Configuration \> Management \> Payment Modes.
  • Create a payment mode for your specific bank.
  • Fill the specific identifier on the field "SEPA Creditor Identifier".

For defining a payment mode that uses SEPA direct debit:

  • Go to Invoicing/Accounting \> Configuration \> Management \> Payment Modes.
  • Create a record.
  • Select the Payment Method SEPA Direct Debit for customers (which is automatically created upon module installation).
  • Check that this payment method uses the proper version of PAIN.
  • If not, go Invoicing/Accounting \> Configuration \> Management \> Payment Methods.
  • Locate the "SEPA Direct Debit for customers" record and open it.
  • Change the "PAIN version" according your needs.
  • If you need to handle several PAIN versions, just duplicate the payment method adjusting this field on each for having them.

In the menu Invoicing/Accounting \> Customers \> Debit Order, create a new debit order and select the Payment Mode dedicated to SEPA Direct Debit that you created during the configuration step.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.