VIES · VAT validation · Shopify

VIES VAT validation for Shopify: how to check an EU VAT number — and prove you did

Last updated 27 July 2026

A business customer in another EU country types a VAT number into your Shopify checkout, and your store drops the VAT to zero. That's reverse charge — and it is only legitimate if the number is real. This is a practical guide to VIES: what it actually checks, why the zero rate depends on it, what the German rules add on top, what to keep as evidence, and how to stop an unverified number from turning into an invoice you can't defend.

What VIES actually is

VIES — the VAT Information Exchange System — is a service run by the European Commission for checking whether an EU VAT identification number is valid for intra-EU trade. The important detail, and the one that explains most of its odd behaviour: VIES holds no database of its own. Every query is forwarded to the tax administration of the country that issued the number, and their answer is passed back to you in real time.

That has three consequences worth knowing before you build anything on it:

In one line: VIES answers one narrow question — "is this VAT number registered and active for cross-border EU trade right now?" — and nothing else. Everything about who your customer is, you still have to establish yourself.

Why it matters: no valid number, no reverse charge

When you sell to a VAT-registered business in another EU country, you normally invoice at 0% VAT and the buyer accounts for the tax in their own country. That's the reverse charge, and it is the reason your margin calculation and your invoice look the way they do.

Since the EU's 2020 "quick fixes", the buyer's valid VAT identification number — issued by a member state other than yours — is a substantive condition for zero-rating the supply, together with correctly reporting it in your recapitulative statement (the EC Sales List; Zusammenfassende Meldung in Germany). It is no longer a formality you can fix afterwards.

Get it wrong and the exposure is yours, not the buyer's. If the number turns out to be invalid, the tax authority can refuse the zero rate and assess the VAT against you as the seller — often years later, when you can no longer go back and charge the customer for it. On a run of B2B orders that is a real, compounding liability, which is why the check belongs in the order flow rather than in a quarterly clean-up.

Germany adds a second step: the qualified confirmation

If you're a German seller — and if you're reading this for the 2027 mandate, you probably are — the standard EU check is not the end of it. Germany's Bundeszentralamt für Steuern (BZSt) operates its own confirmation procedure for foreign VAT numbers, in two flavours:

CheckWhat it tells you
Simple confirmation
(einfache Bestätigungsabfrage)
Whether the VAT number is valid at the time of the query. The same narrow question VIES answers.
Qualified confirmation
(qualifizierte Bestätigungsabfrage)
Whether the company name, legal form, address and postcode you submit match the details registered against that number — returned field by field. This is the one German auditors expect to see for regular customers, and the BZSt can issue an official confirmation of the result for your records.

The practical rule German advisers give: run a qualified confirmation when a new B2B customer starts buying, repeat it periodically for ongoing relationships, and keep the confirmation. A valid-number screenshot with no name match, and no date, is thin evidence when someone asks in 2029 what you knew in 2026.

Manual checking vs automated checking

You can do all of this by hand. The Commission publishes a public VIES lookup page, the BZSt has its own online form, and for a store doing two B2B orders a month that is a perfectly reasonable answer.

It stops being reasonable quickly, and always for the same reasons:

Manual lookupAutomated check
When it happensWhenever someone remembers — often after the invoice went out at 0%.At the moment the order is placed, before anything is issued.
EvidenceA screenshot in a folder, if you're diligent. Usually nothing.Result, timestamp and reference stored against the order automatically.
TyposRe-typed by a human into a second window. Country prefixes get dropped.The exact string on the order is what gets queried.
Service downtime"It didn't work" → the check quietly never happens.Retried, and the invoice is held until there's a real answer.
Re-checkingNever happens for repeat customers.Re-run on a schedule, or on each new order.

The failure mode with manual checking is rarely a wrong answer. It's no answer at all — an invoice at 0% VAT that nobody ever verified, discovered during an audit.

What to store — and for how long

Treat the VIES result as part of the invoice record, not as a transient API response. For each check, keep:

Keep it for as long as you keep the underlying invoice. In Germany that is eight years for invoices under §14b(1) UStG, shortened from ten with effect from 1 January 2025; the ten-year period in §147(3) AO covers the books, which is a different set of records. Build for the long horizon rather than for this quarter. And keep it linked to the order: evidence you can't connect to a specific supply is evidence you'll struggle to use.

The mistakes that actually cost money

How Zeppol validates — and gates the invoice

Zeppol treats the VAT check as a precondition of the invoice, not a nice-to-have field. For each B2B order:

StepWhat happens
1 · CaptureThe buyer's company details, country and VAT number are taken from the order and stored against the customer — with a Peppol ID too, where one is used.
2 · ValidateThe number is checked, and the outcome is recorded on the customer record together with when it was checked — not just a boolean floating free of a date.
3 · ClassifyZeppol works out whether this is genuinely a cross-border intra-EU B2B supply — both parties in the EU, in different member states, buyer holding a VAT number — before reverse charge is even considered.
4 · GateIf that situation applies but the number is not validated, the invoice is blocked, with a plain reason: the VAT number was not validated, so intra-EU reverse charge cannot be applied. Validate, then re-issue. No silent 0% invoice.
5 · Invoice correctlyWhere reverse charge does apply, the invoice carries 0% with the right EN 16931 VAT category code and the legal note — "Reverse charge — VAT to be accounted for by the recipient (Art. 196 EU VAT Directive 2006/112/EC)" — and net, VAT and gross reconcile to the cent.

That last point is where format tools and compliance tools part ways. Producing a valid EN 16931 file is a solved problem; deciding, per order, whether this supply may be zero-rated — and refusing to issue when it may not — is the part that keeps you out of trouble.

Honest scope: Zeppol is not a tax suite. It doesn't file your VAT returns, doesn't submit your EC Sales List, and doesn't replace your accountant. It makes sure the invoice leaving your Shopify store is correct, evidenced and compliant — and stops the ones that aren't.

Frequently asked questions

What is VIES?

The European Commission's VAT Information Exchange System — a service for checking whether an EU VAT number is valid for intra-EU trade. It holds no database itself: each query goes to the issuing country's tax administration and their answer comes back to you, valid for the moment you asked.

Do I have to check my buyer's VAT number before applying reverse charge?

In practice, yes. Since the 2020 EU quick fixes, holding a valid VAT number issued by another member state is a substantive condition for zero-rating an intra-EU supply, alongside reporting it in your EC Sales List. If it's invalid and you can't show you checked, the VAT can be assessed against you as the seller.

Can Shopify validate EU VAT numbers on its own?

Not for a standard store. Shopify can collect a VAT number and its B2B features can exempt a company from tax, but there's no built-in VIES lookup that verifies the number, records when it was checked, or holds the invoice when the check fails. That comes from an app or your own process.

What should I store as evidence of a VIES check?

The exact number queried, the country code, the timestamp, the result, and any consultation or request identifier the service returns — plus the BZSt confirmation if you used Germany's qualified procedure. Keep it linked to the order, for as long as you keep the invoice (eight years in Germany under §14b(1) UStG since 1 January 2025; the ten-year period covers the books, not invoices).

What happens if VIES is unavailable when the order comes in?

Member state systems go down for maintenance and VIES returns "unavailable", which is not the same as "invalid". Retry rather than deciding; hold the invoice until you have a real answer instead of issuing it at 0% on an assumption.

Is a valid VIES result the same as knowing my customer is a business?

Nearly. It confirms the number is registered for intra-EU trade right now. Some countries also return the registered name and address to match against your order; others don't. Confirming the number actually belongs to the customer you're invoicing is still on you — which is what Germany's qualified confirmation is for.

Keep reading

This guide is general information for Shopify merchants, not legal or tax advice. Rules, thresholds and evidence requirements vary by country and change over time — confirm your obligations with a qualified tax adviser.

E-invoices from your Shopify B2B orders

Zeppol turns every B2B order into an EN 16931 document, checks it against the EU and the German rules, and sends it over Peppol or by email. Join the list and I'll be in touch before the deadline.