Odoo 19.0 Community · Persistent

account.tax: fields, relations and API

The account.tax model ("Tax") is a persistent model declared by the Invoicing module, then extended by 6 other modules. It exposes 66 fields, 47 of them declared directly on the model; 23 fields from other models point to it. Below you will find every field with its technical name, type, label and relations, followed by an Odoo 19 JSON-2 API call.

Model identity

Technical name
account.tax
Label
Tax
Type
Persistent (models.Model)
SQL table
account_tax
Origin module
Invoicing (account)
Extended by
account_edi_ubl_cii, account_tax_python, hr_expense, point_of_sale, purchase, pos_account_tax_python
Default order (_order)
sequence,id
Inherits from (mixins)
mail.threadpos.load.mixin

Model fields

47 own fields, 13 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.

66 of 66 fields shown

Technical nameLabelTypeDetails
account_move_line_idsAccount Move Linemany2many
read-only
account_reconcile_model_line_idsAccount Reconcile Model Linemany2many
read-only
activeActive

Set active to false to hide the tax without removing it.

boolean
amountAmountfloat
required
amount_typeTax Computation

- Group of Taxes: The tax is a set of sub taxes. - Fixed: The tax amount stays the same whatever the price. - Percentage: The tax amount is a % of the price: e.g 100 * (1 + 10%) = 110 (not price included) e.g 110 / (1 + 10%) = 100 (price included) - Percentage Tax Included: The tax amount is a division of the price: e.g 180 / (1 - 10%) = 200 (not price included) e.g 200 * (1 - 10%) = 180 (price included)

selection
required

Values: group (Group of Taxes), fixed (Fixed), percent (Percentage), division (Percentage Tax Included)

analyticInclude in Analytic Cost

If set, the amount computed by this tax will be assigned to the same analytic account as the invoice line (if any)

boolean
cash_basis_transition_account_idCash Basis Transition Account

Account used to transition the tax amount for cash basis taxes. It will contain the tax amount as long as the original invoice has not been reconciled ; at reconciliation, this amount cancelled on this account and put on the regular tax account.

many2one
children_tax_idsChildren Taxesmany2many
company_country_codeFiscal Country Code of the Companychar

related: company_id.account_fiscal_country_id.code

company_idCompanymany2one
requiredread-only
company_price_includeCompany Price Includeselection

related: company_id.account_price_include

country_codeCountry Codechar
read-only

related: country_id.code

country_idCountry

The country for which this tax is applicable.

many2one
requiredcomputed, stored
descriptionDescriptionhtml
display_alternative_taxes_fieldDisplay Alternative Taxes Fieldboolean
computed
fiscal_position_idsFiscal Positionmany2many
formulaFormula

Compute the amount of the tax. :param base: float, actual amount on which the tax is applied :param price_unit: float :param quantity: float :param product: A object representing the product

text

added by Define Taxes as Python Code (account_tax_python)

formula_decoded_infoFormula Decoded Infojson
computed

added by Define Taxes as Python Code (account_tax_python)

has_negative_factorHas Negative Factorboolean
computed
hide_tax_exigibilityHide Use Cash Basis Optionboolean
read-only

related: company_id.tax_exigibility

hr_expense_idsHr Expensemany2many
read-only

added by Expenses (hr_expense)

include_base_amountAffect Base of Subsequent Taxes

If set, taxes with a higher sequence than this one will be affected by it, provided they accept it.

boolean
invoice_labelLabel on Invoiceschar
translatable
invoice_repartition_line_idsDistribution for Invoices

Distribution when the tax is used on an invoice

one2many
computed, stored

inverse: tax_id

is_base_affectedBase Affected by Previous Taxes

If set, taxes with a lower sequence might affect this one, provided they try to do it.

boolean
is_domesticIs Domesticboolean
computed, stored
is_usedTax usedboolean
computed
nameTax Namechar
requiredtranslatable
original_tax_idsReplaces

List of taxes to replace when applying any of the stipulated fiscal positions.

many2many
pos_order_line_idsPos Order Linemany2many
read-only

added by Point of Sale (point_of_sale)

price_includePrice Include

Determines whether the price you use on the product and invoices includes this tax.

boolean
computed
price_include_overrideIncluded in Price

Overrides the Company's default on whether the price you use on the product and invoices includes this tax.

selection

Values: tax_included (Tax Included), tax_excluded (Tax Excluded)

purchase_order_line_idsPurchase Order Linemany2many
read-only

added by Purchase (purchase)

refund_repartition_line_idsDistribution for Refund Invoices

Distribution when the tax is used on a refund

one2many
computed, stored

inverse: tax_id

repartition_line_idsDistributionone2many

inverse: tax_id

repartition_lines_strRepartition Lineschar
computed
replacing_tax_idsReplaced bymany2many
read-only
sequenceSequence

The sequence field is used to define order in which the tax lines are applied.

integer
required
tax_exigibilityTax Exigibility

Based on Invoice: the tax is due as soon as the invoice is validated. Based on Payment: the tax is due as soon as the payment of the invoice is received.

selection

Values: on_invoice (Based on Invoice), on_payment (Based on Payment)

tax_group_idTax Groupmany2one
requiredcomputed, stored
tax_labelTax Labelchar
computed
tax_scopeTax Scopeselection

Values: service (Services), consu (Goods)

type_tax_useTax Type

Determines where the tax is selectable. Note: 'None' means a tax can't be used by itself, however it can still be used in a group. 'adjustment' is used to perform tax adjustment.

selection
required

Values: sale (Sales), purchase (Purchases), none (None)

ubl_cii_requires_exemption_reasonUbl Cii Requires Exemption Reasonboolean
computed

added by Import/Export electronic invoices with UBL/CII (account_edi_ubl_cii)

ubl_cii_tax_category_codeTax Category Code

The VAT category code used for electronic invoicing purposes.

selection

Values: AE (AE - Vat Reverse Charge), E (E - Exempt from Tax), S (S - Standard rate), Z (Z - Zero rated goods), G (G - Free export item, VAT not charged), O (O - Services outside scope of tax), K (K - VAT exempt for EEA intra-community supply of goods and services), L (L - Canary Islands general indirect tax), M (M - Tax for production, services and importation in Ceuta and Melilla), B (B - Transferred (VAT), In Italy)

added by Import/Export electronic invoices with UBL/CII (account_edi_ubl_cii)

ubl_cii_tax_exemption_reason_codeTax Exemption Reason Code

The reason why the amount is exempted from VAT or why no VAT is being charged, used for electronic invoicing purposes.

selection

Values: VATEX-EU-79-C (VATEX-EU-79-C - Exempt based on article 79, point c of Council Directive 2006/112/EC), VATEX-EU-132 (VATEX-EU-132 - Exempt based on article 132 of Council Directive 2006/112/EC), VATEX-EU-132-1A (VATEX-EU-132-1A - Exempt based on article 132, section 1 (a) of Council Directive 2006/112/EC), VATEX-EU-132-1B (VATEX-EU-132-1B - Exempt based on article 132, section 1 (b) of Council Directive 2006/112/EC), VATEX-EU-132-1C (VATEX-EU-132-1C - Exempt based on article 132, section 1 (c) of Council Directive 2006/112/EC), VATEX-EU-132-1D (VATEX-EU-132-1D - Exempt based on article 132, section 1 (d) of Council Directive 2006/112/EC), VATEX-EU-132-1E (VATEX-EU-132-1E - Exempt based on article 132, section 1 (e) of Council Directive 2006/112/EC), VATEX-EU-132-1F (VATEX-EU-132-1F - Exempt based on article 132, section 1 (f) of Council Directive 2006/112/EC), VATEX-EU-132-1G (VATEX-EU-132-1G - Exempt based on article 132, section 1 (g) of Council Directive 2006/112/EC), VATEX-EU-132-1H (VATEX-EU-132-1H - Exempt based on article 132, section 1 (h) of Council Directive 2006/112/EC), VATEX-EU-132-1I (VATEX-EU-132-1I - Exempt based on article 132, section 1 (i) of Council Directive 2006/112/EC), VATEX-EU-132-1J (VATEX-EU-132-1J - Exempt based on article 132, section 1 (j) of Council Directive 2006/112/EC)…

added by Import/Export electronic invoices with UBL/CII (account_edi_ubl_cii)

has_messageHas Messageboolean
computed

inherited from mail.thread

message_attachment_countAttachment Countinteger
computed

inherited from mail.thread

message_follower_idsFollowersone2many

inverse: res_id

inherited from mail.thread

message_has_errorMessage Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_has_error_counterNumber of errors

Number of messages with delivery error

integer
computed

inherited from mail.thread

message_has_sms_errorSMS Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_idsMessagesone2many

inverse: res_id

inherited from mail.thread

message_is_followerIs Followerboolean
computed

inherited from mail.thread

message_needactionAction Needed

If checked, new messages require your attention.

boolean
computed

inherited from mail.thread

message_needaction_counterNumber of Actions

Number of messages requiring action

integer
computed

inherited from mail.thread

message_partner_idsFollowers (Partners)many2many
computed

inherited from mail.thread

rating_idsRatingsone2many

inverse: res_id

inherited from mail.thread

website_message_idsWebsite Messages

Website communication history

one2many

inverse: res_id

inherited from mail.thread

create_dateCreated ondatetime
read-onlyautomatic
create_uidCreated bymany2one
read-onlyautomatic
display_nameDisplay Namechar
read-onlycomputedautomatic
idIDinteger
read-onlyautomatic
write_dateLast Updated ondatetime
read-onlyautomatic
write_uidLast Updated bymany2one
read-onlyautomatic

Relations

Models linked from this model

Fields of other models pointing here

Reading this model through the API

Odoo 19 JSON-2 API call reading the first five records with real fields of the model. Replace the instance, database and API key with your own.

curl
curl -X POST "https://your-instance.odoo.com/json/2/account.tax/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["name","amount","amount_type","company_id","country_id"],"limit":5}'
Python (requests)
import requests

BASE_URL = "https://your-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "your-db"}

res = requests.post(
    f"{BASE_URL}/account.tax/search_read",
    headers=headers,
    json={"domain": [], "fields": ["name","amount","amount_type","company_id","country_id"], "limit": 5},
)
res.raise_for_status()
print(res.json())
  • External API access requires Odoo's Custom plan.
  • XML-RPC and JSON-RPC will be removed in Odoo 22 (fall 2028): use JSON-2.
  • The access rights and record rules of the key's user apply.

Cite this tool

Writing a tutorial, internal documentation or a forum answer? Copy this link to send your readers to the up-to-date reference.

<a href="https://aidoo.ai/en/outils/explorateur-modeles-odoo/account-tax">account.tax (Odoo 19.0)</a>

Sources

Data verified on September 23, 2026 · Odoo 19.0 Community

Have an Odoo project, or want to put your ERP to work with AI? Let's talk

Implementation, custom module development, connecting Claude or ChatGPT to your data: tell us about your context and we will reply within 24 business hours.