EU VAT Reverse Charge: Why Validation is Required and How to Implement It

If you sell B2B to customers in the EU or UK, you need to understand the reverse charge mechanism. It determines whether you charge VAT or not. Getting it wrong has real consequences: charge VAT when you shouldn't and you annoy your customer. Skip VAT when you should and you owe the tax authority money.

This guide covers what the reverse charge is, why VAT validation is legally required to use it, and how to implement it in code.

What is the reverse charge mechanism?

In a normal sale, the seller charges VAT and remits it to the tax authority. With reverse charge, the buyer accounts for VAT in their own country instead. This avoids the seller needing to register for VAT in every EU country they sell to.

It applies to cross-border B2B transactions within the EU and to services supplied by non-EU businesses to EU businesses.

Why VAT validation is legally required

Since January 1, 2020, a valid VAT number is a material requirement for the 0% rate on intra-Community supplies in the EU. "Material requirement" means it is not optional or best practice. It is a condition of the law.

  • If you zero-rate a transaction and the customer's VAT number turns out to be invalid, you are liable for the VAT
  • The European Commission's VIES system is the official tool for EU verification
  • You must be able to prove you validated the number at the time of the transaction. Store the validation result and consultation number.

Who needs to validate?

  • EU businesses selling B2B to other EU countries (intra-Community supplies)
  • Non-EU businesses (US, Canada, Israel, Australia) selling B2B services to EU customers. See the US SaaS guide for details.
  • Any business applying the reverse charge on their invoices

If you use a Merchant of Record (Paddle, Lemon Squeezy), they handle this for you. If you use Stripe, Mollie, Adyen, Braintree, or any standard payment processor, you handle this yourself.

How to implement reverse charge validation

The flow has five steps:

  • Step 1: Collect the customer's VAT number at checkout or signup
  • Step 2: Validate it against the relevant government database (VIES for EU, HMRC for UK)
  • Step 3: If valid, apply reverse charge (0% VAT). Add reverse charge wording to the invoice.
  • Step 4: If invalid, charge VAT at the applicable rate
  • Step 5: Store the validation result (valid/invalid, timestamp, consultation number if available)
import Vatly from "@vatly/node";

const vatly = new Vatly("vtly_live_your_api_key");

async function determineVatTreatment(vatNumber: string, customerCountry: string) {
  // Skip validation for B2C (no VAT number provided)
  if (!vatNumber) {
    return { reverseCharge: false, vatRate: getVatRate(customerCountry) };
  }

  const { data, error } = await vatly.vat.validate({ vatNumber });

  if (error || !data.valid) {
    // Invalid VAT number: treat as B2C, charge local VAT
    return { reverseCharge: false, vatRate: getVatRate(customerCountry) };
  }

  // Valid VAT number: apply reverse charge
  return {
    reverseCharge: true,
    vatRate: 0,
    companyName: data.company?.name,
    consultationNumber: data.consultation_number,
  };
}

Reverse charge for non-EU sellers

US, Canadian, and Israeli SaaS companies selling to EU businesses: the reverse charge applies. The EU buyer self-accounts for VAT. The non-EU seller invoices without VAT.

But the seller still needs to validate the buyer's VAT number to confirm they are a real business. Without validation, an individual could claim to be a business to avoid paying VAT. The seller would then be non-compliant.

VIES is freely accessible to non-EU businesses. Vatly wraps it (alongside HMRC for UK, the BFS UID Register for Switzerland, and more) so you never deal with SOAP APIs or OAuth flows.

Invoice requirements

When applying reverse charge, your invoice must clearly state it. Typical wording:

  • "Reverse charge: VAT to be accounted for by the recipient pursuant to Article 196 of Directive 2006/112/EC"
  • Both the seller's and buyer's VAT numbers must appear on the invoice
  • The invoice amount should be net (no VAT line)

Specific wording requirements vary by member state. Check with your accountant for your country's exact requirements.

Revalidation

VAT numbers can be deactivated, revoked, or changed. For one-time sales, validate at the time of the transaction. For subscriptions, revalidate periodically (monthly or quarterly is common).

Vatly's 25-day cache means repeat lookups within that window are instant and don't count against your quota.

Get started

Vatly's free tier includes 500 validations per month with no credit card required. Validate EU, UK, Swiss, Norwegian, and Australian numbers through the same endpoint.

Start validating for free →

Read the API documentation for integration details.

Frequently asked questions

Is VAT number validation legally required for the reverse charge?

Yes. Since January 1, 2020, a valid VAT number is a material requirement for applying the 0% rate on intra-Community supplies in the EU. Without it, you cannot legally zero-rate the transaction.

I'm a US SaaS company. Do I need to validate EU VAT numbers?

If you sell B2B to EU customers and apply the reverse charge (which you should, to avoid registering for VAT in each EU country), then yes, you need to validate the buyer's VAT number.

What happens if I don't validate and the number is fake?

You are liable for the VAT that should have been charged. Tax authorities can assess you retroactively for the unpaid VAT, plus interest and penalties.

How often should I revalidate?

For one-time sales, validate at the time of the transaction. For subscriptions, quarterly revalidation is a common practice. Vatly's cache makes repeat lookups fast.

Does the reverse charge apply to UK transactions after Brexit?

The UK has its own reverse charge rules. For services supplied by non-UK businesses to UK VAT-registered businesses, the UK buyer self-accounts for VAT. You should validate UK VAT numbers via HMRC, which Vatly handles through the same endpoint.