VAT change in Odoo
A short How-to regarding the change of value-added tax rates in Odoo

The VAT rate decrease has been announced. Currently, are probably a lot of newsletters and other information on how to implement this change in Odoo. First of all, however, we would like to point out that it is difficult, if not impossible, to find a “one size fits all” solution. After all, the type of adaption very much depends on the individual set up. Connections and links have to be considered, price calculation, and, of course, the effect on online shops or POS systems.

We are currently reviewing all our set-ups to discuss the ideal implementation and the necessary steps within the relevant parameters. This clearly shows that there is no such thing as THE standard solution or THE best way for this task. Nevertheless, we can distinguish two basic approaches to tackling this requirement that are feasible almost independently of the individual Odoo versions.

Step 1, Preparation:

First of all, the charts of accounts need to be extended. For a Datev Export it is essential to create the same accounts as in Datev SKR03 or SKR04. Unfortunately, our first Google search did not yield any tangible results, only a catalog of measures for individual financial sectors:

In other words, this initial step requires coordination with your tax consultant.

You should at least discuss the creation of tax accounts and one corresponding revenue account each. I recommend duplicating an existing revenue and tax account as soon as you know the account number and name.

Step 2, Application of tax rages:

The next step is to duplicate my 19% tax rates for sales and purchase, as well as the two 7% rates. Remember to adjust not only the labels and the tax rate, but to configure the account assignment created in the first step as well.

To be on the safe side, you can now re-open the tax accounts and file each of the newly created tax rates as ”Default Taxes.“ I do not think this is necessary, however.

In turn, the ”Tax Grid“ may remain, no matter how you call it, since the new tax rate should be listed in the same paragraph in your Tax Report.

Step 3, Version 1 & Version 2:

As indicated already, there are roughlytwo possible solutions from a technical point of view. Solution 1 works the same way in any Odoo version. Solution 2 is different for each version, and users of newer Odoo versions are clearly the winners. But there is also a serious disadvantage to this solution.

Solution 1 – Mass update for products

The first solution is, of course, an update for all products. Accordingly, I need to export all products as “import-compatible export.“ To be able to do that, I need “Customer Taxes“ and “Vendor Taxes” plus all other fields that my support orientation. In my very simplified case, this would look like this:

Once I have done this, I will update my values in Excel (see text highlighted in purple):


In my case, the sales price is a net price, i.e., my subtotal in the offer/order/invoice line does not change; only the total will be reduced. If this is requested, there is no need to adjust the sales price.

If the tax rate indicates that the price already includes the statutory tax, you need to be careful. In this case, you also need to adjust the sales prices, if you want to add the reduction. And you need to remember that you have to re-label your products accordingly.

However, this blog only discusses technical solutions; everything else needs to be decided or considered on a case by case basis.

For the last step, the re-import, we will upload the excel list. All fields that do not have updated data compared to Odoo need to be removed from the import (see my “Don‘t import“ below). The result might look like this:

For the reverse change, you should follow the same process back to the old (or higher) percentages.

Solution 2) Tax allocation

Here, we will not touch on products at all but proceed via Fiscal Position or tax allocation.

First of all, we need to review whether there is a Fiscal Position / Tax Allocation for ”domestic Business Partner.“

If the answer is yes,

I will enter my four current tax rates (19% Sales Taxes, 19% Purchase Taxes, 7% Sales Taxes, 7% Purchase Taxes) in the tab “Tax mapping“ on the left. On the right (under “Tax to Apply“), I need to add the corresponding new tax rate.

The tab “Account Mapping“ may remain empty in this case, since we will continue to use revenue or expense accounts for the product groups or products in their existing form for the initial account assignment.

However, we now have to check, whether there are partners where we have forgotten to assign Fiscal Positions. Consequently, I will access the address book, filter for all companies, customers, suppliers, etc., without a Fiscal Position. The result will look something like this:

Now, we have to export this, again using ”Import compatible export.“ For safety reasons, I would export the country in any case. The field selection would look like this:

In the “property_account_position_id/name“ column, I now enter the value “domestic Business Partner“:

Unfortunately, the system will not automatically recognize the Fiscal Position during re-import, but you can assign it manually, using the selection list:

If the answer is no)

This frequently happens in older Odoo versions, because tax allocations are used to adjust tax rates or account assignments for countries or regions. In the case of a national business partner, this is unnecessary. Still, the tax rates may be taken directly from the product or the revenue, respectively expense accounts, from the material group for the initial account assignment. The tax allocation to the customer will remain empty.

In this case, you need to create a tax allocation „domestic Business Partner“ as in the previous paragraph and update the appropriate partner data records.

The big advantage

The advantage of this approach is its convenience and simplicity, given the announced reverse adjustment. You just empty the tax allocations, and everything will back to normal.

The big disadvantage

However, this approach also has a significant disadvantage: only the tax rates are “adjusted,“ the sales prices will remain unaffected.

In other words, this version is not feasible if sales prices have to be adjusted, and if external systems are connected to Odoo or products are synchronized. If this is the case, the only option left is Solution 1, which has to be adjusted according to the overall situation.

Step 4: Journals

Both the “Default Debit Account“ and the “Default Credit Account“ have to be set to the new revenue account for the standard tax rate in all sales and purchasing ledgers.

This is necessary only, however, if invoices or corrections of invoices (incoming or outgoing) are entered without a product reference. In this case, Odoo will pre-assign via the ledger’s standard setting, eliminating at least one potential source of error.

Step 5: All NON-domestic Fiscal Positions / Tax Allocations

The 16% and, respectively, 5% tax rates should not suddenly appear on quotations/orders or invoices for EU or international deliveries. To prevent this, all Fiscal Positions need to be extended with a tax mapping. 

For this purpose, I simply use a filter “Tax Mapping is set“ (see screenshot):

Now, I can click through the records one by one and add the new tax rates under the existing mappings, which will look like this:

Purchase prices

Just suppose that everything is pretty straightforward, and you have now reached the point where the purchase prices also have to be adjusted in your system.

These are the options you will have available in various combinations:

1) Fiscal Position

A Fiscal Position may also be adjusted at the vendor level. Alternatively, the changes made by adjusting the “domestic business partner” assignment will take effect. However, this will only affect the tax rates in the requests for quotations, purchase orders and purchase invoices, and not the prices.

2) Product-related purchase prices

Should you get into a situation where you need to adjust purchasing prices, all Odoo versions <13 have the option “Vendor Pricelists“ in their configuration of the Purchase Module. I fit is activated, there is an additional item on the main menu “Purchase,“ where you will find a list of all vendors and products as well as their scaled and purchase prices. The list may also be exported, and via an Excel file you can adjust and re-import the prices.

In Odoo 13, this list is already integrated, and may be found under the tab “Configuration” in your menu.

3) Master agreements

For master agreements, things are more complicated. I do not want to discuss whether this may happen in real life, just to offer a technical solution if you come across that issue.

Master agreements may, of course, also be exported, updated, and re-imported in Excel. Odoo will file the contract according to the data in the header and list the line positions underneath. Please take care not to change the resulting Excel list under any circumstances. Otherwise, you will create a “new contract database”!

The Excel list will look something like this, with the highlighted area symbolizing exactly one contract:

Date of Implementation

When would be the best time to implement these changes? – It is getting more and more difficult to find a standard answer to this question because there are various depending features. If there are connected systems, you also need to factor in the time for synchronization.

Preparation is probably the most critical issue. Mass updates in Odoo take their time, especially when products need to be revised as well. Here, Odoo 13 users have a slight advantage since the internal processing time has been significantly improved by changing the ORM model, i.e., the internal interface to the database. In the earlier versions, the processing time may have increased exponentially in relation to the number of transactions! It is, therefore, helpful to split the Excel files and upload them in several parts when dealing with large amounts of data. This will save a lot of time!

f you dare to access the database, you may, of course, prepare and execute relevant SQL scripts. Although this may be incomparably faster, it also involves higher risks, and requires access rights to the database. Due to Odoo’s excellent rights system this should not be standard.

Business queries and questions on usage

What will happen with ongoing processes, such as partial deliveries, deliveries of previously outstanding products, etc.? How do I adjust depreciation and fixed assets? These and many other questions cannot be discussed in this blog.

Our experienced consultants will be happy to help you with your specific questions. Alternatively, your tax consultant will also be available for advice.

In this blog, we only wanted to provide some technical suggestions for implementing the VAT change. They are, of course, somewhat simplified and presented solely based on Odoo’s demo data. For further questions, please contact your Odoo Partner or us.

18 June, 2020
share article
Sign in to leave a comment
A note on Accounting in Odoo 13