B2B vs B2C: two different tax worlds
For European VAT you always need to start from a clear distinction: B2C ≠ B2B. Everything relating to the €10,000 OSS threshold, IOSS and sales to end consumers (private individuals) is the B2C world; sales between VAT-registered businesses, on the other hand, follow rules based on reverse charge and intra-community B2B transactions, with no connection to OSS at all.
If you sell online as a company and deal with both private individuals and other EU businesses, you need to manage two tax logics in parallel:
- B2C sales → possible OSS, the customer’s country’s VAT rate, the €10,000 threshold;
- B2B sales → intra-community invoicing without VAT (if the customer has a valid VAT number) and reverse charge in the customer’s country.
If you’re not yet clear on the B2C part, it’s worth reading first: E-commerce VAT thresholds 2025-2026: OSS, ViDA and IOSS updates.
Checking the VAT number via VIES
The number one condition for treating a sale as intra-community B2B is that the customer provides you with a valid VAT number in their country. Checking it isn’t just about “trusting” — you need to use the European Commission’s VIES (VAT Information Exchange System) or a checker officially relying on VIES.
How VIES works in practice
When you enter an EU VAT number into VIES:
- you select the country (e.g. DE for Germany, FR for France);
- you enter the VAT number your customer gave you;
- VIES queries that customer’s country’s VAT register in real time;
- you get one of these outcomes:
- Valid: an active number enabled for intra-community transactions;
- Invalid: a non-existent number or one not enabled for intra-EU transactions;
- Unavailable: the national system isn’t responding (e.g. maintenance).
Best practice:
- run the check at the time of the order, or in any case before issuing the invoice;
- keep a screenshot or PDF of the VIES result (date, time, number checked);
- periodically repeat the check for recurring customers (e.g. once a year).
If the number comes back invalid, you can’t treat the sale as intra-community B2B without VAT: you’ll need to apply B2C rules (OSS or local VAT).
How to issue an intra-community B2B invoice
When the customer’s VAT number is valid on VIES, you can issue an invoice without VAT with specific legal wording.
Minimum content of the intra-community invoice
The EU B2B invoice must show:
- your VAT number (e.g. IT12345678901);
- the customer’s VAT number (e.g. DE987654321);
- a description of the goods/services supplied;
- the taxable amount;
- no VAT shown (gross amount = net amount);
- legal wording such as:
- “Non-taxable transaction under Art. 41, D.L. 331/1993” or
- “Reverse charge – Art. 196 Directive 2006/112/EC”.
On the Italian e-invoice (SDI):
- document type: TD01 (standard invoice);
- transaction nature: N3.2 – intra-community supplies (for goods) or N3.1 depending on the case;
- the XML file is transmitted normally via SDI like any other invoice.
Quick example
You sell €1,000 of goods to a German customer with a valid VAT number:
- taxable amount: €1,000;
- VAT: €0;
- wording: “Intra-community supply Art. 41 D.L. 331/93 – reverse charge borne by the buyer”;
- nature: N3.2.
The German customer will record the invoice in their own country using the reverse charge mechanism (input and output VAT).
Reverse charge on cross-border B2B sales
From an EU VAT perspective, two principles apply to most intra-community B2B transactions:
- taxation happens in the destination country (where the customer is established);
- VAT is settled by the customer via reverse charge.
As the seller, you don’t pay VAT on that transaction, but you still need to:
- issue an invoice without VAT with the correct wording;
- record the transaction in the sales ledger;
- include it in your VAT returns and Intrastat forms.
To learn more about the mechanism, this article can help: VAT reverse charge: when it applies in European e-commerce.
Intrastat: when it comes into play
Cross-border B2B sales don’t stop at the invoice: for many EU countries the Intrastat form is also mandatory, capturing the flows of goods and services between member states. In Italy, Intrastat is managed by the Agenzia delle Dogane e dei Monopoli and covers:
- INTRA 1: intra-community B2B supplies (sales);
- INTRA 2: intra-community B2B acquisitions.
Every country has different thresholds for the filing obligation (e.g. €350,000 for Italy on the arrivals side, different thresholds for dispatches). Once the threshold is exceeded, you generally need to keep filing Intrastat until a full calendar year passes below the threshold.
What this means for an e-commerce seller
If you regularly sell B2B to EU customers (e.g. via Amazon Business, or direct contracts with VAT-registered businesses), you need to:
- track the total volume of intra-community supplies by country;
- check whether you exceed the Intrastat threshold in your country;
- coordinate with your accountant on the frequency: monthly or quarterly.
If you also sell B2C, remember that Intrastat covers B2B, while OSS covers B2C.
B2B marketplaces: the Amazon Business case
Amazon isn’t just B2C. With Amazon Business you can sell to customers with a verified VAT number buying in B2B mode.
In Amazon’s VAT Transaction Report:
- B2B sales have the
buyer-vat-numberfield populated; - the transaction type is still a SALE, but it must be treated as B2B, not B2C.
The problem is that Amazon doesn’t automatically prepare an “Intrastat return for you”: it just provides the raw data.
How VATManager handles Amazon B2B
VATManager, reading the VAT Transaction Report:
- identifies rows with a populated
buyer-vat-numberand separates them from B2C sales; - reconstructs, by country, the volume of intra-community B2B sales;
- prepares a B2B report to hand to your accountant as the basis for Intrastat and the annual VAT return.
In parallel, B2C sales stay in the OSS channel described in: VAT OSS: what it is and how it works for Amazon sellers.
Common mistakes in cross-border B2B sales
The most common mistakes we see among e-commerce sellers:
- Applying Italian VAT on B2B sales to EU customers with a valid VAT number (this exposes you to double taxation or disputes);
- Not checking VIES before issuing an invoice without VAT;
- Treating as B2C sales that are actually B2B (because the customer gave you the VAT number late);
- Forgetting Intrastat when you exceed the thresholds for supplies and/or acquisitions;
- Confusing OSS with B2B: putting B2B sales into OSS returns, which should only contain B2C.
A concrete solution is to separate the flows at the source, in your software:
- the B2C flow (destined for OSS);
- the B2B flow (destined for reverse charge, Intrastat, the annual VAT return).
Frequently asked questions
1. If an EU customer doesn’t give me a VAT number, can I still invoice without VAT? No. If you don’t have a valid VAT number verified on VIES, the sale must be treated as B2C (applying OSS or local VAT rules). Applying B2B rules without a valid VAT number exposes you — not the customer — to tax risk.
2. Do I always need to file Intrastat for every single EU B2B sale? No, Intrastat kicks in when you exceed certain annual or monthly thresholds set by each country. In Italy, for example, there are specific thresholds for arrivals and dispatches; once exceeded, you need to file periodic Intrastat returns, including “nil” returns for months with no transactions.
3. Do B2B sales count towards the €10,000 OSS threshold? No. The OSS threshold only concerns B2C sales to EU consumers, not sales between businesses (B2B). B2B follows the logic of reverse charge and intra-community invoicing.
4. Doesn’t Amazon handle everything for me on Amazon Business? Amazon helps with reports, but the responsibility for correctly applying the VAT rules, checking VAT numbers and filing Intrastat remains yours (or your accountant’s). Tools like VATManager exist precisely to translate Amazon’s reports into usable tax data.