Reverse charge VAT explained: when it applies, what it does to your invoice, and how to evidence it
Reverse charge shifts the VAT-accounting obligation from the seller to the buyer in cross-border B2B sales between EU member states. This guide covers when it applies, what changes on the invoice, the evidence requirements, and the domestic-reverse-charge variants that share the name.
TL;DR
- Reverse charge shifts the obligation to account for VAT from the seller to the buyer.
- Triggered by a valid, registered VAT number on the buyer side in a cross-border B2B EU sale.
- The seller invoices net of VAT with a "reverse charge" reference; the buyer self-accounts on their own return.
- A separate set of domestic-reverse-charge rules apply to specific high-fraud sectors (construction, scrap metal, mobile phones, integrated circuits) between two businesses in the same country.
What reverse charge does
Under normal VAT, the seller charges VAT to the buyer at the seller's local rate, collects it, and remits it to the tax authority. Reverse charge inverts that flow: the seller invoices net of VAT, and the buyer reports the VAT in their own return, both as input VAT (deductible) and output VAT (payable). For a fully VAT-registered buyer, the two cancel out; the buyer pays nothing extra.
The mechanism has two purposes:
- Avoids forcing the seller to register for VAT in the buyer's country. Without reverse charge, a German seller making one-off sales to a French buyer would have to register for French VAT, file French VAT returns, and remit French VAT collected. Reverse charge eliminates that overhead by moving the reporting burden to the buyer, who is already registered locally.
- Reduces VAT-fraud exposure on cross-border supplies. When the seller never collects the VAT, there is nothing for a fraudulent intermediary to disappear with. The buyer-side self-account flow is harder to abuse than a chain of intra-Community sellers each collecting and remitting.
When reverse charge applies
Three conditions must be met:
- B2B: both parties are VAT-registered businesses. A consumer buyer falls under different rules (typically OSS for B2C distance sales).
- Cross-border: seller and buyer are in different EU member states. A domestic sale between two German businesses is not reverse charge under the standard EU rule.
- Valid VAT number on the buyer side: confirmed through VIES (or HMRC for the UK, BFS for Switzerland, BRREG for Norway). A VIES check that returns
valid: falsemeans reverse charge does not apply; the seller must charge their domestic VAT.
Articles 138 (zero-rate on intra-Community supplies of goods) and 196 (recipient liable for VAT on B2B services) of the EU VAT Directive 2006/112/EC are the legal basis.
What changes on the invoice
Three things change when reverse charge applies:
- No VAT line item. The seller invoices net of VAT.
- Mandatory invoice note. EU rules require a reference such as "Reverse charge" or "VAT to be accounted for by the recipient" on the invoice. Article 226(11a) of the VAT Directive specifies the requirement, though the exact wording varies by member state.
- Both parties' VAT numbers. The seller's VAT number and the buyer's VAT number must both appear on the invoice. Without the buyer's VAT number, the supply cannot be zero-rated.
A typical reverse-charge B2B invoice line:
Subtotal: 1,000.00 EUR
VAT (0%): 0.00 EUR
Total: 1,000.00 EUR
Reverse charge: VAT to be accounted for by the recipient
(EU VAT Directive Article 196)Some invoicing systems (Stripe Invoicing, QuickBooks, Xero, Sage) auto-generate the reverse-charge note when the buyer's tax-exempt flag is set. Others require manual configuration of the invoice template.
How to evidence reverse charge
A B2B audit asks two questions about a zero-rated invoice:
- Was the buyer's VAT number valid at the time of supply?
- Did you exercise due diligence in confirming validity?
The audit-trail artifacts that answer both:
- A VIES
consultation_number(when present in the response) ties the lookup to a date and a result. EU member states recognize the consultation number as evidence of good-faith verification. See the consultation number glossary for the mechanic. - For German sellers, a BZSt qualified confirmation (
/v1/confirmin vatverify) is an alternative artifact that returns per-field match codes for name, street, postcode, and town. §18e UStG specifically requires this for VAT-free intra-EU supplies. See the BZSt §18e guide. - The raw VIES or HMRC response payload including the timestamp. Persist it with the invoice record, not just a derived "valid" boolean.
Retention requirements vary by member state but most require 6 to 10 years for VAT records. The consultation number and underlying response should be retrievable for at least the longest applicable retention period.
Domestic reverse charge: same name, different mechanism
Several EU member states apply a domestic reverse-charge regime to specific high-fraud-risk sectors between two businesses within the same country. The mechanism is the same (buyer self-accounts) but the trigger is different (specific sector, not cross-border).
Common sectors covered by domestic reverse-charge across EU member states:
| Sector | Countries that apply domestic reverse-charge |
|---|---|
| Construction services | Austria, Belgium, Czechia, Germany, Hungary, Ireland, Italy, Latvia, Lithuania, Netherlands, Slovakia, Slovenia, Spain, Sweden |
| Scrap metal | Most EU member states |
| Mobile phones, integrated circuits | Most EU member states |
| Gas and electricity (B2B) | Most EU member states |
| Cereals, oilseeds | Bulgaria, Czechia, Hungary, Italy, Romania, Slovakia |
| Construction subcontracting | Ireland (RCT regime), UK |
The sector lists are not unified across the EU; each member state publishes its own list under its national VAT law. A B2B invoicing engine that handles only cross-border reverse-charge will under-apply the rule for domestic supplies in these sectors.
The two regimes can compose. A Belgian construction service supplied to a French buyer is both:
- Cross-border intra-Community reverse-charge (Belgian seller, French buyer, different member states) under Article 196.
- Domestic-reverse-charge in scope under Belgian rules if the supply were domestic.
The cross-border classification dominates. The Belgian seller invoices net of VAT, the French buyer self-accounts under Article 196.
Reverse charge vs OSS
A common confusion: a cross-border sale to an EU consumer (B2C) is not reverse charge. It falls under OSS (the One-Stop-Shop scheme) once the EU-wide €10,000 threshold is crossed. The mechanism is different:
- Reverse charge (B2B cross-border): seller invoices net of VAT, buyer self-accounts.
- OSS (B2C cross-border): seller charges destination-country VAT, reports through a single OSS return in their home member state.
The decision tree at the seller's invoicing engine:
Is the buyer a business with a valid VAT number?
├─ Yes
│ └─ Is the buyer in a different EU member state?
│ ├─ Yes → reverse charge (zero-rate, "reverse charge" note)
│ └─ No → standard rate (or domestic-reverse-charge if in scope)
└─ No (consumer)
└─ Are intra-EU B2C sales above the €10,000 threshold?
├─ Yes → OSS (charge destination rate, report through OSS)
└─ No → standard rate (charge seller's domestic rate)vatverify's /v1/decide endpoint encodes this decision tree for B2B sales (the top half of the diagram). For B2C / OSS the inputs and evidence requirements are different and live in a separate flow.
Implementation patterns
A minimal reverse-charge implementation in code looks like this:
import { Vatverify } from '@vatverify/node';
const vat = new Vatverify(process.env.VATVERIFY_API_KEY!);
interface SaleInput {
sellerCountry: string;
buyerVatNumber: string;
}
async function reverseChargeApplies(sale: SaleInput): Promise<boolean> {
const result = await vat.validate({ vat_number: sale.buyerVatNumber });
if (result.data?.valid !== true) return false;
if (!result.data.country) return false;
return result.data.country !== sale.sellerCountry;
}For full tax-decision logic including the legal-basis annotation and the human-readable invoice note, the /v1/decide endpoint returns a structured payload:
const decision = await vat.decide({
seller_vat: 'IE6388047V',
buyer_vat: 'DE811569869',
});
// decision.data.charge_vat === false
// decision.data.mechanism === 'reverse_charge'
// decision.data.legal_basis === 'EU VAT Directive Article 196'
// decision.data.invoice_note === 'Reverse charge: VAT to be accounted for by the recipient'/v1/decide is currently on the Business plan; for stores with simpler needs the validate-then-branch pattern above works on every plan.
Common pitfalls
- Treating an invalid VAT number as a "soft failure" and zero-rating anyway. Every EU member state's tax authority can recover unpaid VAT (plus interest and penalties) from the seller if a zero-rated supply turns out to have an invalid buyer VAT number. The consultation number is the evidence that protects you; without it, the audit defaults to the seller's liability.
- Not re-validating across customer relationships. A buyer's VAT number that was valid at onboarding may be invalid six months later. Re-validate B2B customers at least quarterly.
- Mixing up cross-border and domestic-reverse-charge. Same name, different evidence requirements. Domestic-reverse-charge does not require VIES validation; it applies based on the supply's sector classification.
- Forgetting the invoice note. A reverse-charge invoice without the legally-required note is a non-compliant invoice. Some member states penalize this independently of whether the underlying supply was correctly classified.