B2B vs B2C VAT Classification: How It Works for EU Transactions
VAT Classification

B2B vs B2C VAT Classification: How It Works for EU Transactions

vidaReady Team

EU VAT experts

24 February 20255 min read

Getting B2B and B2C classification right is the core of EU VAT compliance. Here’s the logic behind it — and why automating it matters.

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. Get it wrong, and you’re either overpaying or facing penalties.

The core distinction

B2C
Charge local VAT rate, collect & remit via OSS
B2B
Reverse charge applies, zero VAT collected

For Stripe-based SaaS businesses, this distinction is huge. 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 a clear decision tree:

  1. Customer provides a VAT ID at checkout — this is the starting signal for a potential B2B classification.
  2. You validate that VAT ID against VIES — the EU’s official VAT Information Exchange System.
  3. If valid → B2B — reverse charge applies, zero VAT on the invoice.
  4. 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. Here’s what you need to know:

🚨
Critical rule: An invalid VAT number means you must treat the transaction as B2C. If the number was invalid and you charged zero VAT, you owe the VAT yourself.
⚠️
Watch out: VIES lookups can be slow and intermittently unavailable. When VIES is down, fall back to format-based validation and flag those transactions for manual review later.

VAT rates by country

For B2C transactions, you must apply the correct rate for the customer’s country. The range is wider than most founders expect:

🇱🇺 Luxembourg 17% 🇩🇪 Germany 19% 🇳🇱 Netherlands 21% 🇪🇸 Spain 21% 🇧🇪 Belgium 21% 🇩🇰 Denmark 25% 🇸🇪 Sweden 25% 🇭🇷 Croatia 25% 🇭🇺 Hungary 27%

Why manual classification breaks down

50/mo
Feasible manually
500/mo
A part-time job
27
Different VAT ID formats

Stripe’s raw export doesn’t always have a clean VAT ID field. Customers often enter formatting that doesn’t match VIES expectations — spaces, dashes, missing country prefixes. Each one needs to be normalized before validation.

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, and total VAT amount collected.

💡
Getting it wrong hurts both ways: Over-paying means you collected VAT you didn’t need to. Under-paying means you owe VAT with penalties and interest. Accurate B2B/B2C classification is your safeguard.

Key takeaway

vidaReady classifies every transaction automatically with live VIES validation, then produces per-country summaries ready for your OSS return — no spreadsheets required.

Automate your EU VAT workflow

Connect Stripe, classify every transaction automatically, and get your OSS report in minutes.

Start 14-day free trial