VAT Reverse Charge: What It Is and How It Works

The reverse charge mechanism shifts VAT accounting from the supplier to the buyer in cross-border B2B transactions. Here is what it means in practice and when it applies.

What is reverse charge?

Under normal VAT rules, the seller charges VAT to the buyer and remits it to their local tax authority. The buyer can then reclaim the VAT if they are VAT-registered. In cross-border transactions, this creates complexity: a seller would need to register for VAT in every country where their customers are located, collect at local rates, and file local returns.

The reverse charge mechanism solves this. When it applies, the supplier issues the invoice with no VAT charged (the invoice shows Reverse charge — VAT to be accounted for by the recipient or similar wording). The buyer then declares the VAT on their own return — as both output VAT owed and input VAT recoverable — netting to zero in most cases. The supplier never collects or remits the tax; the buyer handles it entirely in their home country.

For sellers, this means no obligation to register in the buyer's country. For buyers who can fully recover VAT, the cash-flow impact is neutral. It is the standard mechanism for most digital services and cross-border B2B trade within the EU.

When does reverse charge apply?

The general reverse charge rule under EU VAT Directive Article 196 applies when:

  • 1The supply is of services whose place of supply falls under the Article 44 general rule (taxed where the business customer is established).
  • 2The customer is a taxable person or a non-taxable legal person identified for VAT purposes.
  • 3The supplier is not established in the customer's member state — this covers both cross-border intra-EU supplies and supplies from non-EU businesses into the EU.

Reverse charge does not apply to sales to consumers (B2C) — those are taxed at the supplier's or, under OSS rules, the consumer's country rate. It also does not apply to purely domestic transactions.

Why the buyer's VAT number must be verified

Reverse charge is conditional on the buyer being a VAT-registered business. If a supplier applies the zero rate and the buyer's VAT number is invalid, cancelled, or simply made up, the supplier has effectively delivered a supply without charging VAT — and without a legal basis to do so. Tax authorities can then assess the supplier for the full VAT amount, plus interest and penalties.

This is not a theoretical risk. Tax authorities across all EU member states are required to verify reverse-charge invoices during audits. Suppliers and customers alike must retain supporting documentation showing the transaction qualifies for the reverse charge — including evidence that the customer is VAT-registered and that the supply falls under the Article 44 general rule. Having documented proof that you verified the buyer's VAT number in VIES at the time of the transaction significantly strengthens your position.

Practical rule: Never apply reverse charge to an invoice without first confirming the buyer's VAT number returns valid: true from VIES. Store the validation result (timestamp and check ID) alongside the invoice record.

How to verify a buyer's VAT number before applying reverse charge

To apply reverse charge correctly, you must verify that the buyer's VAT number is active in VIES at the time of invoicing. The vatnode API makes this a single HTTP call.

You can do a one-off check using the free VIES tool at vatnode.dev/check. For automated invoicing systems, use the API:

JavaScript — validate before invoicing
async function canApplyReverseCharge(buyerVatId: string): Promise<boolean> {
  const response = await fetch(
    `https://api.vatnode.dev/v1/vat/${encodeURIComponent(buyerVatId)}`,
    { headers: { Authorization: `Bearer ${process.env.VATNODE_API_KEY}` } }
  )

  if (!response.ok) {
    // VIES may be temporarily unavailable — fail safe: charge VAT
    return false
  }

  const result = await response.json()

  // Log the checkId for your invoice audit trail
  console.log(`VAT check ${result.checkId}: valid=${result.valid}`)

  return result.valid === true
}

// In your invoice generation logic
const reverseCharge = await canApplyReverseCharge(buyer.vatId)
invoice.vatRate = reverseCharge ? 0 : seller.localVatRate
invoice.reverseChargeNote = reverseCharge
  ? 'Reverse charge — VAT to be accounted for by the recipient'
  : undefined

The API response includes a checkId — a unique UUID for each validation — which you should store on the invoice. This gives you an auditable record that the check was performed and what the result was.

Automate your reverse charge validation

Use the free VIES check tool for one-off lookups, or integrate the vatnode API for automated validation in your invoicing or checkout flow.