EU VAT Guide
Selling software to EU customers? Here's everything you need to know about thresholds, OSS registration, B2B exemptions, and how to stay compliant without the headache.
€10,000
Annual threshold
Once your cross-border EU B2C sales exceed €10,000/year, you must register for OSS or register in each member state.
27
EU member states
Each country has its own VAT rate. The OSS scheme lets you file a single quarterly return covering all 27.
Quarterly
Filing frequency
OSS returns are due by the end of the month following each quarter (e.g., Q1 due by 30 April).
0%
B2B reverse charge
When you sell to an EU business with a valid VAT ID, the buyer handles VAT via the reverse charge mechanism.
The VAT treatment of your sale depends entirely on who the buyer is and whether they have a valid VAT ID.
A consumer in France buys your SaaS plan for €49/mo
You charge French VAT (20%) and report it via OSS. The VAT goes to France.
A German company (DE123456789) subscribes to your annual plan
Reverse charge applies. You invoice without VAT. The buyer self-assesses VAT in Germany.
A company claims to be B2B but their VAT ID fails VIES validation
Treated as B2C. You must charge the local VAT rate for the buyer's country.
EU VAT is not intuitive. These are the pitfalls we see most often.
Many SaaS founders don't realize they've crossed the threshold until tax authorities come knocking. If you sell to EU consumers, track your cross-border B2C revenue from day one.
B2B and B2C sales have completely different VAT treatment. Failing to classify correctly means you're either overcharging business customers or underpaying VAT on consumer sales.
Accepting a VAT ID at face value without checking VIES is risky. If the ID is invalid, the sale is B2C and you owe VAT. Tax authorities will hold you liable.
VAT rates differ by country and change periodically. Using your home country rate for all EU sales is a common and costly mistake.
vidaReady connects to your Stripe account and handles the hard parts of EU VAT compliance automatically.
Connect your Stripe account and let vidaReady handle classification and reporting. 14 days free.