Do you sell to business customers within the EU that have a valid VAT number? Then you invoice 0% VAT as an intra-Community supply (ICS). Take a machine builder in Eindhoven supplying a German GmbH: no 21% on the invoice, but 0% with the VAT reverse-charged. Odoo handles this automatically via fiscal positions — provided you set them up correctly. Here is how to go about it.
Fiscale posities activeren
Go to Accounting → Configuration → Fiscal Positions. A standard Dutch Odoo installation already contains predefined positions for EU intra-Community and export outside the EU. A fiscal position is nothing more than a mapping table: “replace 21% VAT with 0% intra-Community supply”, including the right ledger accounts. Usually you only need to check them, not build them yourself.
Automatische detectie
Enable Detect Automatically for each fiscal position and configure the countries and the VAT number requirement. When an order is created, Odoo then automatically checks whether the customer is in the EU and has a VAT number, and applies the right position. For 0% VAT, three conditions must be met:
- The customer's country is an EU member state, but not your own country.
- There is a valid VAT number on the customer record (enable the VIES check under Accounting → Settings so Odoo validates it for you).
- The fiscal position maps your standard rate to the 0% intra-Community supply rate.
Manually per customer
Automatic detection not working, or do you want to record it explicitly? Open the customer record, Sales & Purchase tab, Fiscal Position field. Choose “Intra-Community Supply”, for example. All future orders and invoices for this customer will then automatically use 0% VAT — even if the order is created by a colleague who has never heard of the whole intra-Community story.
Blank customer = standard VAT
For a new customer without a fiscal position, Odoo charges the standard rate (21% in the Netherlands). That is deliberate and correct: better to invoice 21% and credit it afterwards than to wrongly charge 0%. If, during an audit, you cannot prove that the goods crossed the border and that the VAT number was valid, you will still have to pay that 21% — out of your own pocket.
Don't forget the EC Sales List
If you make EU supplies, you are required to file a periodic EC Sales List (ICP). Odoo generates this report under Accounting → Reporting → EC Sales Report, neatly grouped by your customers' VAT numbers.
Finally: a practical tip
Check every quarter whether the VAT numbers of your EU customers are still valid — a customer that changes legal form gets a new number, and suddenly your 0% invoice is no longer correct. With the VIES check in Odoo that is a matter of minutes. Not sure whether your fiscal positions are set up correctly? Contact DAADit Group — we will gladly go through your VAT settings with you.
Questions about your Odoo implementation? Start the free Business Scan.
Start the Business Scan →Do you sell to business customers within the EU that have a valid VAT number? Then you invoice 0% VAT as an intra-community supply. Think of a machine builder in Eindhoven delivering to a German GmbH: no 21% on the invoice, but 0% with the VAT reverse-charged. Odoo handles this automatically through fiscal positions — provided you set them up correctly. Here is how.
Activating fiscal positions
Go to Accounting → Configuration → Fiscal Positions. A standard Dutch Odoo installation already contains predefined positions for EU intra-community and export outside the EU. A fiscal position is essentially a translation table: “replace 21% VAT with 0% ICS”, including the correct ledger accounts. Usually you only need to verify them, not build them yourself.
Automatic detection
Enable Detect Automatically per fiscal position and configure the countries and the VAT number requirement. When an order is created, Odoo then automatically checks whether the customer is in the EU with a VAT number and applies the right position. Three things must be in place for 0% VAT:
- The customer's country is an EU country, but not your own.
- A valid VAT number is on the customer record (enable the VIES check in Accounting → Settings so Odoo validates it for you).
- The fiscal position maps your standard rate to the 0% intra-community tax.
Manually per customer
Automatic detection not working, or do you prefer to make it explicit? Open the customer record, Sales & Purchase tab, Fiscal Position field. Choose “Intra-Community supply”, for example. All future orders and invoices for this customer then use 0% VAT automatically — even when the order is created by a colleague who has never heard of intra-community supplies.
Blank customer = default VAT
For a new customer without a fiscal position, Odoo charges the standard rate (21% in NL). That is deliberate and correct: better to invoice 21% and issue a credit note afterwards than to charge 0% incorrectly. If you cannot prove during an audit that the goods crossed the border and the VAT number was valid, you still owe that 21% — out of your own pocket.
Do not forget the EC Sales Report
If you have EU supplies, you are required to periodically submit an intra-community transactions declaration (in the Netherlands: the ICP). Odoo generates this report under Accounting → Reporting → EC Sales Report, neatly grouped by your customers' VAT numbers.
Finally: a practical tip
Check every quarter whether your EU customers' VAT numbers are still valid — a customer that changes legal form gets a new number, and suddenly your 0% invoice no longer holds up. With the VIES check in Odoo this takes minutes. Not sure whether your fiscal positions are configured correctly? Contact DAADit Group — we are happy to review your VAT setup with you.
Questions about your Odoo implementation? Take the free Business Scan.
Start the Business Scan →