WooCommerce

WooCommerce VAT Rates and VIES Validation

A WooCommerce store selling across the EU has two VAT problems that never stop: the rates in the tax table drift out of date, and B2B buyers expect to pay without VAT — which you may only grant once their VAT number is verified. This plugin handles both.

Requires: WordPress 6.3+, WooCommerce 8.0+, PHP 8.1+ · License: GPL-2.0-or-later · Price: free

WooCommerce → EU VAT Rates

Rates are re-checked every day. The admin screen shows when they last changed and where they came from.

Rates Go Stale Quietly

Nothing in WooCommerce tells you a rate changed. Estonia raised its standard rate twice in recent years; Finland moved to 25.5% in September 2024. A store that entered its tax table once keeps charging the old number — and every invoice issued in between is wrong, in a way that surfaces during an audit rather than at checkout.

The plugin reads the European Commission's Taxes in Europe Database, the same source the Commission publishes its own rate tables from, and writes standard rates into the WooCommerce tax table. It re-checks every day, so a change lands in your store within 24 hours of the Commission publishing it.

Reverse Charge Needs Proof, Not a Text Field

Zero-rating an intra-EU B2B sale is only defensible if the buyer's VAT number was valid at the time of the sale. A plain text field on the checkout collects a string; it proves nothing. If the number turns out to be invalid, the VAT you did not charge is still owed — by you.

With a vatnode API key, the plugin checks the number against the live VIES register, applies the reverse charge only when VIES confirms it, and stores the registered company name on the order as evidence — along with the consultation number once a requester VAT is set on your vatnode account.

No VAT number — Irish VAT is charged

Verified in VIES — reverse charge applied

A Finnish store selling to an Irish business. The total updates as soon as the number is entered — on the classic and the block checkout alike.

What You Get

FeatureAPI key?What it does
Daily Rate SyncNoStandard VAT rates for every EU member state, pulled from the European Commission TEDB and written into the WooCommerce tax table. Re-checked daily.
VAT Number Field at CheckoutNoWorks on both the block checkout and the classic shortcode checkout. The number is stored on the order either way.
Offline Format CheckNoEvery VAT number is checked against its country pattern before anything is sent anywhere. Catches typos for free.
Live VIES ValidationYesThe number is verified against the official EU VIES register through the vatnode API.
Automatic Reverse ChargeYesA verified business buyer in another EU country is charged no VAT — WooCommerce totals update on the spot.
Evidence on the OrderYesRegistered company name and verification status are stored with the order, where an auditor expects to find them — plus the VIES consultation number once your vatnode account has a requester VAT set.

The plugin is free either way — the key only unlocks the live check. See pricing for what a monthly quota costs once you outgrow the free plan.

Setup

  1. Install and activate the plugin. Rates sync immediately — nothing to configure.
  2. Create an API key in your dashboard and paste it into WooCommerce → EU VAT Rates.
  3. Tick Verify VAT numbers with VIES. Verified EU business buyers outside your country now check out without VAT.

How the Reverse Charge Decision Is Made

SituationResult
Field left emptyVAT charged, order proceeds
Wrong format, or VAT country does not match the billing countryShopper is asked to correct it
Same country as the storeDomestic sale, VAT charged
Another EU country, VIES confirms the numberVAT removed, reverse charge applied
VIES says the number does not existShopper is asked to correct or remove it
No key, quota spent, or VIES unavailableVAT charged, order proceeds, reason in the order notes

Questions

Is the plugin free?

Yes. Rate syncing, the checkout field and offline format checking work with no account and no key. Live VIES validation and the automatic reverse charge need a vatnode API key, and the free plan includes a monthly request quota.

Why does VAT number validation need an API key at all?

Because a live answer has to come from somewhere. VIES is a SOAP service run by the European Commission that goes down regularly, rate-limits by IP and returns no evidence of its own unless you ask correctly. vatnode handles the connection, falls back to national registries when a member state node is unavailable, and returns the consultation number that proves the check happened.

What happens at checkout if VIES is down?

The order goes through with VAT charged as usual and the reason is written to the order notes. The plugin never blocks a checkout because an upstream service is unavailable — a lost sale costs more than a manually corrected invoice.

Does it work with the block checkout?

Yes. The field is registered through the WooCommerce Additional Checkout Fields API on the block checkout, and added to the billing form on the classic checkout. Both paths share the same validation rules.

Will it overwrite my existing tax rates?

No. The sync upserts rates named "VAT" per country — inserting when missing, updating when already present. Rates with other names, and anything you added by hand, are left untouched.

How many API requests does a checkout use?

One per VAT number. The answer is cached in your own site for 24 hours, so refreshing the cart, changing the shipping method or placing the order all reuse the same verification.

Which countries are covered?

VIES validation covers the EU-27 plus XI for Northern Ireland. Rate data covers those plus around 17 other European jurisdictions, which are rate-lookup only.

The plugin is free. The live check needs a key, and the free plan comes with a monthly quota and no card.

Get a free API key