Account Payment Mandate

account_payment_mandate
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_mandate
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYBanking addons
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Akretion, Therp B.V., Compassion CH
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Akretion, Therp B.V., Compassion CH
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:40:50
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-payment:
    - account_payment_method_base
OCA/bank-payment-alternative:
    - account_payment_batch_oca
    - account_payment_base_oca
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 Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module adds a generic model for banking mandates. These mandates
can be specialized to fit any banking mandates (such as sepa or lsv).

A banking mandate is attached to a bank account and represents an
authorization that the bank account owner gives to a company for a
specific operation (such as direct debit). You can setup mandates from
the accounting menu or directly from a bank account.

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
account_payment_line_form account_payment_mandate.account.payment.line.form account.payment.line field Inherits account_payment_batch_oca.account_payment_line_form
account_payment_line_tree account_payment_mandate.account.payment.line.list account.payment.line field Inherits account_payment_batch_oca.account_payment_line_tree
account_payment_method_form account_payment_mandate.account.payment.method.form account.payment.method field Inherits account_payment_base_oca.account_payment_method_form
account_payment_order_form account.payment.order field Inherits account_payment_batch_oca.account_payment_order_form
mandate_partner_bank_form mandate.res.partner.bank.form res.partner.bank xpath Inherits base.view_partner_bank_form
mandate_partner_bank_tree mandate.res.partner.bank.list res.partner.bank field Inherits base.view_partner_bank_tree
view_mandate_form view.mandate.form account.banking.mandate form New
view_mandate_search view.mandate.search account.banking.mandate search New
view_mandate_tree view.mandate.list account.banking.mandate list New
view_move_form add.mandate.on.account.move.form account.move field Inherits account_payment_base_oca.view_move_form
view_partner_property_form mandate.res.partner.form res.partner xpath Inherits account.view_partner_property_form
Models touched (7)

New fields (12)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • format Selection
    default='basic' required=True string='Mandate Format' tracking=20 args: [('basic', 'Basic Mandate')]
  • last_debit_date Date
    readonly=True string='Date of the Last Debit'
  • partner_bank_id Many2one → res.partner.bank
    check_company=True comodel_name='res.partner.bank' compute='_compute_partner_bank_id' domain="[('partner_id', '=', partner_id)]" index='btree' ondelete='restrict' precompute=True readonly=False store=True string='Bank Account' tracking=40
  • partner_id Many2one → res.partner
    comodel_name='res.partner' index='btree' ondelete='restrict' required=True string='Partner' tracking=35
  • payment_line_ids One2many → account.payment.line
    comodel_name='account.payment.line' inverse_name='mandate_id' string='Related Payment Lines'
  • payment_line_ids_count Integer
    compute='_compute_payment_line_ids_count'
  • scan Binary
    string='Scan of the Mandate'
  • signature_date Date
    string='Date of Signature' tracking=50
  • state Selection
    default='draft' help='Only valid mandates can be used in a payment line. A cancelled mandate is a mandate that has been cancelled by the customer.' string='Status' tracking=60 args: [('draft', 'Draft'), ('valid', 'Valid'), ('final', 'Final Debit'), ('expired', 'Expired'), ('cancel', 'Cancelled')]
  • type Selection
    default='recurrent' required=True string='Type of Mandate' tracking=30 args: [('recurrent', 'Recurrent'), ('oneoff', 'Single Use')]
  • unique_mandate_reference Char
    copy=False default=<expr> tracking=10
Public methods (7)
  • back2draft(self)
    Allows to set the mandate back to the draft state. This is for mandates cancelled by mistake.
  • cancel(self)
  • create(self, vals_list)
    @api.model_create_multi
  • final2valid(self)
    Should never happen. Only for user mistakes.
  • show_payment_lines(self)
  • valid2final(self)
  • validate(self)

New fields (2)
  • mandate_id Many2one → account.banking.mandate
    check_company=True compute='_compute_mandate_id' domain="[('partner_id', '=', commercial_partner_id), ('state', 'in', ('valid', 'final')), ('company_id', '=', company_id)]" ondelete='restrict' readonly=False store=True string='Direct Debit Mandate' args: 'account.banking.mandate'
  • mandate_required Boolean
    related='preferred_payment_method_line_id.payment_method_id.mandate_required'
Public methods (0)

No public methods.

New fields (2)
  • mandate_id Many2one → account.banking.mandate
    check_company=True comodel_name='account.banking.mandate' compute='_compute_mandate_id' domain="[('state', 'in', ('valid', 'final')), ('partner_id', '=', partner_id), ('company_id', '=', company_id)]" precompute=True readonly=False store=True string='Direct Debit Mandate'
  • mandate_required Boolean
    related='order_id.payment_method_id.mandate_required'
Public methods (0)

No public methods.

New fields (1)
  • mandate_required Boolean
    help='Activate this option if this payment method requires your customer to sign a direct debit mandate with your company.'
Public methods (0)

No public methods.

New fields (1)
  • mandate_required Boolean
    related='payment_method_id.mandate_required'
Public methods (0)

No public methods.

New fields (2)
  • mandate_count Integer
    compute='_compute_mandate_count' readonly=True string='Number of Mandates'
  • valid_mandate_id Many2one → account.banking.mandate
    comodel_name='account.banking.mandate' compute='_compute_valid_mandate_id' string='First Valid Mandate'
Public methods (0)

No public methods.

New fields (1)
  • mandate_ids One2many → account.banking.mandate
    comodel_name='account.banking.mandate' help='Banking mandates represent an authorization that the bank account owner gives to a company for a specific operation.' inverse_name='partner_bank_id' string='Direct Debit Mandates'
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_mandate
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYBanking addons
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Akretion, Therp B.V., Compassion CH
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Akretion, Therp B.V., Compassion CH
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_batch_oca
    - account_payment_base_oca
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 Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module adds a generic model for banking mandates. These mandates
can be specialized to fit any banking mandates (such as sepa or lsv).

A banking mandate is attached to a bank account and represents an
authorization that the bank account owner gives to a company for a
specific operation (such as direct debit). You can setup mandates from
the accounting menu or directly from a bank account.

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
account_payment_line_form account_payment_mandate.account.payment.line.form account.payment.line field Inherits account_payment_batch_oca.account_payment_line_form
account_payment_line_tree account_payment_mandate.account.payment.line.list account.payment.line field Inherits account_payment_batch_oca.account_payment_line_tree
account_payment_method_form account_payment_mandate.account.payment.method.form account.payment.method field Inherits account_payment_base_oca.account_payment_method_form
account_payment_order_form account.payment.order field Inherits account_payment_batch_oca.account_payment_order_form
mandate_partner_bank_form mandate.res.partner.bank.form res.partner.bank xpath Inherits base.view_partner_bank_form
mandate_partner_bank_tree mandate.res.partner.bank.list res.partner.bank field Inherits base.view_partner_bank_tree
partner_view_buttons mandate.res.partner.form res.partner xpath Inherits account.view_partner_property_form
view_mandate_form view.mandate.form account.banking.mandate form New
view_mandate_search view.mandate.search account.banking.mandate search New
view_mandate_tree view.mandate.list account.banking.mandate list New
view_move_form add.mandate.on.account.move.form account.move field Inherits account_payment_base_oca.view_move_form
Models touched (7)

New fields (12)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • format Selection
    default='basic' required=True string='Mandate Format' tracking=20 args: [('basic', 'Basic Mandate')]
  • last_debit_date Date
    readonly=True string='Date of the Last Debit'
  • partner_bank_id Many2one → res.partner.bank
    check_company=True comodel_name='res.partner.bank' compute='_compute_partner_bank_id' domain="[('partner_id', '=', partner_id)]" index='btree' ondelete='restrict' precompute=True readonly=False store=True string='Bank Account' tracking=40
  • partner_id Many2one → res.partner
    comodel_name='res.partner' index='btree' ondelete='restrict' required=True string='Partner' tracking=35
  • payment_line_ids One2many → account.payment.line
    comodel_name='account.payment.line' inverse_name='mandate_id' string='Related Payment Lines'
  • payment_line_ids_count Integer
    compute='_compute_payment_line_ids_count'
  • scan Binary
    string='Scan of the Mandate'
  • signature_date Date
    string='Date of Signature' tracking=50
  • state Selection
    default='draft' help='Only valid mandates can be used in a payment line. A cancelled mandate is a mandate that has been cancelled by the customer.' string='Status' tracking=60 args: [('draft', 'Draft'), ('valid', 'Valid'), ('final', 'Final Debit'), ('expired', 'Expired'), ('cancel', 'Cancelled')]
  • type Selection
    default='recurrent' required=True string='Type of Mandate' tracking=30 args: [('recurrent', 'Recurrent'), ('oneoff', 'Single Use')]
  • unique_mandate_reference Char
    copy=False default=<expr> tracking=10
Public methods (7)
  • back2draft(self)
    Allows to set the mandate back to the draft state. This is for mandates cancelled by mistake.
  • cancel(self)
  • create(self, vals_list)
    @api.model_create_multi
  • final2valid(self)
    Should never happen. Only for user mistakes.
  • show_payment_lines(self)
  • valid2final(self)
  • validate(self)

New fields (2)
  • mandate_id Many2one → account.banking.mandate
    check_company=True compute='_compute_mandate_id' domain="[('partner_id', '=', commercial_partner_id), ('state', 'in', ('valid', 'final')), ('company_id', '=', company_id)]" ondelete='restrict' readonly=False store=True string='Direct Debit Mandate' args: 'account.banking.mandate'
  • mandate_required Boolean
    related='preferred_payment_method_line_id.payment_method_id.mandate_required'
Public methods (0)

No public methods.

New fields (2)
  • mandate_id Many2one → account.banking.mandate
    check_company=True comodel_name='account.banking.mandate' compute='_compute_mandate_id' domain="[('state', 'in', ('valid', 'final')), ('partner_id', '=', partner_id), ('company_id', '=', company_id)]" precompute=True readonly=False store=True string='Direct Debit Mandate'
  • mandate_required Boolean
    related='order_id.payment_method_id.mandate_required'
Public methods (0)

No public methods.

New fields (1)
  • mandate_required Boolean
    help='Activate this option if this payment method requires your customer to sign a direct debit mandate with your company.'
Public methods (0)

No public methods.

New fields (1)
  • mandate_required Boolean
    related='payment_method_id.mandate_required'
Public methods (0)

No public methods.

New fields (2)
  • mandate_count Integer
    compute='_compute_mandate_count' readonly=True string='Number of Mandates'
  • valid_mandate_id Many2one → account.banking.mandate
    comodel_name='account.banking.mandate' compute='_compute_valid_mandate_id' string='First Valid Mandate'
Public methods (0)

No public methods.

New fields (1)
  • mandate_ids One2many → account.banking.mandate
    comodel_name='account.banking.mandate' help='Banking mandates represent an authorization that the bank account owner gives to a company for a specific operation.' inverse_name='partner_bank_id' string='Direct Debit Mandates'
Public methods (0)

No public methods.