How to set up EU VAT OSS in WooCommerce (free, step by step)
If you sell to customers in other EU countries, there is one number worth watching: EUR 10,000. That is the annual OSS threshold for cross-border B2C sales. Below it you can generally keep charging your home-country VAT; once you cross it in a calendar year, destination-country VAT applies. The hard part has always been knowing when you cross — and that is exactly what the free EU VAT One Stop Shop (OSS) for WooCommerce plugin answers, in real time.
This is a practical, free-install walkthrough. By the end you will have live threshold tracking, automatic order classification, and an email that warns you the moment you hit the limit.
Not tax advice. This guide and the plugin are a tracking and awareness tool, not tax or legal advice. VAT rules vary and change — confirm your actual registration and reporting obligations with a qualified tax professional.
Step 1: Install the free plugin
In your WordPress admin, go to Plugins → Add New, search for EU VAT One Stop Shop, then click Install Now and Activate. WooCommerce must already be installed and active. The plugin is fully compatible with High-Performance Order Storage (HPOS).
Once active, it adds a WooCommerce → One Stop Shop menu item — a single page with Dashboard, Reports, Settings, and Pro Features tabs.
Step 2: Run the setup wizard
On first activation you are redirected straight into a four-step wizard:
- Welcome — a short overview of what the plugin tracks.
- Home country — the EU member state where your business is established. The wizard keeps this in sync with your WooCommerce base location (your store address under WooCommerce → Settings → General), which is what order classification uses. Sales to all other EU countries count toward your threshold.
- Existing orders — optionally scan this year’s existing orders so your threshold position is correct when you install mid-year. The scan runs in the background via Action Scheduler and does not affect store performance.
- Complete — a summary of your home country and currency, confirming tracking is active.
You can re-run the wizard any time from One Stop Shop → Settings → Tools → Re-run setup wizard.
One caveat on currency: the free plugin tracks EUR stores. If your store uses another currency, tracking is paused until the Pro multi-currency module is active — the wizard tells you when this applies.
Step 3: Read the dashboard
Open WooCommerce → One Stop Shop. The dashboard is your command centre:
- A color-coded progress bar — green below 70%, yellow 70–90%, red at 90% or exceeded.
- Summary cards — your total cross-border B2C sales for the year and the EUR 10,000 threshold. (The “Threshold projection” card is a Pro feature.)
- A per-country breakdown — every destination country with net sales (net of VAT and refunds), order count, and that country’s share of the threshold.
- A status card telling you what your position means: Below threshold, Approaching threshold, Threshold exceeded, or Destination VAT required.
A few details worth knowing about how the number is built. The tracked amount per qualifying order is the order total minus tax in EUR — so shipping is included, VAT is not. Orders count once they reach Processing or Completed. Refunds, cancellations, and status reversals are subtracted automatically (there is a per-order refund ledger, so nothing double-counts). And once you cross EUR 10,000 in a year, that year stays exceeded even if refunds later dip you back under — and the next year starts already obligated.
Sell on Amazon, eBay, or in person too? Those count toward the same legal limit. Record them under Manual adjustments so your tracking reflects everything. If figures ever look off after an import or bulk edit, the Recalculate button rebuilds the year from your actual orders.
There is also a compact EU VAT OSS — Threshold widget on the main wp-admin dashboard, plus admin notices at 70% and when exceeded.
Step 4: Understand order classification (and the OSS status badges)
The plugin classifies every order automatically — you do not configure this. Only genuine cross-border EU B2C sales count. Watch for these badges in the OSS status column on the orders list (HPOS and legacy), and in the EU VAT OSS box on each order edit screen:
| Badge | Meaning | Counts? |
|---|---|---|
| EU B2C (purple) | Cross-border sale to another EU country | Yes |
| EU B2B | Business customer with a usable VAT number, or VAT-exempt | No |
| Domestic | Destination is your home country | No |
| Non-EU | Destination outside the EU VAT area | No |
| No country | Order has no destination country | No |
Place of supply is handled correctly: digital orders (entirely virtual/downloadable products) use the billing country; physical goods use shipping (falling back to billing). Special territories like the Canary Islands, Ceuta, Melilla, Åland, and the French overseas departments are excluded; a Northern Ireland address (GB + a BT postcode) is recognised as XI and stays in scope for goods. A red warning icon next to an EU B2C badge means a VAT number was provided but could not be honoured — the sale still counts, and the icon flags it for review.
Step 5: Turn on the B2B VAT-number field
B2B sales do not count toward the threshold — but only if you can identify them. Under Settings → VAT number field at checkout, the VAT number (EU businesses) field works on classic and block checkout, with three modes: Auto (show unless another VAT plugin provides one — the default), Always show, or Never show. See the B2B field guide for the full picture.
The free plugin validates the format of the number locally (country prefix, length, pattern) — no external call. The crucial design principle: a bad number never hides a sale. A malformed number keeps the order counting and flags it with a red warning, so you are never silently under-counting. (A strict-mode toggle — “Require VIES verification for B2B” — exists in the free plugin, but the VIES verification it depends on is Pro; with strict mode on and no Pro, orders carrying a VAT number simply keep counting.)
Step 6: Set the notification email
Under Settings → Notifications, set Email notifications to Enabled and confirm the Notification email address (it defaults to your site admin email). The free plugin sends one decisive alert — the OSS threshold alert when you reach 100% of EUR 10,000, once per calendar year. It is a standard WooCommerce email, so you can adjust its subject, heading, and format under WooCommerce → Settings → Emails → OSS threshold alert.
When to add Pro
The free plugin tells you where you stand. Pro acts on it:
- VIES B2B validation (Pro) — live verification against the EU VIES service; a confirmed-valid cross-border number zero-rates the order at checkout with the Article 138 reverse-charge statement (requires PHP SOAP). Domestic VAT numbers never zero-rate.
- Auto-apply VAT rates (Pro) — on crossing, imports each member state’s standard rate into WooCommerce, named
VAT XX, never touching your own rates. - Quarterly OSS reports (Pro) — country-by-country per-quarter tables (net sales, VAT due) with Print and CSV export, prepared as a filing aid for your return.
- Multi-currency (Pro) — converts non-EUR orders to EUR via ECB reference rates so non-EUR stores can track too; it does not change what customers see or pay.
- Predictive forecasting (Pro) — a projected crossing date, plus 70% and 90% early-warning emails and a monthly digest.
A note on scope: Pro prepares your figures — it does not file or submit your OSS return, and it handles standard rates only (reduced and zero rates aren’t applied automatically). This is intra-EU OSS, not IOSS import VAT.
Start free, watch the dashboard, and upgrade the day the threshold is in sight.
Frequently asked questions
Is the EU VAT OSS plugin free?
Yes. Real-time threshold tracking, automatic order classification, the OSS status column, the dashboard, the optional B2B VAT-number field (format check), and the 100% threshold email are all free. VIES verification, auto-rates, quarterly reports, multi-currency, and 70/90% early-warning emails are part of the Pro add-on.
Does the plugin file my OSS return for me?
No. It prepares the figures — your running per-country totals against the EUR 10,000 threshold, and (with Pro) quarterly country-by-country tables you can export. You or your accountant still submit the actual OSS return through the official portal.
What is the EUR 10,000 OSS threshold the plugin tracks?
It is the annual EU limit on cross-border B2C sales of goods and digital services to other member states. Below it you can generally charge home-country VAT; once your sales pass EUR 10,000 in a calendar year, destination-country VAT applies and can be reported through one OSS return. The plugin tracks your position against it — it is not tax advice.
Which orders count toward the threshold?
Only genuine cross-border EU B2C orders. Domestic, Non-EU, EU B2B (a usable VAT number or a VAT-exempt order), and orders with no country are excluded automatically. The tracked amount per qualifying order is the order total minus tax, in EUR.
Does it work with HPOS and block checkout?
Yes. The plugin is compatible with High-Performance Order Storage and shows the OSS status column on both HPOS and legacy order screens. The optional VAT-number field works on both classic (shortcode) and block-based checkout.
Can I use it on a non-EUR store?
The free plugin tracks EUR stores. On other currencies, tracking is paused until the Pro multi-currency module converts orders to EUR using ECB reference rates. The wizard and dashboard both tell you when this applies.
Start tracking your OSS threshold today
Install the free EU VAT One Stop Shop plugin and know exactly where you stand against the EUR 10,000 limit — in real time, with no spreadsheets.
See plans & pricingOr read the documentation.