Guide
Reverse Charge & Intra-EU B2B on Shopify: Goods vs Services Explained
Updated 2026-06-10
Reverse Charge & Intra-EU B2B on Shopify: Goods vs Services Explained
A business customer in another EU country places an order in your Shopify store and provides a VAT ID. You know you’re supposed to charge 0% VAT. But why, exactly, and what must the invoice say? This is where many merchants conflate two different mechanisms: the intra-Community supply of goods and the reverse charge for services. They both result in an invoice without VAT, but they rest on different legal articles, require different wordings, and map to different codes in e-invoice formats. Getting the distinction right matters: tax authorities and e-invoice validators check it, and a wrong exemption reference can cost you the zero-rating.
This guide walks through both cases for a German-established merchant, with the exact wordings, the EN 16931 categories, and the role of VIES validation.
First, the common ground
Both mechanisms apply to B2B transactions between businesses in different EU member states, and both require:
- Both VAT IDs on the invoice, yours and your customer’s. A B2B cross-border invoice without the customer’s VAT ID does not support the zero-rating.
- A valid customer VAT ID, which you should verify against VIES (the EU’s VAT Information Exchange System). More on this below.
- An explicit reference on the invoice explaining why no VAT is charged. An invoice that simply shows “0%” with no legal reference is non-compliant.
Where they differ is in what you supply and which rule shifts or removes the tax.
Case 1: Goods, the intra-Community supply (Art. 138, category K)
When you ship physical goods from Germany to a VAT-registered business in another member state, the supply is exempt (zero-rated) as an intra-Community supply under Article 138 of Directive 2006/112/EC, implemented in German law as § 4 Nr. 1b in conjunction with § 6a UStG. Your customer then self-accounts for acquisition VAT in their own country.
The invoice wording
Your invoice must reference the exemption. The established wordings:
- German: „Steuerfreie innergemeinschaftliche Lieferung gem. § 4 Nr. 1b i. V. m. § 6a UStG”
- English: “VAT-exempt intra-Community supply of goods, Art. 138 Directive 2006/112/EC”
In e-invoice formats
In EN 16931-based formats (ZUGFeRD/Factur-X, XRechnung), an intra-Community supply of goods is VAT category K, with a rate of 0 and the exemption reference carried in the tax breakdown. Category K exists specifically for intra-Community supplies. It is not the same as the generic zero-rate (Z) or exempt (E) categories, and validators distinguish them.
The substantive conditions
Zero-rating goods is conditional. For a German supplier, the conditions are:
- A valid foreign VAT ID of the customer, from another member state, used for the purchase.
- Filing the supply in your ZM (Zusammenfassende Meldung, the EC Sales List). Since the 2020 “Quick Fixes”, a correct ZM filing is a substantive condition of the exemption, not a formality.
- Evidence of transport: proof that the goods physically left Germany for the other member state (shipping documents, carrier confirmations).
Miss any of these and the tax office can deny the exemption retroactively, turning your 0% sale into a sale with German VAT you never collected.
Case 2: Services, the reverse charge (Art. 196, category AE)
When you supply services (not goods) to a business in another member state, say design work, software services or consulting, the place of supply for B2B services is generally the customer’s country. Under Article 196 of Directive 2006/112/EC the customer becomes liable for the VAT there. You issue an invoice without VAT; the customer self-assesses it in their own VAT return. This is the reverse charge in the strict sense.
The invoice wording
Here the law is unusually specific about the minimum: Article 226(11a) of the VAT Directive prescribes that the invoice must carry the words “Reverse charge”. That exact mention is the legal minimum. A fuller, customer-friendly wording used in practice:
- German/English combined: „Steuerschuldnerschaft des Leistungsempfängers / Reverse charge. VAT to be accounted for by the recipient, Art. 196 Directive 2006/112/EC”
In e-invoice formats
Reverse-charge services map to VAT category AE with rate 0, and the structured exemption reason code VATEX-EU-AE. Again: AE is its own category. Using K, Z or E for a reverse-charge service is a validation and classification error.
Why the distinction matters in practice
| Goods (intra-Community supply) | Services (reverse charge) | |
|---|---|---|
| Legal basis | Art. 138 Directive 2006/112/EC (§ 4 Nr. 1b, § 6a UStG) | Art. 196 Directive 2006/112/EC |
| Mechanism | Supply is exempt; customer pays acquisition VAT | Tax liability shifts to the customer |
| EN 16931 category | K | AE (reason code VATEX-EU-AE) |
| Required wording | ”VAT-exempt intra-Community supply of goods, Art. 138…” | Minimum: “Reverse charge” (Art. 226(11a)) |
| Extra conditions | Valid foreign VAT ID, ZM/EC Sales List, transport evidence | Valid foreign VAT ID |
| Both VAT IDs on invoice | Yes | Yes |
For a typical Shopify merchant selling physical products, goods/category K is your everyday case. The services/AE case appears when you invoice things like service fees or digital services B2B. Mixing them up, for example printing “Reverse charge” on a goods shipment to France, cites the wrong legal basis for your zero-rating and misclassifies the transaction in the structured XML.
VIES validation: your good-faith evidence
Everything above hinges on the customer’s VAT ID being valid at the time of the transaction. The EU provides VIES for exactly this check, including a REST API (POST https://ec.europa.eu/taxation_customs/vies/rest-api/check-vat-number).
Practical points that matter for a store:
- Validate at capture, the moment the customer enters the VAT ID at checkout, not days later when you issue the invoice. A customer whose VAT ID fails validation should be treated as B2C (charged VAT).
- Store the consultation number. VIES offers a qualified check (
checkVatApprox) where you supply your own VAT ID as requester and receive a consultation number. Keep it as good-faith evidence that the ID was valid when you checked. - Plan for downtime. Individual member-state registries behind VIES do go offline (observably so), and there is regular maintenance early Monday mornings (UTC). A resilient setup caches prior results, re-validates periodically, and degrades gracefully. It should never hard-block your checkout because a national registry is down.
Checklist for your Shopify store
- Capture the VAT ID at checkout and validate it via VIES before treating the sale as B2B.
- Classify correctly: physical goods are an intra-Community supply (K, Art. 138); services fall under the reverse charge (AE, Art. 196).
- Print the exact wording and both VAT IDs on every such invoice.
- Keep transport evidence for goods, and file your ZM/EC Sales List on time. It’s a condition of the exemption.
- Use the right categories and VATEX codes in ZUGFeRD/XRechnung output, and validate the files before sending.
FAQ
My EU business customer has no VAT ID. Can I still zero-rate?
No. Without a valid VAT ID from another member state, treat the sale as B2C and charge VAT (for distance sales above the €10,000 EU threshold, the destination country’s rate via OSS).
Is “reverse charge” the right wording for goods shipments?
No. For goods the correct reference is the intra-Community supply exemption (Art. 138 Directive 2006/112/EC / § 4 Nr. 1b, § 6a UStG). “Reverse charge” (Art. 196) is the wording for cross-border B2B services.
What if VIES says the VAT ID is invalid but my customer insists it’s correct?
Some registries lag or go down. Re-check later and keep the consultation number when it validates. Until you have a successful validation, the safe treatment is B2C with VAT.
What is category K vs AE in e-invoices?
EN 16931 VAT categories: K marks an intra-Community supply of goods, AE marks reverse-charge (with exemption reason code VATEX-EU-AE). Validators check that the category, the 0% rate and the exemption reference are consistent.
Do I still need to file anything if I charge 0%?
Yes. Intra-Community supplies of goods must be reported in your ZM (EC Sales List), and correct filing is a substantive condition of the exemption.
Faktwise handles this classification automatically for Shopify stores: the customer’s VAT ID is captured at checkout and validated against VIES (with the consultation number stored as evidence), each order is assigned the correct scheme, either intra-Community supply (K) or reverse charge (AE), with the exact legal wording and both VAT IDs on the invoice, and the resulting ZUGFeRD 2.4 or XRechnung 3.0.2 file is checked against the official validators before it reaches your customer. Free for up to 5 invoices a month, then €19/month flat.