EU VAT Number Validation and Trader Lookup
Pricing
Pay per event
EU VAT Number Validation and Trader Lookup
Checks EU VAT numbers against the Commission's own VIES service and returns the registered trader name and address. Tells an invalid number apart from a member state that did not answer, which the raw service does not. No key and no login.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Gregory Bolshakov
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Checks EU VAT numbers against the European Commission's own VIES service and returns the registered trader name and address.
The thing this does that the raw service does not
VIES answers with a boolean, and that boolean means two completely different things.
FR44732829320 isValid false INVALID the number is genuinely not realIE6388047V isValid false MS_UNAVAILABLE Ireland's register did not answer
Read the boolean and stop, and on a day when Ireland is offline you tell your finance team that a real customer's VAT number is fake. The invoice that follows carries VAT that should have been reverse charged, and nobody finds out until an audit.
So every row here has a status with three values: valid, invalid, or not-checked.
The raw boolean is still on the row as viesIsValid, next to the status that explains what
it means. The run summary lists every number that could not be checked, so you have a retry
list rather than a wrong answer.
Anything unexpected also lands on not-checked. An error code nobody has seen before is not
evidence that a number is bad.
A busy register is not an answer
Some member states cap how many checks their register answers at once, and that cap counts every caller in Europe, not just this Actor. France hits it a lot. Measured on 3 September 2026, one request at a time with six seconds between them, France answered "too many requests" on 6 of 8 tries and gave a real answer on the other 2.
So a number is asked again, up to four times, while VIES says it is busy. Two of three test
runs had the real answer by the second attempt. The attempts column says how many it took.
A row is only not-checked after those four tries, or when the register is down, which is a
different code and is not retried.
Numbers are never sent to one member state in parallel. Parallel checks sets how many countries run at once. A list that is all French numbers is checked one at a time, because sending four at once only adds to the queue that is rejecting them.
Germany returns no name, and that is correct
DE811569869 is valid and comes back with no trader name and no address. Germany does not
disclose those through VIES. A blank name on a German row is a complete answer, not a failed
lookup, and this Actor does not report it as one.
Country codes
Greece files under EL, not GR, and VIES rejects GR outright as not a member state.
Type either. If you type GR it is corrected and the row says so in
countryCodeCorrectedFrom, rather than being changed behind your back.
Northern Ireland is covered as XI. Great Britain is not covered at all any more.
Spaces, dots and dashes are stripped, so DE 811 569 869 works.
Re-checking a customer list
Turn on Only numbers whose status changed and each run returns what moved: a number that became invalid, or one that is new to your list.
A number VIES could not reach is never counted as a change, and never overwrites the status it had. An outage is not a customer deregistering, and putting that distinction in your history is the whole point.
Access
Free, no key, no login. Four member states are checked in parallel by default, and one member state is only ever asked one thing at a time.