Launch pricing: Lock in Pro at $79/yr before prices go up View pricing →

WooCommerce Digital Goods and EU VAT

If you sell ebooks, software, licenses, memberships, templates, or any other downloadable product to consumers across the EU, your VAT obligation does not follow your shipping label — there isn’t one. Digital supplies are taxed where the customer belongs, which means a different place-of-supply rule from physical goods and a threshold you can cross without ever shipping a parcel. This page explains how that rule works and how the Sellinor EU VAT One Stop Shop (OSS) for WooCommerce plugin applies it automatically.

Not tax advice. This is a tracking and awareness tool, not tax or legal advice. VAT rules vary by situation and change over time — confirm your actual registration and reporting obligations with a qualified tax professional.

Digital goods are taxed by the billing country

For physical goods, the place of supply follows where the goods go — the shipping address. Digital goods have no shipping address, so the EU place-of-supply rule taxes them where the customer is established: their billing country.

The plugin detects this per order. An order made up entirely of virtual or downloadable products resolves its destination from the billing country; an order containing physical goods uses the shipping country, falling back to billing when no shipping address is present. You don’t configure this — it’s read from each order’s actual products and addresses. See Order classification for the full rule set.

The successor to VAT MOSS

If you remember registering for VAT MOSS (Mini One Stop Shop) to report cross-border sales of digital services, OSS is its successor. The One Stop Shop regime extended that single-return idea from digital services to goods as well, under one EUR 10,000 threshold. Below that line you keep charging your home-country VAT; above it, destination-country VAT applies and you can report it through a single OSS return instead of registering for VAT in every country you sell to.

Cross-border digital sales count toward €10,000

Not every digital sale moves the needle. The plugin classifies each order into one of five buckets, and only cross-border EU B2C counts:

ClassificationCounts?
Domestic (your home country)No
Non-EUNo
EU B2B (usable VAT number or VAT-exempt)No
EU B2C (cross-border consumer)Yes
No countryNo

For each qualifying order, the tracked amount is the order total minus tax, in EUR. The plugin keeps one running total per calendar year, broken down by destination country, and updates it live as orders reach Processing or Completed. Refunds, cancellations, and status reversals are subtracted automatically, with a per-order refund ledger so a sequence like partial refund → cancelled → back to processing never double-counts. Full detail: Threshold tracking — or the standalone overview at EU VAT threshold tracking.

Once crossed, it stays crossed. EU rules say that once your cross-border B2C sales pass EUR 10,000 in a year, destination VAT applies for the rest of that year — even if later refunds pull the running total back under the line. The plugin latches the crossed state per year, and the following year is treated as obligated from day one.

A note on special territories: some areas carry an EU country code but sit outside the EU VAT area (the Canary Islands, Ceuta and Melilla, the Åland Islands, the French overseas departments, Büsingen and Heligoland, Mount Athos, Livigno and Campione d’Italia). Sales there are excluded, detected from the postcode. Northern Ireland is the reverse: a GB address with a BT postcode is recognised as XI and stays in scope for goods.

Keeping genuine businesses out of the count

A sale to an EU business is EU B2B and does not count — but only if you can identify it. Since v1.2.0 the free plugin adds an optional VAT-number field at checkout, on both the classic (shortcode) and block checkouts. A structurally valid number — or an explicit VAT exemption on the order — classifies the order as B2B and excludes it.

The free plugin validates the format only: the country prefix plus each member state’s length and pattern, with no external call. It defers to known third-party EU VAT plugins (it reads common VAT-number meta keys, extendable via the oss_vat_number_meta_keys filter) so you never get a duplicate field. Crucially, a malformed number never silently hides a sale — the order keeps counting and is flagged with a red warning icon for your review. See B2B VAT number at checkout for the worked-through behaviour, and the B2B field docs for the status table.

VAT-number statuses run none → exempt → assumed (format-valid) → verified (VIES) → invalid. The verified state — and removing VAT at checkout for confirmed cross-border numbers — is the Pro VIES validation feature.

Where to watch your position

Everything is visible without leaving WooCommerce:

  • An OSS status column in WooCommerce → Orders (HPOS and legacy) and an EU VAT OSS box on each order, showing the classification, resolved destination, and whether it counts.
  • A dashboard at WooCommerce → One Stop Shop with a colour-coded progress bar, per-country breakdown, a year selector, and Recalculate to rebuild from your real orders.
  • Admin notices at 70% and once exceeded, plus a one-time email at 100% of the threshold.
  • Manual adjustments to fold in off-platform sales (Amazon, eBay, in person) that count toward the same legal threshold.

The free plugin tracks EUR stores. Selling digital goods in SEK, PLN, DKK, or another currency? Pro multi-currency converts orders and refunds to EUR using ECB daily reference rates (it changes nothing your customer sees or pays).

Completing the picture with Pro

Once you cross the threshold, Pro closes the loop:

  • VIES B2B validation (Pro) — live lookups against the EU VIES service; a confirmed-valid cross-border number is zero-rated at checkout and the order carries the Article 138 reverse-charge statement. Domestic numbers never zero-rate. A VIES outage never produces a false “invalid”.
  • Auto-apply VAT rates (Pro) — on crossing, each other member state’s standard rate is imported into WooCommerce (reduced/zero rates are not handled).
  • Quarterly OSS reports (Pro) — per-quarter, per-country tables (country, standard rate %, net sales EUR, VAT due EUR), with Print and CSV export, ready to transcribe into your return.
  • Predictive forecasting (Pro) — a projected crossing date plus 70%/90% early-warning emails and a monthly digest.

The plugin prepares these figures; it does not submit your OSS return. To see plans, visit the pricing section, or start with what EU VAT OSS actually is.

Frequently asked questions

Which country's VAT applies to digital goods sold to EU consumers?

Digital supplies are taxed where the customer belongs, so for an order made entirely of virtual or downloadable products the place of supply is the customer's billing country — not your shipping country or your store's base location. The plugin detects this per order: orders consisting entirely of virtual/downloadable products use the billing country, while orders containing physical goods use the shipping country (falling back to billing when no shipping address is present).

Do digital sales count toward the €10,000 OSS threshold?

Yes. Cross-border B2C digital supplies to other EU member states count toward the EUR 10,000 OSS threshold, just like cross-border B2C sales of goods. The plugin tracks one running total per calendar year, broken down by destination country, and only counts genuine cross-border EU B2C orders — domestic, non-EU, and B2B orders are excluded automatically.

Is this the same as the old VAT MOSS for digital services?

OSS is the successor regime to the old VAT MOSS (Mini One Stop Shop) for digital services. The One Stop Shop now covers cross-border B2C supplies of both digital services and goods under a single EUR 10,000 threshold. The plugin tracks your position against that threshold. It is not tax advice — confirm your own obligations with a qualified professional.

How are EU business customers excluded from the threshold?

Since v1.2.0 the free plugin adds an optional VAT-number field at checkout (classic and block). A business customer who supplies a structurally valid VAT number — or an order marked VAT-exempt — is classified as EU B2B and excluded from the threshold. The free plugin validates the format locally; live VIES verification and checkout zero-rating are Pro features. A malformed number never silently hides a sale: it keeps counting and is flagged for review.

Does the plugin charge the right destination VAT rate on digital goods?

Below the threshold you keep charging your home-country VAT. Once you cross EUR 10,000, the Pro auto-apply feature imports each other member state's standard VAT rate into your WooCommerce tax tables. Only standard rates are handled — reduced and zero rates must be configured manually. The plugin prepares figures and tracks your position; it does not file your OSS return for you.

Does this handle import VAT or IOSS for non-EU sellers?

No. This plugin covers the OSS scheme for intra-EU cross-border B2C sales. It does not handle IOSS, import VAT, or low-value consignments imported from outside the EU.

Track digital-goods EU VAT automatically

Let the plugin classify every order by the right place-of-supply country and watch your €10,000 OSS threshold in real time — no spreadsheets.

See plans & pricing

Or read the documentation.