EU VAT & IOSS: A Shopify Setup Guide
Selling across EU borders means charging the right VAT at the right time. This guide covers the OSS and IOSS schemes, the low-value import rules, registration thresholds, and how to configure it all in Shopify.

Cross-border VAT is one of the most confusing parts of selling into the European Union, and one of the easiest to get wrong. Charge too little and you owe the difference plus penalties. Charge too much and you lose sales at checkout. This guide walks through how EU VAT works for consumer sales and how to set it up in Shopify.
This is general information, not legal or tax advice. Rules change and thresholds vary, so confirm the specifics with a tax professional.
The core idea: destination VAT
For business-to-consumer (B2C) sales inside the EU, VAT is generally due in the country where the customer is, not where your business is. A shopper in Germany pays German VAT (19%), a shopper in France pays French VAT (20%), and so on. That sounds like a nightmare of 27 separate registrations, which is exactly the problem the OSS scheme solves.
The One-Stop Shop (OSS)
The One-Stop Shop lets EU-based sellers report all their cross-border B2C sales in a single quarterly return, filed in one member state, instead of registering in every country they ship to.
Key points:
- The EU-wide distance selling threshold is EUR 10,000 per year (total across all cross-border B2C sales, not per country). Below it, you may charge your home country's VAT rate. Above it, you must charge destination VAT.
- Once over the threshold, OSS collects all that destination VAT into one return.
- OSS covers goods already inside the EU being shipped between member states.
Illustrative example: a Dutch store selling EUR 4,000 to Belgium and EUR 7,000 to Germany has EUR 11,000 in cross-border sales. That is over the EUR 10,000 line, so from that point it must charge Belgian and German rates and can use OSS to file everything centrally.
The Import One-Stop Shop (IOSS)
IOSS handles goods shipped into the EU from outside (for example, from the UK, US, or a warehouse in Asia) with a value up to EUR 150.
Why it matters:
- Before IOSS, low-value imports often hit the customer with surprise VAT and handling fees at delivery. Nobody enjoys paying an unexpected EUR 12 fee to receive a EUR 25 item.
- With IOSS, you collect VAT at checkout, and the parcel clears customs smoothly with no charges on delivery.
- IOSS applies to consignments not exceeding EUR 150 intrinsic value. Above that, normal import VAT and duties apply at the border.
- You register for IOSS in one EU member state (often via an intermediary if you are outside the EU) and file a single monthly return.
The customer experience difference is significant. Stores that switch to IOSS collection commonly see fewer refused deliveries and fewer "why am I being charged again?" support tickets, because the total the shopper sees at checkout is the total they pay.
The end of the low-value import exemption
An important change worth internalizing: the old VAT exemption for imports under EUR 22 is gone. All commercial imports into the EU are now subject to VAT, regardless of how small. IOSS is the mechanism that makes collecting VAT on those small parcels practical.
Configuring VAT in Shopify
Shopify's tax settings can handle most of this once configured correctly.
- Set your tax regions. Add the EU as a region and enter your VAT registrations. Shopify uses these to determine rates.
- Enable OSS or IOSS registration numbers where Shopify supports them, so returns can be reconciled.
- Choose tax-inclusive or tax-exclusive pricing. EU consumers expect tax-inclusive display prices — the price on the product page should be the price they pay. Shopify can show inclusive prices to EU visitors while showing exclusive prices elsewhere.
- Let Shopify calculate destination rates. Once your registrations are in, Shopify applies the correct country rate at checkout based on the shipping address.
- Flag the EUR 150 threshold for imports. Orders above it should not use IOSS; they follow standard import procedures, and your carrier or customs broker handles the border VAT and duties.
A frequent misconfiguration: leaving prices tax-exclusive for EU buyers. It technically works, but it produces a jarring checkout where VAT appears as a late add-on, hurting conversion and, in some cases, running afoul of consumer price-display expectations.
Invoices and record-keeping
Compliant invoicing is part of the deal:
- Include your VAT number, the customer's country VAT rate applied, and a clear breakdown of net, VAT, and gross.
- For OSS and IOSS, keep records for the period your scheme requires (commonly several years).
- B2B sales to VAT-registered businesses in other member states may use the reverse charge mechanism, where you do not charge VAT but the buyer accounts for it. This requires a valid VAT number, which you should validate before applying zero-rating.
A quick decision guide
- Selling within your own country only? Charge your home VAT rate.
- Cross-border B2C inside the EU under EUR 10,000/year? Home rate is fine, but track the threshold.
- Cross-border B2C over EUR 10,000/year? Charge destination rates, use OSS.
- Shipping into the EU from outside, parcels up to EUR 150? Register for IOSS, collect VAT at checkout.
- Parcels over EUR 150? Standard import VAT and duties apply at the border.
Compliance is more than tax
VAT is one obligation among several when selling to European consumers. The same customers who expect tax-inclusive pricing also have a statutory right of withdrawal — a cooling-off period during which they can return most orders. Handling returns and refunds correctly interacts with how you account for VAT on cancelled sales. If you want that side handled cleanly on Shopify, Blockly — Right of Withdrawal (available here) implements EU Directive 2023/2673 requirements so the consumer-rights layer is not an afterthought.
The bottom line
EU VAT feels intimidating, but the modern schemes are designed to simplify it. Track the EUR 10,000 distance-selling threshold, use OSS for intra-EU sales, use IOSS for low-value imports up to EUR 150, show tax-inclusive prices to EU shoppers, and let Shopify calculate destination rates once your registrations are entered.
Set it up carefully once, verify a few test orders, and you can sell across borders with confidence instead of anxiety.
Protect your Shopify store today
Install Shieldy free — block fraud, bots, and VPNs in under 5 minutes.
Install on Shopify — Free


