Withholding Tax on Payment

l10n_account_withholding_tax
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/l10n_account_withholding_tax
VERSION
VERSION 1.0
CATEGORY
CATEGORYAccounting/Localizations
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSOdoo Translation Bot, william-andre, Gauthier Wala (gawa), Dylan Kiss (dyki), Nicolas Viseur (vin), Antoine Dupuis, Smit Patel, ppat-odoo, Krzysztof Magusiak (krma), Laurent Smet (LAS), Manav Shah
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows to register withholding taxes during the payment of an invoice or bill.

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
report_payment_receipt_document report_payment_receipt_document ir.ui.view qweb Inherits account.report_payment_receipt_document
res_config_settings_form res.config.settings.form res.config.settings block Inherits account.res_config_settings_view_form
view_account_payment_form account.payment.form account.payment field Inherits account.view_account_payment_form
view_account_payment_register_form account.payment.register.form account.payment.register group Inherits account.view_account_payment_register_form
view_tax_form account.tax.form account.tax xpath Inherits account.view_tax_form
Models touched (9)

New fields (6)
  • display_withholding Boolean
    compute='_compute_display_withholding'
  • outstanding_account_id Many2one
    readonly=False
  • should_withhold_tax Boolean
    compute='_compute_should_withhold_tax' copy=False help='Withhold tax amounts from the payment amount.' readonly=False store=True string='Withhold Tax Amounts'
  • withholding_hide_tax_base_account Boolean
    compute='_compute_withholding_hide_tax_base_account'
  • withholding_line_ids One2many → account.payment.withholding.line
    comodel_name='account.payment.withholding.line' inverse_name='payment_id' string='Withholding Lines'
  • withholding_payment_account_id Many2one
    related='payment_method_line_id.payment_account_id'
Public methods (0)

No public methods.

New fields (8)
  • display_withholding Boolean
    compute='_compute_display_withholding'
  • should_withhold_tax Boolean
    compute='_compute_should_withhold_tax' copy=False readonly=False store=True string='Withhold Tax Amounts'
  • withholding_default_account_id Many2one
    related='journal_id.default_account_id'
  • withholding_hide_tax_base_account Boolean
    compute='_compute_withholding_hide_tax_base_account'
  • withholding_line_ids One2many → account.payment.register.withholding.line
    comodel_name='account.payment.register.withholding.line' compute='_compute_withholding_line_ids' inverse_name='payment_register_id' readonly=False store=True string='Withholding Lines'
  • withholding_net_amount Monetary
    compute='_compute_withholding_net_amount' help='Net amount after deducting the withholding lines' store=True string='Net Amount'
  • withholding_outstanding_account_id Many2one → account.account
    check_company=True comodel_name='account.account' compute='_compute_withholding_outstanding_account_id' copy=False domain="['|', ('account_type', 'in', ('asset_current', 'liability_current')), ('id', '=', withholding_default_account_id)]" readonly=False store=True string='Outstanding Account'
  • withholding_payment_account_id Many2one
    related='payment_method_line_id.payment_account_id'
Public methods (0)

No public methods.

New fields (1)
  • payment_register_id Many2one → account.payment.register
    comodel_name='account.payment.register' ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (1)
  • payment_id Many2one → account.payment
    comodel_name='account.payment' ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (2)
  • is_withholding_tax_on_payment Boolean
    help='If enabled, this tax will not affect your accounts until the registration of payments.' string='Withhold On Payment'
  • withholding_sequence_id Many2one → ir.sequence
    check_company=True comodel_name='ir.sequence' copy=False help='This sequence will be used to generate default numbers on payment withholding lines.' string='Withholding Sequence'
Public methods (0)

No public methods.

New fields (24)
  • account_id Many2one → account.account
    comodel_name='account.account' compute='_compute_account_id' precompute=True readonly=False required=True store=True
  • amount Monetary
    compute='_compute_amount' currency_field='comodel_currency_id' readonly=False store=True string='Withholding amount'
  • base_amount Monetary
    compute='_compute_base_amount' currency_field='comodel_currency_id' readonly=False store=True string='Withholding base'
  • comodel_company_currency_id Many2one
    related='company_id.currency_id'
  • comodel_currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_comodel_currency_id' required=True
  • comodel_date Date
    compute='_compute_comodel_date'
  • comodel_payment_type Selection
    compute='_compute_comodel_payment_type' selection=[('outbound', 'Send Money'), ('inbound', 'Receive Money')]
  • comodel_percentage_paid_factor Float
    compute='_compute_comodel_percentage_paid_factor'
  • company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_company_id' precompute=True required=True store=True
  • name Char
    string='Sequence Number'
  • original_base_amount Monetary
    compute='_compute_original_amounts' currency_field='comodel_currency_id'
  • original_tax_amount Monetary
    compute='_compute_original_amounts' currency_field='comodel_currency_id'
  • placeholder_type Selection
    compute='_compute_placeholder_type' precompute=True readonly=False required=True selection=[('given_by_sequence', 'Given By the Sequence'), ('given_by_name', 'Given By the Name'), ('not_defined', 'Not defined')] store=True
  • placeholder_value Char
    help='Populated by the comodel during edition of the line.'
  • previous_placeholder_type Selection
    compute='_compute_placeholder_type' precompute=True readonly=False selection=[('given_by_sequence', 'Given By the Sequence'), ('given_by_name', 'Given By the Name'), ('not_defined', 'Not defined')] store=True
  • source_base_amount Monetary
    currency_field='comodel_company_currency_id'
  • source_base_amount_currency Monetary
    currency_field='source_currency_id'
  • source_currency_id Many2one → res.currency
    comodel_name='res.currency'
  • source_tax_amount Monetary
    currency_field='comodel_company_currency_id'
  • source_tax_amount_currency Monetary
    currency_field='source_currency_id'
  • source_tax_id Many2one → account.tax
    comodel_name='account.tax'
  • tax_id Many2one → account.tax
    check_company=True comodel_name='account.tax' domain="[('type_tax_use', '=', type_tax_use), ('is_withholding_tax_on_payment', '=', True)]" required=True
  • type_tax_use Char
    compute='_compute_type_tax_use'
  • withholding_sequence_id Many2one
    related='tax_id.withholding_sequence_id'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • withholding_tax_base_account_id Many2one → account.account
    comodel_name='account.account' help='This account will be set on withholding tax base lines.' string='Withholding Tax Base'
Public methods (0)

No public methods.

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

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/l10n_account_withholding_tax
VERSION
VERSION 1.0
CATEGORY
CATEGORYAccounting/Localizations
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Dylan Kiss (dyki), Nicolas Viseur (vin), Antoine Dupuis, ppat-odoo, Manav Shah
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows to register withholding taxes during the payment of an invoice or bill.

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
report_payment_receipt_document report_payment_receipt_document ir.ui.view qweb Inherits account.report_payment_receipt_document
res_config_settings_form res.config.settings.form res.config.settings block Inherits account.res_config_settings_view_form
view_account_payment_form account.payment.form account.payment field Inherits account.view_account_payment_form
view_account_payment_register_form account.payment.register.form account.payment.register group Inherits account.view_account_payment_register_form
view_tax_form account.tax.form account.tax xpath Inherits account.view_tax_form
Models touched (9)

New fields (6)
  • display_withholding Boolean
    compute='_compute_display_withholding'
  • outstanding_account_id Many2one
    readonly=False
  • should_withhold_tax Boolean
    compute='_compute_should_withhold_tax' copy=False help='Withhold tax amounts from the payment amount.' readonly=False store=True string='Withhold Tax Amounts'
  • withholding_hide_tax_base_account Boolean
    compute='_compute_withholding_hide_tax_base_account'
  • withholding_line_ids One2many → account.payment.withholding.line
    comodel_name='account.payment.withholding.line' inverse_name='payment_id' string='Withholding Lines'
  • withholding_payment_account_id Many2one
    related='payment_method_line_id.payment_account_id'
Public methods (0)

No public methods.

New fields (8)
  • display_withholding Boolean
    compute='_compute_display_withholding'
  • should_withhold_tax Boolean
    compute='_compute_should_withhold_tax' copy=False readonly=False store=True string='Withhold Tax Amounts'
  • withholding_default_account_id Many2one
    related='journal_id.default_account_id'
  • withholding_hide_tax_base_account Boolean
    compute='_compute_withholding_hide_tax_base_account'
  • withholding_line_ids One2many → account.payment.register.withholding.line
    comodel_name='account.payment.register.withholding.line' compute='_compute_withholding_line_ids' inverse_name='payment_register_id' readonly=False store=True string='Withholding Lines'
  • withholding_net_amount Monetary
    compute='_compute_withholding_net_amount' help='Net amount after deducting the withholding lines' store=True string='Net Amount'
  • withholding_outstanding_account_id Many2one → account.account
    check_company=True comodel_name='account.account' compute='_compute_withholding_outstanding_account_id' copy=False domain="['|', ('account_type', 'in', ('asset_current', 'liability_current')), ('id', '=', withholding_default_account_id)]" readonly=False store=True string='Outstanding Account'
  • withholding_payment_account_id Many2one
    related='payment_method_line_id.payment_account_id'
Public methods (0)

No public methods.

New fields (1)
  • payment_register_id Many2one → account.payment.register
    comodel_name='account.payment.register' ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (1)
  • payment_id Many2one → account.payment
    comodel_name='account.payment' ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (2)
  • is_withholding_tax_on_payment Boolean
    help='If enabled, this tax will not affect your accounts until the registration of payments.' string='Withhold On Payment'
  • withholding_sequence_id Many2one → ir.sequence
    check_company=True comodel_name='ir.sequence' copy=False help='This sequence will be used to generate default numbers on payment withholding lines.' string='Withholding Sequence'
Public methods (0)

No public methods.

New fields (24)
  • account_id Many2one → account.account
    comodel_name='account.account' compute='_compute_account_id' precompute=True readonly=False required=True store=True
  • amount Monetary
    compute='_compute_amount' currency_field='comodel_currency_id' readonly=False store=True string='Withholding amount'
  • base_amount Monetary
    compute='_compute_base_amount' currency_field='comodel_currency_id' readonly=False store=True string='Withholding base'
  • comodel_company_currency_id Many2one
    related='company_id.currency_id'
  • comodel_currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_comodel_currency_id' required=True
  • comodel_date Date
    compute='_compute_comodel_date'
  • comodel_payment_type Selection
    compute='_compute_comodel_payment_type' selection=[('outbound', 'Send Money'), ('inbound', 'Receive Money')]
  • comodel_percentage_paid_factor Float
    compute='_compute_comodel_percentage_paid_factor'
  • company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_company_id' precompute=True required=True store=True
  • name Char
    string='Sequence Number'
  • original_base_amount Monetary
    compute='_compute_original_amounts' currency_field='comodel_currency_id'
  • original_tax_amount Monetary
    compute='_compute_original_amounts' currency_field='comodel_currency_id'
  • placeholder_type Selection
    compute='_compute_placeholder_type' precompute=True readonly=False required=True selection=[('given_by_sequence', 'Given By the Sequence'), ('given_by_name', 'Given By the Name'), ('not_defined', 'Not defined')] store=True
  • placeholder_value Char
    help='Populated by the comodel during edition of the line.'
  • previous_placeholder_type Selection
    compute='_compute_placeholder_type' precompute=True readonly=False selection=[('given_by_sequence', 'Given By the Sequence'), ('given_by_name', 'Given By the Name'), ('not_defined', 'Not defined')] store=True
  • source_base_amount Monetary
    currency_field='comodel_company_currency_id'
  • source_base_amount_currency Monetary
    currency_field='source_currency_id'
  • source_currency_id Many2one → res.currency
    comodel_name='res.currency'
  • source_tax_amount Monetary
    currency_field='comodel_company_currency_id'
  • source_tax_amount_currency Monetary
    currency_field='source_currency_id'
  • source_tax_id Many2one → account.tax
    comodel_name='account.tax'
  • tax_id Many2one → account.tax
    check_company=True comodel_name='account.tax' domain="[('type_tax_use', '=', type_tax_use), ('is_withholding_tax_on_payment', '=', True)]" required=True
  • type_tax_use Char
    compute='_compute_type_tax_use'
  • withholding_sequence_id Many2one
    related='tax_id.withholding_sequence_id'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • withholding_tax_base_account_id Many2one → account.account
    comodel_name='account.account' help='This account will be set on withholding tax base lines.' string='Withholding Tax Base'
Public methods (0)

No public methods.

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

No public methods.