Developer ToolsFree generatorPDF, Excel, Word exportEuropean Union

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.

Generated code
Download:

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.