What VIES is and why VAT verification matters
VIES, the VAT Information Exchange System, is a free European Commission service that confirms whether a VAT number is currently registered for intra-EU trade. It is the cheapest, fastest supplier check available, and it catches a specific, expensive class of fraud: invoices from companies whose VAT registration has been revoked, suspended, or was never valid for cross-border supply.
A VIES "valid" response confirms two things: the number exists in the supplier country's tax registry, and that number is authorized for intra-Community transactions. It does not confirm the company is solvent, that it will deliver, or that the person sending you the invoice has authority. It is a tax-compliance check, not a vendor-quality check.
Why it matters commercially: when your supplier's VAT number is invalid, the EU reverse-charge mechanism does not apply. You are on the hook to self-assess VAT on the transaction in your own country, usually without input credit. On a €50k invoice at 23% VAT, that is €11,500 of cash you are quietly financing until your auditor or tax office catches it, which, based on enforcement cycles across the EU, happens 12-24 months later, often with interest and penalties attached.
Three minutes on VIES, per supplier, before first payment. That is the math everyone should be running and most mid-market procurement teams still do not.
How to run a manual VIES check, 4 steps
Total time: under three minutes once you have done it twice.
Step 1: Go to the VIES site. ec.europa.eu/taxation_customs/vies. It is free, no account, no rate limits for normal human use.
Step 2: Select the supplier country and enter the VAT number without the country prefix. If the supplier's VAT is DE123456789, select Germany in the dropdown and enter 123456789 in the number field. Common mistake: pasting the full prefixed number into the number field, which returns "invalid" even for valid registrations.
Step 3: Read the response and compare identity fields. VIES returns one of three states: Valid, Invalid, or Service Unavailable. If Valid, it shows the registered legal name and address. Match this against the invoice or the contact the supplier gave you. Name mismatch is a red flag worth one more phone call, a real company sometimes has a trading name that differs from the VAT registration, and you want to know that before paying.
Step 4: Save the evidence. VIES returns a consultation number (Germany, Austria, France, and a few others only). Screenshot the response page including the consultation number and date. This is audit evidence if a tax inspector ever questions the transaction. Store it against the supplier record in your ERP or sourcing tool.
Do this once and it takes four minutes. Do it on your tenth supplier and it takes ninety seconds.
Open VIES
ec.europa.eu/taxation_customs/vies, free, no account, no rate limits for normal use.
Enter VAT number
Select the supplier country from the dropdown and paste the VAT number without the country prefix (e.g. 123456789, not DE123456789).
Match identity fields
VIES returns Valid / Invalid / Service Unavailable. On "Valid", compare the registered legal name and address against the invoice, name mismatch is a red flag worth one phone call.
Save the evidence
Screenshot the response with the consultation number and date. Store against the supplier record in your ERP, this is audit evidence if the tax office ever asks.
- Input VATCountry prefix + number
- VIES checkEU registry lookup
- ResultValid · Owner · Address
A missing certificate never drops a good maker. It lowers a score, and the score is a number you can argue with.
Country-specific VAT quirks (DE, PL, IT, FR)
The VIES response is uniform but VAT number formats and country behaviors are not. Four countries account for 70% of the common errors:
Germany: DE + 9 digits. Clean format, reliable VIES response. Quirk: Germany issues two VAT numbers, the Umsatzsteuer-Identifikationsnummer (USt-IdNr, starts with DE, used for intra-EU trade) and the Steuernummer (local tax number, used for domestic invoicing). Only the USt-IdNr goes into VIES. If a German supplier gave you a 10-11 digit number with a slash, that is the wrong one, ask for the USt-IdNr.
Poland: PL + 10 digits, no dashes. Poland requires a separate registration for intra-EU trade on top of regular VAT. A Polish supplier with a valid domestic VAT may still return "invalid" on VIES if they have not filed the VAT-R form to register for intra-Community supply. This is common for small suppliers who mostly sell domestically, they will need 7-14 days to register before you can onboard them as a cross-border supplier.
Italy: IT + 11 digits (includes check digit). Italian VIES is among the slower to update. A newly registered Italian supplier may show invalid for 2-4 weeks after registration. If your supplier insists the number is valid and you can see the registration confirmation, wait and retry, do not assume fraud on an Italian number that is 2 weeks old.
France: FR + 2 characters + 9 digits. The first two characters after FR can be letters or digits (a check key). Some systems reject letters in the "number" field; VIES handles them correctly but some third-party validators do not. If you are using a third-party API, test with a French number that has letters before rolling out.
Other countries you will meet regularly: Netherlands (NL + 12 chars ending in B and 2 digits), Belgium (BE + 10 digits, always starts with 0 or 1), Spain (ES + 9 chars, first or last can be letter). All uniform on VIES; just format-check before submission.
The dormant-VAT trap, walked through
A worked scenario, not a customer. We do not have a case file to show you and we are not going to dress one up as if we did. What follows is the dormant-VAT pattern as European tax authorities and trade insurers describe it, put into concrete numbers so the check at the end has something to bite on.
A mid-market electronics distributor in the Netherlands onboarded a new Spanish supplier for a one-off buy of consumer electronics sub-assemblies. €47k PO, 30% deposit, 70% on delivery. The deposit of €14.1k went out on a Tuesday.
What the buyer did check: supplier website (professional, updated, multilingual), product photos (plausible), email domain (matched the website), response time (prompt, English-speaking). What the buyer did not check: VIES. The supplier had provided a Spanish VAT number that looked correct in format.
What VIES would have shown: the number had been valid from 2019 to 2023 but was revoked in Q3 2023 after the registered company entered insolvency. The entity behind the website was a successor that had bought the domain, website, and old contact sheet from the administrator, but had never re-registered for VAT in Spain or anywhere else.
Deposit was wired. Product never shipped. Email went quiet after week 3. By week 6, when the buyer's accounting team filed the VAT return, the Spanish tax authority had already flagged the transaction as a missing supplier. The €14.1k deposit was gone; on top of that, the distributor owed €9.8k in self-assessed Dutch VAT on the deposit because the reverse-charge mechanism did not apply (the supplier was not VAT-registered). Total loss: €23.9k on a deposit, not even including the revenue miss from the un-delivered goods.
Cost of the check that would have stopped this: 180 seconds on VIES. One name in the response would not have matched the supplier's stated trading name. That mismatch alone, forget everything else, is enough to hold the deposit until the supplier explains it.
Three-minute checks feel tedious right up until they are not.
Automating VIES checks for 50+ suppliers at once
Manual VIES scales badly. At 10 suppliers it is fine; at 50 it is a day of clicking; at 500 (an AI-sourced campaign) it is a part-time job. Three practical options:
Option 1: VIES batch endpoint (direct, free). The European Commission exposes a SOAP API (checkVat) at ec.europa.eu/taxation_customs/vies/services/checkVatService. Rate limits are generous for reasonable use (roughly 1 request/second per IP). Your IT team can script a batch check from a CSV in about half a day. Downside: SOAP, no modern REST wrapper, and the EC does not publish SLAs.
Option 2: Third-party VAT validation services. Paid APIs like Vatstack, VatLayer, or VIES REST bridges wrap the EC service with REST, caching, and uptime monitoring. Typical cost €20-50/month for up to a few thousand checks. Useful if you have developer capacity but want to avoid SOAP.
Option 3: Sourcing platforms with built-in verification. Procurea runs VIES automatically on enriched EU suppliers that publish a VAT number; the score on each record reflects the VIES outcome and what the supplier's own pages say. It does not reflect trade-registry status, because we do not query trade registries. If your sourcing campaign surfaces 200 candidates, 200 VIES checks happen in parallel in the background, you see the result on the supplier card without clicking anything. This is the pattern for teams who do not want to maintain the integration themselves.
Whichever you pick, the rule is the same: no first payment without a VIES check in the last 60 days. Revocations happen; a number that was valid when you onboarded six months ago may not be valid today. Re-check on the event that matters, first invoice, first deposit, contract renewal, not just at onboarding.
472 suppliers across 8 briefs, 1053 rejections still on the record with the reason each one was given.