← All articles

Blog

How to Localize Odoo for EU VAT and US Sales Tax

Step-by-step guide to configuring Odoo's EU OSS VAT and US AvaTax integrations so your ERP stays compliant on both sides of the Atlantic.

6 min read
  • bottom

Tax compliance in two jurisdictions is not twice the problem — it is more like four times, because the underlying logic is completely different. EU VAT is destination-based and charged at the point of sale. US sales tax is jurisdiction-stacked, varies by product type, and triggers only once you cross a nexus threshold in a given state. If you are running Odoo across both markets, the good news is that the platform has native tooling for both. The bad news is that “native” does not mean “preconfigured out of the box.” Here is exactly what you need to do.

EU VAT: The OSS Setup in Odoo

Since July 2021, the EU’s One Stop Shop (OSS) scheme has replaced the old country-by-country distance selling thresholds with a single EU-wide rule. If your B2C cross-border sales to EU customers exceed €10,000 in a calendar year, you must charge VAT at the buyer’s country rate — not your home country rate. Once you cross that threshold, OSS lets you register once (in your home Member State) and file a single quarterly return covering all EU markets, rather than registering for VAT in every destination country.

For goods imported from outside the EU valued at €150 or less, the Import OSS (IOSS) scheme applies instead.

Enabling it in Odoo

  1. Go to Accounting → Configuration → Settings → Taxes.
  2. Check EU Intra-community Distance Selling and save.
  3. Odoo automatically creates fiscal positions and tax mappings based on your company’s home country.
  4. Click Refresh tax mapping any time you add new products or change your tax structure.
  5. To generate your quarterly OSS report: Accounting → Reporting → Tax Report, switch the report type to OSS Sales (or OSS Imports for IOSS), then export as PDF, XLSX, or XML for submission to your competent authority’s OSS portal.

One thing to verify before going live: Odoo’s auto-generated mapping is a starting point, not a guarantee. VAT rates differ by product category — digital services, food, and pharmaceuticals often attract reduced or zero rates in specific countries. Walk through the fiscal positions and confirm the tax codes match what your products actually are.

US Sales Tax: Economic Nexus and AvaTax

The US picture changed fundamentally in June 2018 when the Supreme Court’s South Dakota v. Wayfair decision allowed states to tax remote sellers without a physical presence. Today, most US states have economic nexus laws — meaning that once you hit a revenue or transaction threshold in a state, you are obligated to collect and remit that state’s sales tax. Most states use $100,000 in annual sales as the trigger, though New York requires $500,000 plus 100 transactions, and thresholds vary enough that you cannot assume one rule covers all 50 states. As of January 2026, 16 states have also eliminated their separate 200-transaction threshold, leaving only dollar-based triggers.

Odoo does not ship with a pre-built US sales tax rate database — and for good reason. Rates change constantly across more than 11,000 US tax jurisdictions. The practical solution is the native AvaTax integration (Avalara).

Setting up AvaTax in Odoo

  1. Create an Avalara account and note your Account ID and License Key.
  2. In Odoo, install the account_avatax module (it pulls in sales and inventory sub-modules automatically).
  3. Go to Accounting → Configuration → Settings → Taxes and set Fiscal Country to United States.
  4. Enter the Account ID in the API ID field and the License Key in the API Key field.
  5. Choose sandbox for testing, then switch to production when ready.
  6. Enable address validation to ensure Odoo sends clean addresses to Avalara — a dirty address is a common cause of incorrect tax calculations.
  7. Confirm that the “Automatic Tax Mapping (AvaTax)” fiscal position is applied to US customers.

Once live, AvaTax calculates taxes in real time on every quotation and invoice, accounting for state, county, and city rates, product-level exemptions, and special rules like tax holidays. One important limitation: excise tax is not supported by the Odoo-AvaTax integration. If you sell alcohol, tobacco, or fuel, you will need a separate workflow for excise obligations.

B2B Exemptions: Both Sides

In the EU, B2B sales between VAT-registered businesses in different Member States are zero-rated (intra-community supplies), with the buyer self-accounting under the reverse charge mechanism. In Odoo, this is handled through fiscal positions — you map a customer’s VAT number, and the system applies the correct zero-rate treatment automatically.

In the US, B2B exemptions depend on resale certificates or exemption certificates by state. AvaTax supports exemption certificate management, but you need to collect and upload the certificates to Avalara’s CertCapture system. This is an operational step that does not happen automatically just because the integration is live.

Common Mistakes to Avoid

  • Skipping the tax mapping review. Odoo’s auto-generated EU fiscal positions cover standard rates, not reduced or zero rates for specific categories. A book seller in Germany cannot apply the same mapping as a software company.
  • Assuming AvaTax covers nexus registration. AvaTax calculates the tax; it does not file returns or register you in new states. You still need a separate compliance workflow — either through Avalara’s managed filing service or a tool like TaxJar — to stay current on nexus registrations and remittances.
  • Ignoring the €10,000 threshold timing. The OSS threshold is measured on a calendar-year basis. If you pass it mid-year, you owe destination-country VAT from the moment you crossed it, not just for future sales.
  • Using the wrong Odoo version. The EU distance selling module and AvaTax connector are documented and maintained on Odoo 17 and 18. If you are on Odoo 14 or 15, check the OCA (Odoo Community Association) modules for backported support — the core behavior is similar but the menu paths differ.

What This Looks Like End to End

A typical mid-market e-commerce company selling across the EU and the US will run two fiscal position sets in parallel: one for EU B2C (OSS-mapped, destination-rate VAT), one for EU B2B (reverse charge), and a third for US customers (AvaTax-driven). Odoo can apply the correct position automatically based on customer country and VAT number, which is the configuration worth investing time in getting right.

Done well, the ERP handles tax logic silently in the background. Done poorly, it silently applies the wrong rate to every invoice for months before someone notices.


If you are about to go live on Odoo across EU and US markets — or you are cleaning up a configuration that has quietly been wrong — we are happy to spend an hour walking through your specific setup at no charge. No pitch, just a straight conversation.


Sources: EU VAT One Stop Shop — European Commission; EU Intra-community Distance Selling — Odoo 18.0 Documentation; AvaTax Integration — Odoo 18.0 Documentation; Economic Nexus and South Dakota v. Wayfair — Avalara. Figures current as of mid-2026; verify against primary sources before acting.