EU VAT invoices for Shopify orders: reverse charge and OSS
Selling across EU borders changes what goes on your invoice. Here is how destination rates, the 10,000 euro OSS threshold and B2B reverse charge work in practice.
If you only sell inside your own country, VAT is simple: one rate, one return. The moment an order crosses an EU border the rules change, and so does what has to be printed on the invoice. Here is the practical version for Shopify merchants.
B2C: the rate follows the customer
When you sell to a consumer in another EU country, you charge the VAT rate of the country the parcel goes to. A shirt shipped to Germany carries 19%, the same shirt to France carries 20%, to Belgium 21% and to Italy 22%. The rate belongs to the destination, not to your own registration.
Shopify can calculate this at checkout once you have entered your registrations under Settings, Taxes and duties. What it does not do is turn the result into a proper invoice, which is where an invoicing app comes in.
Start with your tax settings
Before you worry about invoices, make sure Shopify knows where you are registered. Under Settings, Taxes and duties you add your home registration and, once you use OSS, your OSS registration. Shopify then charges the destination rate on EU orders instead of your domestic rate.
Two settings decide what your invoices look like afterwards: whether your prices include tax, which determines how the net amounts are calculated, and whether you charge tax on shipping, which becomes its own line. Get these right once, because every invoice copies what the order says.
The 10,000 euro threshold
There is one exception, meant for smaller sellers. As long as your cross border B2C sales to all other EU countries together stay below 10,000 euro in a calendar year, you may keep charging your own country's rate. Cross that line and destination rates apply from the order that crosses it.
The threshold is one combined number for the whole EU, not a number per country, and digital services count towards it. Most growing stores pass it sooner than they expect, so keep an eye on the running total.
OSS: one return instead of many
Once you charge foreign VAT rates, you owe VAT to other countries. Registering in each of them would be painful, so the EU created the One Stop Shop. You register for OSS once, with your own tax authority, and file a single quarterly return that splits your sales per country. Your own tax office forwards the money.
What OSS needs from you is a clean split: per country, per rate, the net amount and the VAT amount. That is exactly what a VAT export from your invoicing app gives you.
B2B: reverse charge
Selling to a business in another EU country works differently. If the buyer gives you a valid VAT number, you invoice 0% VAT and the buyer reports the VAT in their own country. This is the reverse charge mechanism.
Two conditions matter. The VAT number has to be valid in VIES, the EU's own register, at the moment you invoice. And the goods have to actually leave your country, which you should be able to show with shipping documents. If either condition fails, you charge your normal domestic rate.
What the invoice has to say
On a reverse charge invoice, three things are not optional:
- Your own VAT number
- The customer's VAT number
- The words "VAT reverse charged"
Without that wording the invoice is not proof of a zero rated sale, and the VAT can land back on you. For a normal cross border B2C sale, the invoice simply shows the destination rate and the VAT amount in the currency you charged.
Three orders, three invoices
An example makes it concrete. Say you ship from the Netherlands and you are past the threshold.
- A consumer in Amsterdam orders for 100 euro. The invoice shows 21% Dutch VAT.
- A consumer in Berlin orders the same item. The invoice shows 19% German VAT, and that VAT reaches Germany through your OSS return.
- A company in Brussels orders the same item and gives a VAT number that checks out in VIES. The invoice shows 0%, both VAT numbers and the reverse charge wording. It stays out of your OSS return and goes into your regular VAT return as an intra EU supply.
Same product, same price, three different invoices. That is why the VAT rate can never be a fixed setting on your template.
The export your accountant asks for
At the end of the quarter you need your sales split by country and rate, with the reverse charge sales listed separately. Rebuilding that from a Shopify order export is an afternoon of work. Pulling it from your invoices is a click.
How Marketplace Invoice handles it
We read the order, the shipping country and the customer's tax details. Consumers get an invoice with the rate that was charged at checkout. Business customers in another EU country with a valid VAT number get a zero rated invoice with both VAT numbers and the reverse charge wording on it. Domestic orders keep your domestic rate.
Every invoice is numbered in its own sequential series, attached to the order and emailed to the customer. When the quarter closes, the VAT export gives your accountant the split per country and rate, including the reverse charge sales.
Get started
Cross border VAT is not hard, it is detailed. Let the invoice carry the detail for you. Install on Shopify.
