Account Banking SEPA Direct Debit

account_banking_sepa_direct_debit
REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/19.0/account_banking_sepa_direct_debit
VERSION
VERSION 1.1.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
COMMITTERSPedro M. Baeza, Weblate, OCA-git-bot, oca-ci, arantxa-s73
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:50
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_pain_base
    - account_payment_order
    - account_payment_mode
    - account_banking_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
Create SEPA files for Direct Debit

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

SEPA PAIN (PAyment INitiation) is the new european standard for
Customer-to-Bank payment instructions. This module implements SEPA
Direct Debit (SDD), more specifically PAIN versions 008.001.02,
008.001.03 and 008.001.04. It is part of the ISO 20022 standard,
available on <http://www.iso20022.org>.

The Implementation Guidelines for SEPA Direct Debit published by the
European Payments Council
(<http://http://www.europeanpaymentscouncil.eu>) use PAIN version
008.001.02. So if you don't know which version your bank supports, you
should try version 008.001.02 first.

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_mode_form Add SEPA identifiers on payment mode form account.payment.mode group Inherits account_banking_pain_base.account_payment_mode_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_banking_pain_base.view_account_config_settings
view_mandate_form sdd.mandate.form account.banking.mandate button Inherits account_banking_mandate.view_mandate_form
view_mandate_search sdd.mandate.search account.banking.mandate filter Inherits account_banking_mandate.view_mandate_search
view_mandate_tree sdd.mandate.tree account.banking.mandate field Inherits account_banking_mandate.view_mandate_tree
Models touched (8)

New fields (7)
  • display_name Char
    compute='_compute_display_name2' store=True
  • format Selection
    default='sepa' ondelete={'sepa': 'set default'} selection_add=[('sepa', 'Sepa Mandate')]
  • is_sent Boolean
  • recurrent_sequence_type Selection
    default='first' help='This field is only used for Recurrent mandates, not for One-Off mandates.' string='Sequence Type for Next Debit' tracking=70 args: [('first', 'First'), ('recurring', 'Recurring'), ('final', 'Final')]
  • scheme Selection
    default='CORE' tracking=80 args: [('CORE', 'Basic (CORE)'), ('B2B', 'Enterprise (B2B)')]
  • type Selection
    default='recurrent' ondelete={'recurrent': 'set null', 'oneoff': 'set null'} selection_add=[('recurrent', 'Recurrent'), ('oneoff', 'One-Off')]
  • unique_mandate_reference Char
    size=35
Public methods (3)
  • action_mandate_send(self)
    Opens a wizard to compose an email, with relevant mail template loaded by default
  • mandate_partner_bank_change(self)
    @api.onchange('partner_bank_id')
  • print_report(self)

New fields (0)

No new fields.

Public methods (1)
  • draft2open_payment_line_check(self)

New fields (1)
  • pain_version Selection
    ondelete={'pain.008.001.02': 'set null', 'pain.008.001.03': 'set null', 'pain.008.001.04': 'set null', 'pain.008.003.02': 'set null'} selection_add=[('pain.008.001.02', 'pain.008.001.02 (recommended for direct debit)'), ('pain.008.001.03', 'pain.008.001.03'), ('pain.008.001.04', 'pain.008.001.04'), ('pain.008.003.02', 'pain.008.003.02 (direct debit in Germany)')]
Public methods (1)
  • get_xsd_file_path(self)

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 mandates from first to recurring Set oneoff mandates to expired

New fields (0)

No new fields.

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. 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
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/18.0/account_banking_sepa_direct_debit
VERSION
VERSION 1.1.1
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, Pedro M. Baeza, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, arantxa-s73
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_pain_base
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
    - account_banking_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
Create SEPA files for Direct Debit

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

SEPA PAIN (PAyment INitiation) is the new european standard for
Customer-to-Bank payment instructions. This module implements SEPA
Direct Debit (SDD), more specifically PAIN versions 008.001.02,
008.001.03 and 008.001.04. It is part of the ISO 20022 standard,
available on <http://www.iso20022.org>.

The Implementation Guidelines for SEPA Direct Debit published by the
European Payments Council
(<http://http://www.europeanpaymentscouncil.eu>) use PAIN version
008.001.02. So if you don't know which version your bank supports, you
should try version 008.001.02 first.

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_mode_form Add SEPA identifiers on payment mode form account.payment.mode group Inherits account_banking_pain_base.account_payment_mode_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_banking_pain_base.view_account_config_settings
view_mandate_form sdd.mandate.form account.banking.mandate button Inherits account_banking_mandate.view_mandate_form
view_mandate_search sdd.mandate.search account.banking.mandate filter Inherits account_banking_mandate.view_mandate_search
view_mandate_tree sdd.mandate.tree account.banking.mandate field Inherits account_banking_mandate.view_mandate_tree
Models touched (8)

New fields (7)
  • display_name Char
    compute='_compute_display_name2' store=True
  • format Selection
    default='sepa' ondelete={'sepa': 'set default'} selection_add=[('sepa', 'Sepa Mandate')]
  • is_sent Boolean
  • recurrent_sequence_type Selection
    default='first' help='This field is only used for Recurrent mandates, not for One-Off mandates.' string='Sequence Type for Next Debit' tracking=70 args: [('first', 'First'), ('recurring', 'Recurring'), ('final', 'Final')]
  • scheme Selection
    default='CORE' tracking=80 args: [('CORE', 'Basic (CORE)'), ('B2B', 'Enterprise (B2B)')]
  • type Selection
    default='recurrent' ondelete={'recurrent': 'set null', 'oneoff': 'set null'} selection_add=[('recurrent', 'Recurrent'), ('oneoff', 'One-Off')]
  • unique_mandate_reference Char
    size=35
Public methods (3)
  • action_mandate_send(self)
    Opens a wizard to compose an email, with relevant mail template loaded by default
  • mandate_partner_bank_change(self)
    @api.onchange('partner_bank_id')
  • print_report(self)

New fields (0)

No new fields.

Public methods (1)
  • draft2open_payment_line_check(self)

New fields (1)
  • pain_version Selection
    ondelete={'pain.008.001.02': 'set null', 'pain.008.001.03': 'set null', 'pain.008.001.04': 'set null', 'pain.008.003.02': 'set null'} selection_add=[('pain.008.001.02', 'pain.008.001.02 (recommended for direct debit)'), ('pain.008.001.03', 'pain.008.001.03'), ('pain.008.001.04', 'pain.008.001.04'), ('pain.008.003.02', 'pain.008.003.02 (direct debit in Germany)')]
Public methods (1)
  • get_xsd_file_path(self)

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 mandates from first to recurring Set oneoff mandates to expired

New fields (0)

No new fields.

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. 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
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/17.0/account_banking_sepa_direct_debit
VERSION
VERSION 1.3.1
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
COMMITTERSPedro M. Baeza, Carlos Lopez, Víctor Martínez, Sébastien Alix, Weblate, OCA-git-bot, oca-ci, sygel, JasminSForgeFlow, Camille Morand
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_pain_base
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
    - account_banking_mandate
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - 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
Create SEPA files for Direct Debit

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

SEPA PAIN (PAyment INitiation) is the new european standard for
Customer-to-Bank payment instructions. This module implements SEPA
Direct Debit (SDD), more specifically PAIN versions 008.001.02,
008.001.03 and 008.001.04. It is part of the ISO 20022 standard,
available on <http://www.iso20022.org>.

The Implementation Guidelines for SEPA Direct Debit published by the
European Payments Council
(<http://http://www.europeanpaymentscouncil.eu>) use PAIN version
008.001.02. So if you don't know which version your bank supports, you
should try version 008.001.02 first.

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_mode_form Add SEPA identifiers on payment mode form account.payment.mode group Inherits account_banking_pain_base.account_payment_mode_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_banking_pain_base.view_account_config_settings
view_mandate_form sdd.mandate.form account.banking.mandate button Inherits account_banking_mandate.view_mandate_form
view_mandate_search sdd.mandate.search account.banking.mandate filter Inherits account_banking_mandate.view_mandate_search
view_mandate_tree sdd.mandate.tree account.banking.mandate field Inherits account_banking_mandate.view_mandate_tree
Models touched (8)

New fields (7)
  • display_name Char
    compute='_compute_display_name2' store=True
  • format Selection
    default='sepa' ondelete={'sepa': 'set default'} selection_add=[('sepa', 'Sepa Mandate')]
  • is_sent Boolean
  • recurrent_sequence_type Selection
    default='first' help='This field is only used for Recurrent mandates, not for One-Off mandates.' string='Sequence Type for Next Debit' tracking=70 args: [('first', 'First'), ('recurring', 'Recurring'), ('final', 'Final')]
  • scheme Selection
    default='CORE' tracking=80 args: [('CORE', 'Basic (CORE)'), ('B2B', 'Enterprise (B2B)')]
  • type Selection
    default='recurrent' ondelete={'recurrent': 'set null', 'oneoff': 'set null'} selection_add=[('recurrent', 'Recurrent'), ('oneoff', 'One-Off')]
  • unique_mandate_reference Char
    size=35
Public methods (3)
  • action_mandate_send(self)
    Opens a wizard to compose an email, with relevant mail template loaded by default
  • mandate_partner_bank_change(self)
    @api.onchange('partner_bank_id')
  • print_report(self)

New fields (0)

No new fields.

Public methods (1)
  • draft2open_payment_line_check(self)

New fields (1)
  • pain_version Selection
    ondelete={'pain.008.001.02': 'set null', 'pain.008.001.03': 'set null', 'pain.008.001.04': 'set null', 'pain.008.003.02': 'set null'} selection_add=[('pain.008.001.02', 'pain.008.001.02 (recommended for direct debit)'), ('pain.008.001.03', 'pain.008.001.03'), ('pain.008.001.04', 'pain.008.001.04'), ('pain.008.003.02', 'pain.008.003.02 (direct debit in Germany)')]
Public methods (1)
  • get_xsd_file_path(self)

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 mandates from first to recurring Set oneoff mandates to expired

New fields (0)

No new fields.

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. 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
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/16.0/account_banking_sepa_direct_debit
VERSION
VERSION 1.4.6
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, Pedro M. Baeza, Laurent Mignon (ACSONE), Enric Tobella, Luc De Meyer, Víctor Martínez, Sébastien Alix, Weblate, OCA-git-bot, David, oca-ci, Antônio Neto, Carolina Fernandez, Reyes4711, sygel
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_pain_base
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
    - account_banking_mandate
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_mode_form Add SEPA identifiers on payment mode form account.payment.mode group Inherits account_banking_pain_base.account_payment_mode_form
res_config_settings_view_form sepa_direct_debit.account_config_settings.form res.config.settings xpath Inherits account_banking_pain_base.res_config_settings_view_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_mandate_form sdd.mandate.form account.banking.mandate button Inherits account_banking_mandate.view_mandate_form
view_mandate_search sdd.mandate.search account.banking.mandate filter Inherits account_banking_mandate.view_mandate_search
view_mandate_tree sdd.mandate.tree account.banking.mandate field Inherits account_banking_mandate.view_mandate_tree
Models touched (8)

New fields (7)
  • display_name Char
    compute='_compute_display_name2' store=True
  • format Selection
    default='sepa' ondelete={'sepa': 'set default'} selection_add=[('sepa', 'Sepa Mandate')]
  • is_sent Boolean
  • recurrent_sequence_type Selection
    default='first' help='This field is only used for Recurrent mandates, not for One-Off mandates.' string='Sequence Type for Next Debit' tracking=70 args: [('first', 'First'), ('recurring', 'Recurring'), ('final', 'Final')]
  • scheme Selection
    default='CORE' tracking=80 args: [('CORE', 'Basic (CORE)'), ('B2B', 'Enterprise (B2B)')]
  • type Selection
    default='recurrent' ondelete={'recurrent': 'set null', 'oneoff': 'set null'} selection_add=[('recurrent', 'Recurrent'), ('oneoff', 'One-Off')]
  • unique_mandate_reference Char
    size=35
Public methods (3)
  • action_mandate_send(self)
    Opens a wizard to compose an email, with relevant mail template loaded by default
  • mandate_partner_bank_change(self)
    @api.onchange('partner_bank_id')
  • print_report(self)

New fields (0)

No new fields.

Public methods (1)
  • draft2open_payment_line_check(self)

New fields (1)
  • pain_version Selection
    ondelete={'pain.008.001.02': 'set null', 'pain.008.001.03': 'set null', 'pain.008.001.04': 'set null', 'pain.008.003.02': 'set null'} selection_add=[('pain.008.001.02', 'pain.008.001.02 (recommended for direct debit)'), ('pain.008.001.03', 'pain.008.001.03'), ('pain.008.001.04', 'pain.008.001.04'), ('pain.008.003.02', 'pain.008.003.02 (direct debit in Germany)')]
Public methods (1)
  • get_xsd_file_path(self)

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 mandates from first to recurring Set oneoff mandates to expired

New fields (0)

No new fields.

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. 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
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/15.0/account_banking_sepa_direct_debit
VERSION
VERSION 2.3.1
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
COMMITTERSPedro M. Baeza, manu, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, David Ramia, Stefan, Carolina Fernandez, sygel, josep-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_pain_base
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
    - account_banking_mandate
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-stdnum
lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_mode_form Add SEPA identifiers on payment mode form account.payment.mode group Inherits account_banking_pain_base.account_payment_mode_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_banking_pain_base.view_account_config_settings
view_mandate_form sdd.mandate.form account.banking.mandate button Inherits account_banking_mandate.view_mandate_form
view_mandate_search sdd.mandate.search account.banking.mandate filter Inherits account_banking_mandate.view_mandate_search
view_mandate_tree sdd.mandate.tree account.banking.mandate field Inherits account_banking_mandate.view_mandate_tree
Models touched (8)

New fields (7)
  • display_name Char
    compute='_compute_display_name2' store=True
  • format Selection
    default='sepa' ondelete={'sepa': 'set default'} selection_add=[('sepa', 'Sepa Mandate')]
  • is_sent Boolean
  • recurrent_sequence_type Selection
    default='first' help='This field is only used for Recurrent mandates, not for One-Off mandates.' string='Sequence Type for Next Debit' tracking=70 args: [('first', 'First'), ('recurring', 'Recurring'), ('final', 'Final')]
  • scheme Selection
    default='CORE' tracking=80 args: [('CORE', 'Basic (CORE)'), ('B2B', 'Enterprise (B2B)')]
  • type Selection
    default='recurrent' ondelete={'recurrent': 'set null', 'oneoff': 'set null'} selection_add=[('recurrent', 'Recurrent'), ('oneoff', 'One-Off')]
  • unique_mandate_reference Char
    size=35
Public methods (3)
  • action_mandate_send(self)
    Opens a wizard to compose an email, with relevant mail template loaded by default
  • mandate_partner_bank_change(self)
    @api.onchange('partner_bank_id')
  • print_report(self)

New fields (0)

No new fields.

Public methods (1)
  • draft2open_payment_line_check(self)

New fields (1)
  • pain_version Selection
    ondelete={'pain.008.001.02': 'set null', 'pain.008.001.03': 'set null', 'pain.008.001.04': 'set null', 'pain.008.003.02': 'set null'} selection_add=[('pain.008.001.02', 'pain.008.001.02 (recommended for direct debit)'), ('pain.008.001.03', 'pain.008.001.03'), ('pain.008.001.04', 'pain.008.001.04'), ('pain.008.003.02', 'pain.008.003.02 (direct debit in Germany)')]
Public methods (1)
  • get_xsd_file_path(self)

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 mandates from first to recurring Set oneoff mandates to expired

New fields (0)

No new fields.

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. 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
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/14.0/account_banking_sepa_direct_debit
VERSION
VERSION 2.1.3
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, Pedro M. Baeza, Enric Tobella, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, oca-ci, Aritz Olea, Eduardo De Miguel, Carlos Roca, oca-git-bot, Eduard Brahas, sygel
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_pain_base
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
    - account_banking_mandate
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - 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

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
account_payment_mode_form Add SEPA identifiers on payment mode form account.payment.mode group Inherits account_banking_pain_base.account_payment_mode_form
assets_common account_banking_sepa_direct_debit pdf assets ir.ui.view qweb Inherits web.report_assets_common
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_banking_pain_base.view_account_config_settings
view_mandate_form sdd.mandate.form account.banking.mandate button Inherits account_banking_mandate.view_mandate_form
view_mandate_search sdd.mandate.search account.banking.mandate filter Inherits account_banking_mandate.view_mandate_search
view_mandate_tree sdd.mandate.tree account.banking.mandate field Inherits account_banking_mandate.view_mandate_tree
Models touched (7)

New fields (6)
  • display_name Char
    compute='_compute_display_name2' store=True
  • format Selection
    default='sepa' ondelete={'sepa': 'set default'} selection_add=[('sepa', 'Sepa Mandate')]
  • recurrent_sequence_type Selection
    default='first' help='This field is only used for Recurrent mandates, not for One-Off mandates.' string='Sequence Type for Next Debit' tracking=70 args: [('first', 'First'), ('recurring', 'Recurring'), ('final', 'Final')]
  • scheme Selection
    default='CORE' string='Scheme' tracking=80 args: [('CORE', 'Basic (CORE)'), ('B2B', 'Enterprise (B2B)')]
  • type Selection
    default='recurrent' ondelete={'recurrent': 'set null', 'oneoff': 'set null'} selection_add=[('recurrent', 'Recurrent'), ('oneoff', 'One-Off')]
  • unique_mandate_reference Char
    size=35
Public methods (2)
  • mandate_partner_bank_change(self)
    @api.onchange('partner_bank_id')
  • print_report(self)

New fields (0)

No new fields.

Public methods (1)
  • draft2open_payment_line_check(self)

New fields (1)
  • pain_version Selection
    ondelete={'pain.008.001.02': 'set null', 'pain.008.001.03': 'set null', 'pain.008.001.04': 'set null', 'pain.008.003.02': 'set null'} selection_add=[('pain.008.001.02', 'pain.008.001.02 (recommended for direct debit)'), ('pain.008.001.03', 'pain.008.001.03'), ('pain.008.001.04', 'pain.008.001.04'), ('pain.008.003.02', 'pain.008.003.02 (direct debit in Germany)')]
Public methods (1)
  • get_xsd_file_path(self)

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 mandates from first to recurring Set oneoff 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
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/13.0/account_banking_sepa_direct_debit
VERSION
VERSION 1.2.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
COMMITTERSPedro M. Baeza, Enric Tobella, OCA Transbot, sergio-teruel, oca-travis, Weblate, OCA-git-bot, Marçal Isern
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_pain_base
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
    - account_banking_mandate
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - 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

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
account_payment_mode_form Add SEPA identifiers on payment mode form account.payment.mode group Inherits account_banking_pain_base.account_payment_mode_form
assets_common account_banking_sepa_direct_debit pdf assets ir.ui.view qweb Inherits web.report_assets_common
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_banking_pain_base.view_account_config_settings
view_mandate_form sdd.mandate.form account.banking.mandate field Inherits account_banking_mandate.view_mandate_form
view_mandate_search sdd.mandate.search account.banking.mandate filter Inherits account_banking_mandate.view_mandate_search
view_mandate_tree sdd.mandate.tree account.banking.mandate field Inherits account_banking_mandate.view_mandate_tree
Models touched (8)

New fields (6)
  • display_name Char
    compute='_compute_display_name2' store=True
  • format Selection
    default='sepa' selection_add=[('sepa', 'Sepa Mandate')]
  • recurrent_sequence_type Selection
    default='first' help='This field is only used for Recurrent mandates, not for One-Off mandates.' string='Sequence Type for Next Debit' track_visibility='onchange' args: [('first', 'First'), ('recurring', 'Recurring'), ('final', 'Final')]
  • scheme Selection
    default='CORE' string='Scheme' track_visibility='onchange' args: [('CORE', 'Basic (CORE)'), ('B2B', 'Enterprise (B2B)')]
  • type Selection
    selection_add=[('recurrent', 'Recurrent'), ('oneoff', 'One-Off')]
  • unique_mandate_reference Char
    size=35
Public methods (1)
  • mandate_partner_bank_change(self)
    @api.onchange('partner_bank_id')

New fields (0)

No new fields.

Public methods (1)
  • draft2open_payment_line_check(self)

New fields (1)
  • pain_version Selection
    selection_add=[('pain.008.001.02', 'pain.008.001.02 (recommended for direct debit)'), ('pain.008.001.03', 'pain.008.001.03'), ('pain.008.001.04', 'pain.008.001.04'), ('pain.008.003.02', 'pain.008.003.02 (direct debit in Germany)')]
Public methods (1)
  • get_xsd_file_path(self)

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 mandates from first to recurring Set oneoff mandates to expired

New fields (0)

No new fields.

Public methods (1)
  • move_line_offsetting_account_hashcode(self)
    From my experience, even when you ask several direct debits at the same date with enough delay, you will have several credits on your bank statement: one for each mandate types. So we split the transfer move lines by mandate type, so easier reconciliation of the bank statement.

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
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/12.0/account_banking_sepa_direct_debit
VERSION
VERSION 1.3.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, Holger Brunn, Pedro M. Baeza, OCA Transbot, Thomas Binsfeld, Sergio Teruel, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_pain_base
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
    - account_banking_mandate
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
account_payment_mode_form Add SEPA identifiers on payment mode form account.payment.mode group Inherits account_banking_pain_base.account_payment_mode_form
assets_common account_banking_sepa_direct_debit pdf assets ir.ui.view qweb Inherits web.report_assets_common
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_banking_pain_base.view_account_config_settings
view_mandate_form sdd.mandate.form account.banking.mandate field Inherits account_banking_mandate.view_mandate_form
view_mandate_search sdd.mandate.search account.banking.mandate filter Inherits account_banking_mandate.view_mandate_search
view_mandate_tree sdd.mandate.tree account.banking.mandate field Inherits account_banking_mandate.view_mandate_tree
Models touched (8)

New fields (6)
  • display_name Char
    compute='_compute_display_name2' store=True
  • format Selection
    default='sepa' selection_add=[('sepa', 'Sepa Mandate')]
  • recurrent_sequence_type Selection
    default='first' help='This field is only used for Recurrent mandates, not for One-Off mandates.' string='Sequence Type for Next Debit' track_visibility='onchange' args: [('first', 'First'), ('recurring', 'Recurring'), ('final', 'Final')]
  • scheme Selection
    default='CORE' string='Scheme' track_visibility='onchange' args: [('CORE', 'Basic (CORE)'), ('B2B', 'Enterprise (B2B)')]
  • type Selection
    selection_add=[('recurrent', 'Recurrent'), ('oneoff', 'One-Off')]
  • unique_mandate_reference Char
    size=35
Public methods (1)
  • mandate_partner_bank_change(self)
    @api.multi@api.onchange('partner_bank_id')

New fields (0)

No new fields.

Public methods (1)
  • draft2open_payment_line_check(self)
    @api.multi

New fields (1)
  • pain_version Selection
    selection_add=[('pain.008.001.02', 'pain.008.001.02 (recommended for direct debit)'), ('pain.008.001.03', 'pain.008.001.03'), ('pain.008.001.04', 'pain.008.001.04'), ('pain.008.003.02', 'pain.008.003.02 (direct debit in Germany)')]
Public methods (1)
  • get_xsd_file_path(self)
    @api.multi

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)
    @api.multi
    Creates the SEPA Direct Debit file. That's the important code !
  • generated2uploaded(self)
    @api.multi
    Write 'last debit date' on mandates Set mandates from first to recurring Set oneoff mandates to expired

New fields (0)

No new fields.

Public methods (1)
  • move_line_offsetting_account_hashcode(self)
    @api.multi
    From my experience, even when you ask several direct debits at the same date with enough delay, you will have several credits on your bank statement: one for each mandate types. So we split the transfer move lines by mandate type, so easier reconciliation of the bank statement.

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
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/11.0/account_banking_sepa_direct_debit
VERSION
VERSION 1.0.4
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
COMMITTERSPedro M. Baeza, GitHub, Andrea, Enric Tobella, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, OCA-git-bot, Guille
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_pain_base
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
    - account_banking_mandate
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - analytic
    - web_planner
    - portal
    - http_routing
    - base_iban
    - document
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
account_payment_mode_form Add SEPA identifiers on payment mode form account.payment.mode group Inherits account_banking_pain_base.account_payment_mode_form
assets_common account_banking_sepa_direct_debit pdf assets ir.ui.view qweb Inherits web.report_assets_common
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_banking_pain_base.view_account_config_settings
view_mandate_form sdd.mandate.form account.banking.mandate field Inherits account_banking_mandate.view_mandate_form
view_mandate_search sdd.mandate.search account.banking.mandate filter Inherits account_banking_mandate.view_mandate_search
view_mandate_tree sdd.mandate.tree account.banking.mandate field Inherits account_banking_mandate.view_mandate_tree
Models touched (7)

New fields (6)
  • display_name Char
    compute='compute_display_name' store=True
  • format Selection
    default='sepa' selection_add=[('sepa', 'Sepa Mandate')]
  • recurrent_sequence_type Selection
    default='first' help='This field is only used for Recurrent mandates, not for One-Off mandates.' string='Sequence Type for Next Debit' track_visibility='onchange' args: [('first', 'First'), ('recurring', 'Recurring'), ('final', 'Final')]
  • scheme Selection
    default='CORE' string='Scheme' track_visibility='onchange' args: [('CORE', 'Basic (CORE)'), ('B2B', 'Enterprise (B2B)')]
  • type Selection
    selection_add=[('recurrent', 'Recurrent'), ('oneoff', 'One-Off')]
  • unique_mandate_reference Char
    size=35
Public methods (2)
  • compute_display_name(self)
    @api.multi@api.depends('unique_mandate_reference', 'recurrent_sequence_type')
  • mandate_partner_bank_change(self)
    @api.multi@api.onchange('partner_bank_id')

New fields (1)
  • pain_version Selection
    selection_add=[('pain.008.001.02', 'pain.008.001.02 (recommended for direct debit)'), ('pain.008.001.03', 'pain.008.001.03'), ('pain.008.001.04', 'pain.008.001.04'), ('pain.008.003.02', 'pain.008.003.02 (direct debit in Germany)')]
Public methods (1)
  • get_xsd_file_path(self)
    @api.multi

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)
    @api.multi
    Creates the SEPA Direct Debit file. That's the important code !
  • generated2uploaded(self)
    @api.multi
    Write 'last debit date' on mandates Set mandates from first to recurring Set oneoff mandates to expired

New fields (0)

No new fields.

Public methods (1)
  • move_line_offsetting_account_hashcode(self)
    @api.multi
    From my experience, even when you ask several direct debits at the same date with enough delay, you will have several credits on your bank statement: one for each mandate types. So we split the transfer move lines by mandate type, so easier reconciliation of the bank statement.

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
    related='company_id.sepa_creditor_identifier'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/10.0/account_banking_sepa_direct_debit
VERSION
VERSION 1.1.3
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, Pedro M. Baeza, Carlos Dauden, OCA Transbot, oca-travis, OCA-git-bot, Guille
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_pain_base
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
    - account_banking_mandate
odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - web_planner
    - base_iban
    - document
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_mode_form Add SEPA identifiers on payment mode form account.payment.mode group Inherits account_banking_pain_base.account_payment_mode_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 account.config.settings group Inherits account_banking_pain_base.view_account_config_settings
view_mandate_form sdd.mandate.form account.banking.mandate field Inherits account_banking_mandate.view_mandate_form
view_mandate_search sdd.mandate.search account.banking.mandate filter Inherits account_banking_mandate.view_mandate_search
view_mandate_tree sdd.mandate.tree account.banking.mandate field Inherits account_banking_mandate.view_mandate_tree
Models touched (7)

New fields (6)
  • display_name Char
    compute='compute_display_name' store=True
  • format Selection
    default='sepa' selection_add=[('sepa', 'Sepa Mandate')]
  • recurrent_sequence_type Selection
    default='first' help='This field is only used for Recurrent mandates, not for One-Off mandates.' string='Sequence Type for Next Debit' track_visibility='onchange' args: [('first', 'First'), ('recurring', 'Recurring'), ('final', 'Final')]
  • scheme Selection
    default='CORE' string='Scheme' track_visibility='onchange' args: [('CORE', 'Basic (CORE)'), ('B2B', 'Enterprise (B2B)')]
  • type Selection
    string='Type of Mandate' track_visibility='onchange' args: [('recurrent', 'Recurrent'), ('oneoff', 'One-Off')]
  • unique_mandate_reference Char
    size=35
Public methods (2)
  • compute_display_name(self)
    @api.multi@api.depends('unique_mandate_reference', 'recurrent_sequence_type')
  • mandate_partner_bank_change(self)
    @api.multi@api.onchange('partner_bank_id')

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

No public methods.

New fields (1)
  • pain_version Selection
    selection_add=[('pain.008.001.02', 'pain.008.001.02 (recommended for direct debit)'), ('pain.008.001.03', 'pain.008.001.03'), ('pain.008.001.04', 'pain.008.001.04'), ('pain.008.003.02', 'pain.008.003.02 (direct debit in Germany)')]
Public methods (1)
  • get_xsd_file_path(self)
    @api.multi

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)
    @api.multi
    Creates the SEPA Direct Debit file. That's the important code !
  • generated2uploaded(self)
    @api.multi
    Write 'last debit date' on mandates Set mandates from first to recurring Set oneoff mandates to expired

New fields (0)

No new fields.

Public methods (1)
  • move_line_offsetting_account_hashcode(self)
    @api.multi
    From my experience, even when you ask several direct debits at the same date with enough delay, you will have several credits on your bank statement: one for each mandate types. So we split the transfer move lines by mandate type, so easier reconciliation of the bank statement.

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.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/9.0/account_banking_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, Stefan Rijnhart, Pedro M. Baeza, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate, Antonio Espinosa
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_pain_base
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
    - account_banking_mandate
odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - report
    - analytic
    - web_tip
    - web_planner
    - base_iban
    - document
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
account_payment_mode_form Add SEPA identifiers on payment mode form account.payment.mode group Inherits account_banking_pain_base.account_payment_mode_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 account.config.settings div Inherits account.view_account_config_settings
view_company_form sepa_direct_debit.res.company.form res.company group Inherits account_banking_pain_base.view_company_form
view_mandate_form sdd.mandate.form account.banking.mandate field Inherits account_banking_mandate.view_mandate_form
view_mandate_search sdd.mandate.search account.banking.mandate filter Inherits account_banking_mandate.view_mandate_search
view_mandate_tree sdd.mandate.tree account.banking.mandate field Inherits account_banking_mandate.view_mandate_tree
Models touched (7)

New fields (6)
  • display_name Char
    compute='compute_display_name' store=True
  • format Selection
    default='sepa' selection_add=[('sepa', 'Sepa Mandate')]
  • recurrent_sequence_type Selection
    default='first' help='This field is only used for Recurrent mandates, not for One-Off mandates.' string='Sequence Type for Next Debit' track_visibility='onchange' args: [('first', 'First'), ('recurring', 'Recurring'), ('final', 'Final')]
  • scheme Selection
    default='CORE' string='Scheme' track_visibility='onchange' args: [('CORE', 'Basic (CORE)'), ('B2B', 'Enterprise (B2B)')]
  • type Selection
    string='Type of Mandate' track_visibility='onchange' args: [('recurrent', 'Recurrent'), ('oneoff', 'One-Off')]
  • unique_mandate_reference Char
    size=35
Public methods (2)
  • compute_display_name(self)
    @api.multi@api.depends('unique_mandate_reference', 'recurrent_sequence_type')
  • mandate_partner_bank_change(self)
    @api.multi@api.onchange('partner_bank_id')

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

No public methods.

New fields (1)
  • pain_version Selection
    selection_add=[('pain.008.001.02', 'pain.008.001.02 (recommended for direct debit)'), ('pain.008.001.03', 'pain.008.001.03'), ('pain.008.001.04', 'pain.008.001.04'), ('pain.008.003.02', 'pain.008.003.02 (direct debit in Germany)')]
Public methods (1)
  • get_xsd_file_path(self)
    @api.multi

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)
  • finalize_sepa_file_creation(self, xml_root, gen_args)
    @api.multi
    Save the SEPA Direct Debit file: mark all payments in the file as 'sent'. Write 'last debit date' on mandate and set oneoff mandate to expired.
  • generate_payment_file(self)
    @api.multi
    Creates the SEPA Direct Debit file. That's the important code !

New fields (0)

No new fields.

Public methods (1)
  • move_line_offsetting_account_hashcode(self)
    @api.multi
    From my experience, even when you ask several direct debits at the same date with enough delay, you will have several credits on your bank statement: one for each mandate types. So we split the transfer move lines by mandate type, so easier reconciliation of the bank statement.

New fields (2)
  • original_creditor_identifier Char
    size=70 string='Original Creditor Identifier'
  • 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.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/8.0/account_banking_sepa_direct_debit
VERSION
VERSION 0.5.1
CATEGORY
CATEGORYBanking addons
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Antiun Ingeniería S.L., Serv. Tecnol. Avanzados - Pedro M. Baeza
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Antiun Ingeniería S.L., Serv. Tecnol. Avanzados - Pedro M. Baeza
COMMITTERS
COMMITTERSStéphane Bidoul, Alexis de Lattre, Alexandre Fayolle, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate, Antonio Espinosa, Sergio Incaser, sergio-incaser, Philippe Schmidt
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:27
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_direct_debit
    - account_banking_payment_export
    - account_banking_pain_base
    - account_banking_mandate
odoo/odoo:
    - account_payment
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - report
    - analytic
    - board
    - edi
    - email_template
    - account_voucher
    - base_iban
    - document
    - knowledge
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
banking_export_sdd_wizard_view banking.export.sdd.wizard.view banking.export.sdd.wizard form New
sdd_mandate_form sdd.mandate.form account.banking.mandate field Inherits account_banking_mandate.view_mandate_form
sdd_mandate_partner_bank_tree sdd.mandate.res.partner.bank.tree res.partner.bank field Inherits account_banking_mandate.mandate_partner_bank_tree
sdd_mandate_partner_form sdd.mandate.partner.form res.partner xpath Inherits account_banking_mandate.mandate_partner_form
sdd_mandate_search sdd.mandate.search account.banking.mandate filter Inherits account_banking_mandate.view_mandate_search
sdd_mandate_tree sdd.mandate.tree account.banking.mandate field Inherits account_banking_mandate.view_mandate_tree
sdd_res_company_form sepa_direct_debit.res.company.form res.company group Inherits account_banking_pain_base.view_company_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_payment_mode_form_inherit Add SEPA identifiers payment.mode group Inherits account_banking_pain_base.view_payment_mode_form_inherit
Models touched (5)

New fields (5)
  • format Selection
    default='sepa' selection_add=[('sepa', _('Sepa Mandate'))]
  • recurrent_sequence_type Selection
    default='first' help='This field is only used for Recurrent mandates, not for One-Off mandates.' string='Sequence Type for Next Debit' track_visibility='onchange' args: [('first', 'First'), ('recurring', 'Recurring'), ('final', 'Final')]
  • scheme Selection
    default='CORE' string='Scheme' args: [('CORE', 'Basic (CORE)'), ('B2B', 'Enterprise (B2B)')]
  • type Selection
    string='Type of Mandate' track_visibility='always' args: [('recurrent', 'Recurrent'), ('oneoff', 'One-Off')]
  • unique_mandate_reference Char
    size=35
Public methods (1)
  • mandate_partner_bank_change(self)
    @api.multi@api.onchange('partner_bank_id')

New fields (0)

No new fields.

Public methods (1)
  • move_line_transfer_account_hashcode(self)
    @api.multi
    From my experience, even when you ask several direct debits at the same date with enough delay, you will have several credits on your bank statement: one for each mandate types. So we split the transfer move lines by mandate type, so easier reconciliation of the bank statement.

New fields (8)
  • batch_booking Boolean
    help='If true, the bank statement will display only one credit line for all the direct debits of the SEPA file ; if false, the bank statement will display one credit line per direct debit of the SEPA file.' string='Batch Booking'
  • charge_bearer Selection
    default='SLEV' help='Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor.' required=True string='Charge Bearer' args: [('SLEV', 'Following Service Level'), ('SHAR', 'Shared'), ('CRED', 'Borne by Creditor'), ('DEBT', 'Borne by Debtor')]
  • file Binary
    readonly=True string='File'
  • filename Char
    readonly=True string='Filename'
  • nb_transactions Integer
    readonly=True string='Number of Transactions'
  • payment_order_ids Many2many → payment.order
    readonly=True string='Payment Orders' args: 'payment.order', 'wiz_sdd_payorders_rel', 'wizard_id', 'payment_order_id'
  • state Selection
    default='create' readonly=True string='State' args: [('create', 'Create'), ('finish', 'Finish')]
  • total_amount Float
    readonly=True string='Total Amount'
Public methods (3)
  • create(self, vals)
    @api.model
  • create_sepa(self)
    @api.multi
    Creates the SEPA Direct Debit file. That's the important code !
  • save_sepa(self)
    @api.multi
    Save the SEPA Direct Debit file: mark all payments in the file as 'sent'. Write 'last debit date' on mandate and set oneoff mandate 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. 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 (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.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/7.0/account_banking_sepa_direct_debit
VERSION
VERSION 0.2.1
CATEGORY
CATEGORYBanking addons
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSStéphane Bidoul, Alexis de Lattre, Yannick Vaucher, Alexandre Fayolle, Raphaël Valyi, Sandy Carter, Holger Brunn, Pedro M. Baeza, Ronald Portier (Therp BV), EL HADJI DEM, Launchpad Translations on behalf of banking-addons-team, OCA Transbot, Cyril Sester
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_mandate
    - account_direct_debit
    - account_banking_payment_export
    - account_banking_pain_base
odoo/odoo:
    - account_payment
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - process
    - decimal_precision
    - mail
    - analytic
    - board
    - edi
    - email_template
    - account_voucher
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Module to export direct debit payment orders in SEPA XML file format.

SEPA PAIN (PAyment INitiation) is the new european standard for
Customer-to-Bank payment instructions.

This module implements SEPA Direct Debit (SDD), more specifically PAIN
versions 008.001.02, 008.001.03 and 008.001.04.
It is part of the ISO 20022 standard, available on http://www.iso20022.org.

The Implementation Guidelines for SEPA Direct Debit published by the European
Payments Council (http://http://www.europeanpaymentscouncil.eu) use PAIN
version 008.001.02. So if you don't know which version your bank supports,
you should try version 008.001.02 first.

This module uses the framework provided by the banking addons,
cf https://www.github.com/OCA/banking-addons

Please contact Alexis de Lattre from Akretion <alexis.delattre@akretion.com>
for any help or question about this module.
    

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
banking_export_sdd_wizard_view banking.export.sdd.wizard.view banking.export.sdd.wizard form New
sdd_mandate_form sdd.mandate.form account.banking.mandate data Inherits account_banking_mandate.view_mandate_form
sdd_mandate_partner_bank_tree sdd.mandate.res.partner.bank.tree res.partner.bank xpath Inherits account_banking_mandate.mandate_partner_bank_tree
sdd_mandate_partner_form sdd.mandate.partner.form res.partner xpath Inherits account_banking_mandate.mandate_partner_form
sdd_mandate_search sdd.mandate.search account.banking.mandate xpath Inherits account_banking_mandate.view_mandate_search
sdd_mandate_tree sdd.mandate.tree account.banking.mandate xpath Inherits account_banking_mandate.view_mandate_tree
sdd_res_company_form sepa_direct_debit.res.company.form res.company group Inherits account_banking_pain_base.view_company_form
view_banking_export_sdd_form account.banking.export.sdd.form banking.export.sdd form New
view_banking_export_sdd_tree account.banking.export.sdd.tree banking.export.sdd tree New
Models touched (4)

New fields (0)

No new fields.

Public methods (3)
  • create(self, cr, uid, vals, context=None)
  • mandate_partner_bank_change(self, cr, uid, ids, partner_bank_id, type, recurrent_sequence_type, last_debit_date, state)
  • mandate_type_change(self, cr, uid, ids, type)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (4)
  • cancel_sepa(self, cr, uid, ids, context=None)
    Cancel the SEPA file: just drop the file
  • create(self, cr, uid, vals, context=None)
  • create_sepa(self, cr, uid, ids, context=None)
    Creates the SEPA Direct Debit file. That's the important code !
  • save_sepa(self, cr, uid, ids, context=None)
    Save the SEPA Direct Debit file: mark all payments in the file as 'sent'. Write 'last debit date' on mandate and set oneoff mandate to expired

New fields (0)

No new fields.

Public methods (1)
  • is_sepa_creditor_identifier_valid(self, cr, uid, sepa_creditor_identifier, context=None)
    Check if SEPA Creditor Identifier is valid @param sepa_creditor_identifier: SEPA Creditor Identifier as str or unicode @return: True if valid, False otherwise
REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/6.1/account_banking_sepa_direct_debit
VERSION
VERSION 0.1
CATEGORY
CATEGORYBanking addons
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexandre Fayolle, Holger Brunn
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:04:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_direct_debit
    - account_banking
    - account_iban_preserve_domestic
    - account_banking_payment_export
    - account_banking_pain_base
odoo/odoo:
    - base
    - account
    - base_setup
    - product
    - process
    - decimal_precision
    - analytic
    - board
    - edi
    - email_template
    - mail
    - base_tools
    - base_iban
    - account_payment
    - account_voucher
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
BeautifulSoup
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Module to export direct debit payment orders in SEPA XML file format.

SEPA PAIN (PAyment INitiation) is the new european standard for Customer-to-Bank payment instructions. This module implements SEPA Direct Debit (SDD), more specifically PAIN versions 008.001.02, 008.001.03 and 008.001.04. It is part of the ISO 20022 standard, available on http://www.iso20022.org.

The Implementation Guidelines for SEPA Direct Debit published by the European Payments Council (http://http://www.europeanpaymentscouncil.eu) use PAIN version 008.001.02. So if you don't know which version your bank supports, you should try version 008.001.02 first.

This module uses the framework provided by the banking addons, cf https://launchpad.net/banking-addons

Please contact Alexis de Lattre from Akretion <alexis.delattre@akretion.com> for any help or question about this module.
    

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
banking_export_sdd_wizard_view banking.export.sdd.wizard.view banking.export.sdd.wizard form New
invoice_form add.sdd.mandate.on.customer.invoice.form account.invoice field Inherits account.invoice_form
sdd_mandate_form sdd.mandate.form sdd.mandate form New
sdd_mandate_partner_bank_form sdd.mandate.res.partner.bank.form res.partner.bank group Inherits base.view_partner_bank_form
sdd_mandate_partner_bank_tree sdd.mandate.res.partner.bank.tree res.partner.bank field Inherits base.view_partner_bank_tree
sdd_mandate_partner_form sdd.mandate.partner.form res.partner xpath Inherits account.view_partner_property_form
sdd_mandate_search sdd.mandate.search sdd.mandate search New
sdd_mandate_tree sdd.mandate.tree sdd.mandate tree New
sdd_res_company_form sepa_direct_debit.res.company.form res.company group Inherits account_banking_pain_base.view_company_form
sdd_view_payment_order_form sdd.payment.order.form payment.order xpath Inherits account_payment.view_payment_order_form
view_banking_export_sdd_form account.banking.export.sdd.form banking.export.sdd form New
view_banking_export_sdd_tree account.banking.export.sdd.tree banking.export.sdd tree New
Models touched (7)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (4)
  • cancel_sepa(self, cr, uid, ids, context=None)
    Cancel the SEPA file: just drop the file
  • create(self, cr, uid, vals, context=None)
  • create_sepa(self, cr, uid, ids, context=None)
    Creates the SEPA Direct Debit file. That's the important code !
  • save_sepa(self, cr, uid, ids, context=None)
    Save the SEPA Direct Debit file: mark all payments in the file as 'sent'. Write 'last debit date' on mandate and set oneoff mandate to expired

New fields (0)

No new fields.

Public methods (1)
  • create(self, cr, uid, vals, context=None)
    If the customer invoice has a mandate, take it otherwise, take the first valid mandate of the bank account

New fields (0)

No new fields.

Public methods (1)
  • is_sepa_creditor_identifier_valid(self, cr, uid, sepa_creditor_identifier, context=None)
    Check if SEPA Creditor Identifier is valid @param sepa_creditor_identifier: SEPA Creditor Identifier as str or unicode @return: True if valid, False otherwise

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • back2draft(self, cr, uid, ids, context=None)
  • cancel(self, cr, uid, ids, context=None)
  • create(self, cr, uid, vals, context=None)
  • mandate_partner_bank_change(self, cr, uid, ids, partner_bank_id, type, recurrent_sequence_type, last_debit_date, state)
  • mandate_type_change(self, cr, uid, ids, type)
  • validate(self, cr, uid, ids, context=None)