EU VIES VAT Number Validation SOAP Request Generator
Before you zero-rate a sale to another EU member state you need to confirm the customer's VAT number is active in VIES. This generator produces the SOAP request you can paste into a REST client, an ERP integration or a scheduled script.
Fill in
Greece uses EL, not GR. Northern Ireland goods use XI. Great Britain (GB) is not in VIES.
Digits and letters only, no spaces or dots.
Used by checkVatApprox so VIES returns a consultation number.
checkVat request (valid or not valid)
POST https://ec.europa.eu/taxation_customs/vies/services/checkVatService
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
<soapenv:Header/>
<soapenv:Body>
<urn:checkVat>
<urn:countryCode>DE</urn:countryCode>
<urn:vatNumber>123456789</urn:vatNumber>
</urn:checkVat>
</soapenv:Body>
</soapenv:Envelope>checkVatApprox request (returns a request identifier as proof)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
<soapenv:Header/>
<soapenv:Body>
<urn:checkVatApprox>
<urn:countryCode>DE</urn:countryCode>
<urn:vatNumber>123456789</urn:vatNumber>
<urn:requesterCountryCode>NL</urn:requesterCountryCode>
<urn:requesterVatNumber>987654321B01</urn:requesterVatNumber>
</urn:checkVatApprox>
</soapenv:Body>
</soapenv:Envelope>Verify the endpoint and WSDL on the European Commission VIES page before going live, as the service has been modernised over time and a REST interface also exists. Store the response (valid flag, name, address, request identifier and timestamp) as audit evidence for zero-rated intra-community supplies. Treat a timeout or MS_UNAVAILABLE fault as 'not checked', never as 'invalid'.
Automate VAT number checks in your ERP
Optional: a short review of how to run VIES validation inside your customer master and sales order flow.
Optional. The tool and every export work without this. No spam.
How to use the generator
Choose the member state prefix, type the VAT number without that prefix, and copy the checkVat envelope. Send it as an HTTP POST with a text/xml content type. The response contains a valid true or false flag, plus the registered name and address for most member states. If you want VIES to give you a consultation identifier that you can keep as evidence, use the checkVatApprox block and enter your own VAT number as the requester. Paste the output into Postman, SoapUI, curl or a PowerShell or Python script that loops over your customer master.
- Greece uses the prefix EL in VIES, not GR.
- Northern Ireland businesses trading in goods use XI; Great Britain numbers are not validated in VIES.
- Remove spaces, dots and the country prefix from the number field.
Why validation matters for manufacturers
A business-to-business supply of goods to another member state is generally zero-rated only if the customer is VAT registered and the goods leave your country. Tax authorities expect you to hold a validated VAT number, transport evidence and a correct invoice. If the number turns out to be invalid, the supply can be reassessed as domestic and you owe the VAT. Running VIES checks at customer creation and again before each shipment batch is a cheap control. Many ERPs only check the format of the number, which does not prove that the registration is active.
Reading the response and common mistakes
A valid response includes the country code, VAT number, request date and the valid flag. Some member states return the name and address as '---' because they do not disclose it, so do not treat missing names as a failure. The most common mistakes are sending the number with the prefix still attached, using GR instead of EL, checking only once at onboarding, and failing to log the result. Also remember that VIES availability varies by member state, so build a retry with a daily limit and a manual review queue for numbers that could not be checked.
- Log request date, result and identifier against the customer record.
- Re-validate active customers at least before each quarter-end VAT return.
- Handle service unavailable faults as a retry, not as a rejection.
Frequently Asked Questions
Is VIES validation legally required?
It is not a single legal requirement for every case, but tax authorities in most member states expect you to verify the customer's VAT number to apply the zero rate on intra-community supplies. VIES is the standard evidence source, and keeping the result on file protects you in an audit.
Why does VIES return valid but no company name?
Some member states do not release the registered name or address through VIES for privacy reasons, so the fields come back empty or as dashes. The valid flag is still the key result. Compare the name on the order with your own records instead.
Can I validate UK VAT numbers in VIES?
No. Great Britain numbers left VIES after the transition period ended. Northern Ireland businesses dealing in goods can be checked with the XI prefix. For GB numbers use the HMRC VAT number check service instead.
How often should I re-check VAT numbers?
Check at onboarding, before the first zero-rated shipment, and again on a regular cycle such as quarterly for active accounts. A registration can be cancelled at any time, so a check from three years ago does not support today's supply.
If you want VIES checks wired into customer creation and sales order release in your ERP, with the evidence stored automatically, we can build that as a small integration and review it with your finance team.
Related Tools
EU VAT ID Validation Log Worksheet
An editable log of customer VAT number checks with country, date, result, consultation number and annual sales at risk.
Country & TaxEU VAT ID Number Format Reference
Format patterns for EU VAT numbers by country, ready to turn into validation rules in your customer and supplier master.
Compliance & ContractsEU Intra-Community Supply Evidence File Template
A per-shipment evidence record for zero-rated B2B supplies of goods to another EU member state: VAT ID check, transport proof and sign-off.
Country & TaxIntrastat Nature of Transaction and Transport Mode Codes Reference
A searchable reference of the EU Intrastat nature of transaction codes and mode of transport codes used when setting up ERP movement types.
More Developer Tools tools
See all- SAP Sales Order ABAP SELECT Generator (VBAK, VBAP, VBFA)
- SAP Sales Order Create BAPI ABAP Generator (BAPI_SALESORDER_CREATEFROMDAT2)
- SAP ABAP Open Items SELECT Generator
- SAP ACDOCA SQL Query Generator
- SAP QM Inspection Lot ABAP SELECT Generator
- SAP Quality Notification Pareto SQL Query Generator
- SAP QM Usage Decision BAPI Skeleton
- ABAP Custom Exception Class Generator
- ABAP Unit Test Class Generator