
EU VAT Check for WooCommerce — VIES validation of VAT numbers and reverse charge
A VAT number field at the WooCommerce checkout, checked against the European Commission's official VIES: reverse charge for valid B2B customers from other EU countries, the consultation number and the VIES answer stored with the order, a check log and a painless move from EU VAT Assistant. Pro — evidence of the customer's location, OSS report and EC Sales List, VAT rates from TEDB, company-name matching.
- Compatibility
- WooCommerce 8.9+ · WordPress 6.2+ · PHP 7.4+ · HPOS · classic and block checkout · European Commission VIES REST API
- Licence
- one site, annual
- Trial
- 7 days, no card, one per site
- Updated
- September 2026
What Free has,
and what Pro adds
The free version works with no time limit. Pro adds the rest of the features in the table.
What it looks like

The trial starts when you ask
A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — one site
Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. If our server is unreachable, Pro keeps working for 14 more days. For studios — keys for 5 or 25 sites, or unlimited.
Technical requirements
WooCommerce 8.9+ with the classic or block checkout, compatible with HPOS and the legacy order storage
WordPress 6.2+ · PHP 7.4+ (the full run was on PHP 8.3)
Outgoing HTTPS requests from the server to ec.europa.eu (VIES, and TEDB in Pro)
WP-Cron or a system cron — for re-checks
Do not run together with another VAT number plugin (the official WooCommerce EU VAT Number, EU VAT Assistant, etc.)
Plugin languages: English and German.
Version history
VAT number field on the classic and block checkout and in My account; VIES REST API checks with cache and retry; reverse charge with a country check; policies for invalid numbers and an…
Frequently bought with EU VAT Check for WooCommerce
4 modules in one order — 40% cheaper than separately


Nova Poshta Premium — a Nova Poshta module for OpenCart 2.3, 3.x and 4.x

LiqPay — Card Payments for OpenCart 2.3, 3.x and 4.x

Telegram notifications and Viber/SMS for customers for OpenCart
Full module description
EU VAT Check for WooCommerce adds a VAT number field (VAT ID, USt-IdNr.) to the checkout and checks it against the European Commission’s official VIES service. When a B2B customer from another EU country enters a valid number, the plugin removes VAT under the reverse-charge scheme and stores the VIES answer with its consultation number in the order as proof of the check. It is built as a successor to EU VAT Assistant, which is no longer developed: customer numbers and old orders are picked up automatically.
Honestly about the limits. The plugin decides whether to remove VAT by the general EU B2B scheme: the number is valid, its country matches the billing country, it is not a sale inside the shop’s own country and not a delivery into it. Triangulation, services with a different place of supply, special territories and IOSS are not covered — the decision and reporting stay with the shop and its tax adviser; this is not tax advice. The full checkout run used the European Commission’s official test service; check real customer numbers in the live VIES on your own shop during the trial.
What the customer sees
- An “EU VAT number” field in the address on the block checkout, under the billing address on the classic checkout and in My account.
- An answer right away: a green notice and VAT disappears from the total, red — the number is invalid, yellow — VIES is not answering right now. Remove the number and VAT comes back.
- The classic checkout hides the field for non-EU countries and shows it for Northern Ireland (XI prefix by the BT postcode).
- The reverse-charge note — on the thank-you page and in WooCommerce e-mails, and with PDF Invoices & Packing Slips also on the PDF invoice.
What the admin gets
- A box in the order (HPOS and legacy storage): number, status, name and address from VIES, consultation number, check time, and “Check in VIES now” with an order note about the result. The button does not recalculate taxes by itself.
- An “EU VAT” column in the order list, a field in the order’s billing details and in the user profile.
- A check log: every VIES answer with date, number, order and source, with filters.
- Policies: invalid number — stop the order or charge VAT; VIES not answering — charge VAT, or accept and re-check hourly for 3 more days.
- Moving from EU VAT Assistant: customer numbers are copied with a button and when the customer logs in, old orders are read by the box and the reports; EU VAT Assistant itself gets a notice to deactivate it.
Pro: location evidence, OSS, VAT rates
- Evidence of the customer’s location: billing, delivery, IP (WooCommerce geolocation, no external service) and number country — the order shows how many of them agree.
- OSS report per quarter by country and rate for sales to consumers in other EU countries and the EC Sales List by customer number for reverse-charge sales — with refunds and CSV. Working figures for preparing your return, not a filing.
- Standard VAT rates of 27 countries from the Commission’s TEDB: compared with the WooCommerce tax table, written with a button after review, checked weekly for changes.
- Company-name matching with VIES data and scheduled re-validation of saved customer numbers.
Works together with our other modules for Germany and the EU
- E-Invoice EN 16931 for WooCommerce puts the number verified by EU VAT Check into the ZUGFeRD / XRechnung invoice and sets the reverse-charge categories K / AE. There is one number field at checkout — E-Invoice switches its own field off.
- DATEV Export for WooCommerce (Pro) can take the verified customer number from EU VAT Check into the EU number field of the posting for reverse-charge sales — configured and tested that way in the joint run.
- Unit Price Grundpreis for WooCommerce — the price per 1 kg / 1 l in the shop for German stores.
How it works — step by step
- Switch the field on, enter your shop’s own VAT number (for the consultation number) and click “Test the connection”.
- Choose the policies for invalid numbers and an unavailable VIES.
- A customer from another EU country enters a number at checkout — the plugin checks the format, then asks VIES.
- The number is valid and the country matches — VAT is removed, the customer sees a green notice.
- The order keeps the number, the VIES answer and the consultation number; the log gets a line.
- With Pro — at quarter end, the OSS report and EC Sales List as CSV.
Under the hood
- The Commission’s official VIES REST API (check-vat-number, check-vat-test-service, check-status) — no scraping and no third-party middlemen.
- A local structure check first against the VIES table, so no request is wasted on an obvious typo; then an answer cache and one retry on MS_MAX_CONCURRENT_REQ / GLOBAL_MAX_CONCURRENT_REQ.
- Brute-force protection: no more than 15 different numbers per hour from one IP.
- Reverse charge through WooCommerce’s own mechanism (customer VAT exemption), so WooCommerce totals, taxes and reports stay consistent.
- Deleting the plugin removes the settings, the cached VIES answers and the cron jobs; the check log and order metadata stay as tax evidence (the log is removed only with the CCEUVAT_DELETE_DATA constant).
Installation
- Plugins → Add New → Upload Plugin: choose
catcode-eu-vat-check-for-woocommerce-1.0.0.zipand activate. If EU VAT Assistant or another VAT number plugin is active — deactivate it. - WooCommerce → EU VAT Check → Settings: field, your own VAT number, policies; “Test the connection”.
- Moving from EU VAT Assistant — the button that copies customer numbers.
- For Pro: paste the licence key from the e-mail after payment or start the 7-day trial in the Licence tab.
Questions
about the module
Didn't find the answer? Message us on Telegram and we'll reply within a business day.
Does the plugin decide for me whether to remove VAT?
It applies the general EU B2B scheme: VAT is removed only for a valid number from another EU country that matches the billing country, and never for a sale inside the shop's own country. Special cases — triangulation, services with a different place of supply, special territories, IOSS — are not covered. The final decision and reporting stay with the shop and its tax adviser; the Pro reports are working figures, not a filing.
Which VIES was it tested against?
The full checkout run used the European Commission's official test service (numbers 100 / 200 / 300 / 301 give valid / invalid / unavailable). "Test the connection" and the member-state status called the live VIES. Real customer numbers in the live VIES within a checkout have not been tested yet — try it on your own shop in the trial; the log shows every VIES answer.
What if VIES is unavailable?
Individual member-state databases go offline regularly. By default VAT is then charged; you can choose "accept and check later" — the order goes through without VAT and the plugin re-checks the number every hour for 3 more days and notes the result. That risk is then the shop's.
I already use another VAT number plugin.
Do not run two at once: you would get two decisions about VAT. The classic checkout field uses the same billing_vat_number key as the official WooCommerce EU VAT Number. For EU VAT Assistant the plugin shows a notice to deactivate it and moves the numbers and old orders over.
Why the consultation number?
It is the VIES request number — proof that you checked the number on the day of the sale. For VIES to issue it, enter your shop's own EU VAT number in the settings.
What stays free?
The field, VIES checks, reverse charge, policies, the order record, the notes in e-mails and PDFs, the log and the move from EU VAT Assistant — with no time limit.
No reviews yet. Be the first.
No questions yet. Ask one — we answer within 24 hours.
Not quite what you are looking for?
We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.
Order a custom module
Buying the module
—