The single most important question in EU VAT compliance is: is this a B2B or B2C transaction? The answer determines how much VAT you collect, whether you need to validate a VAT ID, and what you report in your OSS filing.
The core distinction
B2C (Business to Consumer): You charge VAT at the customer’s country rate, collect it, report it, and remit it via OSS.
B2B (Business to Business): If the buyer is a VAT-registered business in another EU country, the reverse charge mechanism applies. You issue a zero-VAT invoice. You collect and remit zero VAT for this transaction.
For Stripe-based SaaS businesses, this distinction is significant: B2B transactions have zero VAT liability for you, while B2C transactions require you to apply the correct local rate for each of 27 different countries.
How classification is determined
The process follows this sequence:
- Customer provides a VAT ID at checkout
- You validate that VAT ID against VIES — the EU’s official VAT Information Exchange System
- If valid → B2B, reverse charge applies, zero VAT on the invoice
- If no VAT ID or invalid → B2C, apply local VAT rate for the customer’s country
What is VIES?
VIES is the official EU database of VAT-registered businesses. Key points:
- An invalid VAT number means you must treat the transaction as B2C
- VIES lookups can be slow and intermittently unavailable
- When VIES is down, fall back to format-based validation and flag those transactions for review
- Failing to validate means you can’t legally apply reverse charge — if the number was invalid and you charged zero VAT, you owe the VAT yourself
VAT rates by country
For B2C transactions, you must apply the correct rate for the customer’s country. Standard digital services rates range widely:
- 17% — Luxembourg
- 19% — Germany
- 21% — Netherlands, Spain, Belgium
- 25% — Denmark, Sweden, Croatia
- 27% — Hungary (highest in the EU)
Why manual classification breaks down
- At 50 transactions/month: feasible manually
- At 500 transactions/month: a part-time job
- VAT IDs appear in different formats across 27 countries
- Stripe’s raw export doesn’t always have a clean VAT ID field
- Customers often enter formatting that doesn’t match VIES expectations
What this means for your OSS filing
Your quarterly OSS return requires, for every country with B2C sales:
- Net revenue (excluding VAT)
- VAT rate applied
- Total VAT amount collected
Getting the B2B/B2C split wrong means either over-paying (you collected VAT you didn’t need to) or under-paying (you owe VAT with penalties and interest).
vidaReady classifies every transaction automatically with live VIES validation, then produces per-country summaries ready for your OSS return.