You Don't Need a Tax Consultant to Get This Right
The moment European customers start signing up for your SaaS, VAT enters the picture. And for a lot of founders, that triggers a mild panic. Tax consultants, OSS registrations, reverse charge mechanisms — it sounds like a full-time job.
The reality is more manageable than it looks. The hard part of EU VAT compliance — the rules — is well-documented. The practical part — collecting the right information and charging the right rates — can be handled almost entirely through APIs and some thoughtful checkout design.
This post walks through what you actually need to build: what data to collect, when to charge VAT, how to validate VAT numbers, and how to keep your rates current without manually tracking every EU member state.
The Core Rules You Need to Know
B2B vs B2C Makes All the Difference
The most important distinction in EU VAT is whether you're selling to a business (B2B) or a consumer (B2C). For B2B sales where the customer has a valid VAT number and is based in a different EU country, the reverse charge mechanism applies — you issue a zero-rated invoice and the customer self-accounts for VAT in their own country. You don't charge VAT. You just need to verify their VAT number.
For B2C sales — selling to consumers or businesses without a valid VAT number — you charge VAT at the rate applicable in the customer's country. For digital services, the EU's One Stop Shop (OSS) scheme simplifies this by letting you declare and pay VAT for all EU countries through a single registration in one member state.
UK Is a Separate System
Post-Brexit, the UK has its own VAT system, independent of the EU. UK customers need UK VAT validation, and the rules around when to charge UK VAT differ from EU rules. If you're selling to UK businesses, you'll want to validate their UK VAT numbers through HMRC, not VIES.
What to Build: A VAT Compliance Checklist for SaaS
Here's the minimum viable VAT implementation for a SaaS product with EU and UK customers.
1. Collect the Right Customer Data
At checkout or account creation, collect the customer's country and whether they have a VAT number. Make the VAT number field optional but present — many B2B customers expect to enter it and will be frustrated if they can't.
Store the country and VAT number in your customer record. You'll need it for invoicing, and you'll need it to determine whether to charge VAT.
2. Validate VAT Numbers in Real Time
When a customer enters a VAT number, validate it immediately. Don't wait until you issue the invoice. Use a service like The VAT API to check the number against VIES (for EU numbers) or HMRC (for UK numbers). The API returns whether the number is valid and active, and often the registered business name.
Store the validation response — status, business name, timestamp — alongside the VAT number. This is your audit trail.
3. Determine Whether to Charge VAT
The logic here is straightforward once you have the data:
- Customer has a valid EU VAT number and is in a different EU country from you → reverse charge, zero-rated invoice.
- Customer is an EU consumer (no VAT number) → charge VAT at their country's rate.
- Customer is a UK business with a valid UK VAT number → reverse charge applies.
- Customer is in your own country → standard domestic VAT rules apply.
4. Keep VAT Rates Current
EU VAT rates change. Not constantly, but regularly enough that hardcoding them is a mistake. Using the VAT API rates endpoint returns the current rate structure for any EU country, including standard, reduced, and super-reduced rates by category.
5. Generate Compliant Invoices
EU VAT invoices have specific requirements: your VAT number, the customer's VAT number (for B2B), the applicable rate, the VAT amount, and for reverse charge invoices, the relevant legal reference. If you're using Stripe, many of these fields can be configured through their invoice settings — but you need to make sure the data flowing into the invoice is correct upstream.
OSS Registration: Do You Need It?
If you're selling digital services to EU consumers (B2C) and your cross-border EU sales exceed €10,000 per year, you need to account for VAT in each customer's country. The OSS scheme simplifies this enormously — instead of registering for VAT in every EU country separately, you register for OSS in one member state and file a single quarterly return covering all EU sales.
For most SaaS businesses with EU consumer customers, OSS registration is the right approach. It's not complex, but it does require quarterly filings. A good accountant familiar with EU VAT can handle these efficiently.
The Stack That Makes This Manageable
You don't need enterprise tax software to handle EU VAT compliance for a SaaS product. A reasonable stack looks like this: a billing platform (Stripe Billing or Paddle both have VAT support built in), a VAT validation API for checking customer VAT numbers at signup, a VAT rates API for keeping your rate data current, and an accountant to handle the actual VAT returns.
The goal is to automate the data collection and validation so your accountant has accurate records to work from — not to replace the accountant entirely.
The API parts of this are genuinely straightforward. Building the validation call and rate lookup into your checkout flow is a day's work. After that, it runs automatically.
Common Mistakes to Avoid
Charging the wrong VAT rate because you hardcoded rates that have since changed. Issuing zero-rated invoices without validating the customer's VAT number. Not storing validation timestamps, which you'll need if you're ever audited. Not handling UK numbers separately from EU numbers after Brexit.
None of these are catastrophic individually, but they accumulate into compliance risk. Automated validation and current rate data through an API eliminates most of them at source.