Account Payment SEPA Direct Debit

account_payment_sepa_direct_debit
REPOSITORY
REPOSITORYOCA/bank-payment-alternative
GIT
GIThttps://github.com/OCA/bank-payment-alternative.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment-alternative/tree/19.0/account_payment_sepa_direct_debit
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYBanking addons
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment-alternative
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:50
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-payment:
    - account_payment_method_base
OCA/bank-payment-alternative:
    - account_payment_sepa_base
    - account_payment_batch_oca
    - account_payment_base_oca
    - account_payment_mandate
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Module to export direct debit orders in SEPA XML file format.

[ISO 20022](https://www.iso20022.org/) 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](https://www.europeanpaymentscouncil.eu/what-we-do/sepa-direct-debit)
of the [European Payments
Council](https://www.europeanpaymentscouncil.eu).

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](https://www.ebics.de/).

It supports both SEPA **Core** and SEPA **B2B** mandates.

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
account_payment_lot_form account.payment.lot field Inherits account_payment_sepa_base.account_payment_lot_form
account_payment_lot_list account.payment.lot field Inherits account_payment_sepa_base.account_payment_lot_list
account_payment_method_line_form Add SEPA identifiers on payment method line form account.payment.method.line group Inherits account_payment_sepa_base.account_payment_method_line_form
sepa_direct_debit_mandate sepa_direct_debit_mandate ir.ui.view qweb New
sepa_direct_debit_mandate_document sepa_direct_debit_mandate_document ir.ui.view qweb New
view_account_config_settings sepa_direct_debit.account_config_settings.form res.config.settings xpath Inherits account_payment_sepa_base.view_account_config_settings
view_company_form res.company field Inherits base.view_company_form
view_mandate_form sdd.mandate.form account.banking.mandate button Inherits account_payment_mandate.view_mandate_form
view_mandate_tree sdd.mandate.list account.banking.mandate field Inherits account_payment_mandate.view_mandate_tree
Models touched (8)

New fields (2)
  • format Selection
    default='sepa_core' ondelete={'sepa_core': 'set default', 'sepa_b2b': 'set default'} selection_add=[('sepa_core', 'SEPA CORE'), ('sepa_b2b', 'SEPA B2B')]
  • unique_mandate_reference Char
    size=35
Public methods (0)

No public methods.

New fields (3)
  • mandate_format Selection
    related='mandate_id.format' string='Mandate Format'
  • mandate_state Selection
    related='mandate_id.state' string='Mandate State'
  • mandate_type Selection
    related='mandate_id.type' string='Mandate Type'
Public methods (0)

No public methods.

New fields (2)
  • mandate_required Boolean
    related='order_id.payment_method_id.mandate_required'
  • sequence_type Selection
    args: [('RCUR', 'Recurring'), ('FNAL', 'Final'), ('OOFF', 'One-Off')]
Public methods (0)

No public methods.

New fields (1)
  • pain_version Selection
    ondelete={'pain.008.001.02': 'set null', 'pain.008.001.08': 'set null', 'pain.008.003.02': 'set null'} selection_add=[('pain.008.001.02', 'pain.008.001.02 (direct debit, old recommended version)'), ('pain.008.001.08', 'pain.008.001.08 (direct debit, new recommended version)'), ('pain.008.003.02', 'pain.008.003.02 (direct debit for Germany only)')]
Public methods (0)

No public methods.

New fields (1)
  • sepa_creditor_identifier Char
    help='Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from company will be used.\nThis identifier is composed of :\n- your country ISO code (2 letters)\n- a 2-digits checkum\n- a 3-letters business code\n- a country-specific identifier' size=35 string='SEPA Creditor Identifier'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • generate_payment_file(self)
    Creates the SEPA Direct Debit file. That's the important code !
  • generated2uploaded(self)
    Write 'last debit date' on mandates Set oneoff mandates and recurring/final mandates to expired

New fields (1)
  • sepa_creditor_identifier Char
    help='Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n- your country ISO code (2 letters)\n- a 2-digits checkum\n- a 3-letters business code\n- a country-specific identifier' size=35 string='SEPA Creditor Identifier'
Public methods (0)

No public methods.

New fields (1)
  • sepa_creditor_identifier Char
    readonly=False related='company_id.sepa_creditor_identifier'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment-alternative
GIT
GIThttps://github.com/OCA/bank-payment-alternative.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment-alternative/tree/18.0/account_payment_sepa_direct_debit
VERSION
VERSION 3.0.0
CATEGORY
CATEGORYBanking addons
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment-alternative
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-payment:
    - account_payment_method_base
OCA/bank-payment-alternative:
    - account_payment_sepa_base
    - account_payment_batch_oca
    - account_payment_base_oca
    - account_payment_mandate
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Module to export direct debit orders in SEPA XML file format.

[ISO 20022](https://www.iso20022.org/) 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](https://www.europeanpaymentscouncil.eu/what-we-do/sepa-direct-debit)
of the [European Payments
Council](https://www.europeanpaymentscouncil.eu).

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](https://www.ebics.de/).

It supports both SEPA **Core** and SEPA **B2B** mandates.

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
account_payment_lot_form account.payment.lot field Inherits account_payment_sepa_base.account_payment_lot_form
account_payment_lot_list account.payment.lot field Inherits account_payment_sepa_base.account_payment_lot_list
account_payment_method_line_form Add SEPA identifiers on payment method line form account.payment.method.line group Inherits account_payment_sepa_base.account_payment_method_line_form
sepa_direct_debit_mandate sepa_direct_debit_mandate ir.ui.view qweb New
sepa_direct_debit_mandate_document sepa_direct_debit_mandate_document ir.ui.view qweb New
view_account_config_settings sepa_direct_debit.account_config_settings.form res.config.settings xpath Inherits account_payment_sepa_base.view_account_config_settings
view_company_form res.company field Inherits base.view_company_form
view_mandate_form sdd.mandate.form account.banking.mandate button Inherits account_payment_mandate.view_mandate_form
view_mandate_tree sdd.mandate.list account.banking.mandate field Inherits account_payment_mandate.view_mandate_tree
Models touched (8)

New fields (2)
  • format Selection
    default='sepa_core' ondelete={'sepa_core': 'set default', 'sepa_b2b': 'set default'} selection_add=[('sepa_core', 'SEPA CORE'), ('sepa_b2b', 'SEPA B2B')]
  • unique_mandate_reference Char
    size=35
Public methods (0)

No public methods.

New fields (3)
  • mandate_format Selection
    related='mandate_id.format' string='Mandate Format'
  • mandate_state Selection
    related='mandate_id.state' string='Mandate State'
  • mandate_type Selection
    related='mandate_id.type' string='Mandate Type'
Public methods (0)

No public methods.

New fields (2)
  • mandate_required Boolean
    related='order_id.payment_method_id.mandate_required'
  • sequence_type Selection
    args: [('RCUR', 'Recurring'), ('FNAL', 'Final'), ('OOFF', 'One-Off')]
Public methods (0)

No public methods.

New fields (1)
  • pain_version Selection
    ondelete={'pain.008.001.02': 'set null', 'pain.008.001.08': 'set null', 'pain.008.003.02': 'set null'} selection_add=[('pain.008.001.02', 'pain.008.001.02 (direct debit, old recommended version)'), ('pain.008.001.08', 'pain.008.001.08 (direct debit, new recommended version)'), ('pain.008.003.02', 'pain.008.003.02 (direct debit for Germany only)')]
Public methods (0)

No public methods.

New fields (1)
  • sepa_creditor_identifier Char
    help='Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from company will be used.\nThis identifier is composed of :\n- your country ISO code (2 letters)\n- a 2-digits checkum\n- a 3-letters business code\n- a country-specific identifier' size=35 string='SEPA Creditor Identifier'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • generate_payment_file(self)
    Creates the SEPA Direct Debit file. That's the important code !
  • generated2uploaded(self)
    Write 'last debit date' on mandates Set oneoff mandates and recurring/final mandates to expired

New fields (1)
  • sepa_creditor_identifier Char
    help='Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n- your country ISO code (2 letters)\n- a 2-digits checkum\n- a 3-letters business code\n- a country-specific identifier' size=35 string='SEPA Creditor Identifier'
Public methods (0)

No public methods.

New fields (1)
  • sepa_creditor_identifier Char
    readonly=False related='company_id.sepa_creditor_identifier'
Public methods (0)

No public methods.