Why VIES Says a Valid VAT Number Is Invalid

21 Oct 2026

Why VIES Says a Valid VAT Number Is Invalid

A customer sends you a VAT number. You check it, and it’s invalid – but the business has a working website, a real address, and swears it’s registered. No typo, no VIES outage, no stale cache. The number just isn’t active for intra-EU transactions, and it may never be unless the business goes back to its tax authority and asks.

The ‘invalid’ that isn’t a typo, an outage, or stale data

Most failed-looking VAT checks come down to one of three boring things: wrong digits, a VIES hiccup that returns an error instead of an answer, or a change that hasn’t synced yet. Checking format versus checking validity rules out the first, handling VIES errors in code rules out the second, and VIES versus national VAT databases covers the third. None of that applies here. The number is well-formed, VIES answered without an error, and a recheck an hour later gives the same result. That’s a signal, not noise.

What a VIES ‘invalid’ can actually mean

The European Commission’s own guidance lists three distinct reasons a VAT number comes back invalid: the number doesn’t exist, it hasn’t been activated for intra-EU transactions, or the registration hasn’t been finalised. Only the first of those is ‘this VAT number is fake or mistyped.’ The other two describe a registration that isn’t switched on for cross-border trade in VIES’s eyes – often for a business that’s already trading at home.

It’s one of the standard reasons the Commission itself gives for an invalid result: ‘some EU countries require a separate registration for intra-EU transactions’. A number can sail through the national tax authority’s own domestic systems and still fail VIES, because VIES only reports what that separate registration says.

The domestic-only registration trap

The pattern is the same in every country that works this way: getting a VAT number and being allowed to trade across EU borders under it are two separate administrative steps. A business registers for VAT, starts invoicing domestically, and simply never files the second form – because nobody at the business realised there was a second form, or because they genuinely don’t do intra-EU business yet and the step wasn’t relevant at the time. Then a new cross-border customer or supplier runs a VIES check, and the result comes back invalid even though the VAT number itself is completely real.

Three documented cases below. We haven’t checked whether other member states behave the same way, so we’re not naming any beyond these.

Spain: a NIF-IVA needs a separate ROI registration

Per AEAT, a business established in Spain that wants to carry out intra-EU operations has to obtain a NIF-IVA by registering in the ROI (Registro de Operadores Intracomunitarios). That’s requested through the census declaration (modelo 036), ticking box 582 and giving the planned date of the first intra-EU operation in box 584. A domestic Spanish VAT number on its own doesn’t carry intra-EU status – the ROI registration is what makes it show up as active in VIES.

Italy: VIES inclusion isn’t automatic

Per Agenzia delle Entrate, a business or professional has to be included in the VIES archive to carry out intra-EU operations, and that inclusion isn’t something that happens on its own. It’s a choice made by ticking ‘Operazioni Intracomunitarie’ on form AA7 or AA9 at the time of registration – or, for a number already issued, requested afterwards through the Agency’s online services, either directly or through an intermediary. An Italian VAT number that works for every domestic invoice can simply never have opted in.

Poland: registering as a VAT-UE taxpayer

Per biznes.gov.pl, a business that wants to transact with EU counterparties has to register as a VAT-UE taxpayer using form VAT-R. If the business is already registered as an active (or exempt) VAT payer, this is just a VAT-R update, not a fresh registration. Once registered, the business uses its NIP with the ‘PL’ prefix for those transactions, and the same page says that from that point the business is visible in VIES. Skip that update, and a Polish NIP that works for every domestic invoice won’t show as active there.

Telling it apart from lag or a format mistake

Before concluding a number is domestic-only, rule out the cheaper explanations. Confirm the format is actually correct for the country – see VAT ID format versus validity for what ‘well-formed’ means per country. Then confirm VIES itself answered rather than erroring or timing out – see handling VIES errors in code. Also consider plain publication lag: a registration that changed yesterday doesn’t always reach every system at once, so VIES and a national database can briefly disagree on a number that’s actually fine. Lag clears on its own; a missing intra-EU registration doesn’t, however many times you recheck. If format and connectivity both check out and repeated rechecks keep returning a clean valid: false from VIES, a domestic-only registration is a real possibility worth raising with the business, not a bug to chase in your own integration.

What to do when it happens

A vatnode VAT check against GET /v1/vat/{vatId} returns HTTP 200 with valid: false for this case – it’s a correct answer, not an API error:

const res = await fetch(`https://api.vatnode.dev/v1/vat/${encodeURIComponent(vatId)}`, {
  headers: { Authorization: `Bearer ${process.env.VATNODE_API_KEY}` },
})

const data = await res.json()

if (!res.ok) {
  // VIES_UNAVAILABLE or UPSTREAM_TIMEOUT mean "no verdict yet", not "invalid".
  throw new Error(`vatnode request failed: ${data.error?.code ?? res.status}`)
}

// valid: false here means VIES itself says the number isn't currently
// active for intra-EU transactions — not that the check failed.
console.log(data.valid, data.source)

From there it’s a conversation, not a retry loop. Ask the customer whether they’re registered for intra-EU transactions specifically, not just domestically – their own adviser or tax office is who can confirm that and start the registration if it’s missing. Don’t treat a valid: false as proof of fraud; see the actual risk of invoicing against an invalid VAT number for what’s at stake if you proceed anyway. And if the number belongs to a sole trader rather than a company, be careful how you store and discuss it – it identifies a natural person, so it’s personal data, and in some countries the VAT number is built from the owner’s personal ID number.

Catching the moment it flips

A business that registers for intra-EU trade today won’t necessarily show as valid in VIES today – the European Commission notes that changes aren’t always reflected immediately in national databases, and so in VIES. Rather than asking the customer to ‘let you know’ and rechecking manually every few days, vatnode’s VAT monitoring lets you track a currently-invalid number and get a signed VAT_BECAME_VALID webhook on its next scheduled recheck once VIES starts reporting it as active – see the monitoring and webhooks guide for the setup. Monitoring accepts any format-valid VAT ID regardless of its current status, so you can start tracking the number the same day you get the invalid result. It’s available from the Starter plan up – see pricing for the current limits.

If you’re not monitoring yet, start with a plain VAT check to confirm the current status, or create a free account to get an API key – 100 requests a month, no card required – and run checks straight from your own backend as you work through this with the customer.

FAQ

Why does VIES say invalid if the business is clearly trading?

Because VIES only answers one question – is this VAT number currently active for intra-EU transactions. A business can be fully registered, invoicing, and compliant in its own country and still get an invalid result, because domestic VAT registration and intra-EU registration are two different things in some member states.

Do all EU countries require a separate registration for intra-EU trade?

Some do. The European Commission states plainly that some EU countries require a separate registration for intra-EU transactions. This post covers three documented cases – Spain, Italy, and Poland – where you have to opt in or register separately before VIES will show the number as active. Whether any other country works the same way isn’t something we’ve verified, so we don’t claim it here.

How long after registering does a VAT number show as valid in VIES?

It depends on the national tax authority that processes the registration, and we haven’t verified a general timeframe across countries. Don’t promise the customer a specific number of days – point them back to whichever authority handled the registration for a status update, and recheck the number yourself once they say it’s done.

A customer insists their VAT number is valid, but vatnode says it’s not. What do I do?

Go by the VIES result, not the customer’s assertion – a valid: false is a genuine answer from VIES, not an error on your side. Ask the customer to confirm with their own tax adviser or tax office whether they’re registered for intra-EU transactions specifically, not just domestically. If they register or fix the registration, recheck the number or set up monitoring so you’re notified on its next scheduled recheck.