W System / Blog / WooCommerce EU VAT number validation with VIES (free plugin)
WooCommerce EU VAT number validation with VIES: free plugin, reverse charge and audit proof
In short: if you sell B2B from a WooCommerce store to businesses in other EU countries, you normally zero-rate the sale only when the buyer gives a valid VAT number, and you should keep proof that you checked it in VIES, the European Commission's VAT number service. This page shows what a checkout VAT check has to do, the traps (VIES outages, GR vs EL, Northern Ireland XI), and a free GPL plugin that does it: it checks the number at checkout, removes VAT for valid cross-border EU buyers, and stores the VIES result on the order. Not tax advice.
What a WooCommerce VAT check needs to do
- Check the number live in VIES, not only its format. A well-formed number can be deregistered.
- Match the prefix to the billing country (with GR or EL for Greece and XI for Northern Ireland goods).
- Remove VAT only when it applies: a valid number from an EU country other than your store's base country. Domestic B2B sales keep local VAT.
- Keep the evidence: the VIES status, the registered name, the date and, when you send your own VAT number as requester, the VIES consultation number.
- Have a rule for VIES outages: charge VAT, apply reverse charge and re-check later, or block checkout.
Why the record matters: under the EU VAT Directive (2006/112/EC) an intra-EU supply of goods is exempt when it goes to a taxable person in another member state, and since the 2020 "quick fixes" (Directive 2018/1910) a valid VAT number of the buyer, communicated to you, is a condition for that exemption. For most B2B services the customer self-accounts under the reverse charge. Your accountant decides how this applies to your shop.
The free plugin: W System EU VAT Check for WooCommerce
Disclosure: W System, which publishes this page, makes this plugin and the API it calls. It adds an "EU VAT number" field to the classic checkout, checks it in VIES through the W System API, applies the B2B reverse charge for valid cross-border EU numbers, and writes the VIES consultation number, status, company name and check date into the order meta, an order note, the admin order screen and the order emails. It is HPOS compatible and needs no account: the free tier covers 20 checks a day per server IP, with a 24-hour cache per number.
Download the plugin zip (v1.0.0) · source on GitHub (GPLv2 or later)
Install in two minutes
- Download
w-system-eu-vat-check.zipfrom the GitHub release. - In WordPress go to Plugins, Add New, Upload Plugin, choose the zip and activate it (WooCommerce must be active).
- Open WooCommerce, Settings, Tax, EU VAT validator. Optionally enter your own EU VAT number to get VIES consultation numbers, and pick what happens for invalid numbers and VIES outages.
- Place a test order with a known valid number from another EU country and check the order note.
What the check returns
The plugin calls GET https://api.wsystem.dev/verify?vat=…. Real response from the live API on 27 October 2026 (shortened), for Google Ireland's published VAT number:
{
"vat": "IE6388047V",
"status": "valid",
"valid": true,
"name": "GOOGLE IRELAND LIMITED",
"country_code": "IE",
"source": "VIES (European Commission)"
}
Building your own integration instead? The same endpoint works from any language; see the VAT validation API page and how to handle VIES outages.
Questions and answers
Do I need an account or API key?
No. Every plugin feature works without one. The W System API free tier allows 20 VIES checks per day per server IP address, and the plugin caches each result for 24 hours. An optional key only raises that daily quota.
What happens when VIES is down?
VIES answers MS_UNAVAILABLE or times out several times a week for some member states. You choose in the settings: charge VAT, apply reverse charge and re-check later, or block checkout. Running out of the free daily quota is treated the same way.
Does it work with the block-based Checkout?
Version 1.0 supports the classic (shortcode) checkout. Block checkout support is planned.
Is it on WordPress.org?
Not yet; the directory review is pending. Until then, install the zip from the GitHub release (Plugins, Add New, Upload Plugin). The code is GPLv2 or later.
Which data leaves my store?
Only the VAT number the customer typed, your own store VAT number if you entered it (so VIES returns a consultation number), and the API key if you set one. No names, addresses, emails or order contents are sent.
Sources
- Council Directive 2006/112/EC (EU VAT Directive), EUR-Lex
- Council Directive (EU) 2018/1910 ("quick fixes"), EUR-Lex
- European Commission: VIES VAT number validation
- Plugin source and readme (external services section)
Related
Plugin v1.0.0 released 27 October 2026. Not tax advice; not affiliated with WooCommerce or the European Commission.
Facts checked 2026-10-27. W System is the maker of this product. Not affiliated with the European Commission. Not legal or tax advice.