If valid EU VAT numbers are always returned as “not valid” by EU/UK VAT Manager for WooCommerce, the cause is usually a settings or format issue, a strict extra check, or a VIES outage. Start at WPFactory > EU VAT (also reachable at WooCommerce > Settings > EU VAT) > Validation and work through the checks below.
Symptoms #
- A number that passes the official VIES lookup is marked invalid at checkout.
- The problem persists even with the correct format and country code.
- Numbers are rejected only at busy times, or only from one country.
What the messages mean #
| Message (Messages sub-tab) | Meaning |
|---|---|
| VAT is not valid. | VIES said the number is not registered, the format was rejected, or no validation method got an answer (for example VIES was down, or SOAP, cURL and Simple all failed). The debug log tells these apart. |
| VAT accepted due to VIES error: %vies_error%. | Accept the VAT number if VIES is not available is on and VIES was unavailable. |
| Wrong billing country. | Check for matching billing country code is on and the prefix does not match the billing country. |
| VAT is valid, but registered to %company_name%. | Check company name (Pro) is on and the billing company differs. |
Fix #
- Confirm validation is on. Go to WPFactory > EU VAT (also reachable at WooCommerce > Settings > EU VAT), Validation sub-tab, and set Validate to Yes.
- Change the validation method. If your host has SOAP disabled, set First validation method to cURL or Simple. The plugin also falls back automatically, but choosing a working method first is faster.
- Check the number format. Enter the country prefix and no spaces, for example
FR12345678901. Greek numbers use theELprefix, notGR. If customers often omit the prefix, enable Allow VAT number input without country code, and enable Allow VAT number input with non-alphanumeric symbols to tolerate spaces, dots and hyphens. - Review the extra checks. Check for matching billing country code (free), Check company name and Check country by IP (Pro) can reject numbers that VIES accepts. Turn them off to test.
- Handle VIES outages. Enable Accept the VAT number if VIES is not available to accept numbers for the errors
MS_UNAVAILABLE,GLOBAL_MAX_CONCURRENT_REQandMS_MAX_CONCURRENT_REQ(read the checkout note in the next section). If the log showsMS_MAX_CONCURRENT_REQoften, enable Advanced > Reduce concurrent request to VIES. With a VATSense key you can also enable Enable VATSense fallback. - Clear the cached result. The result is stored in the customer’s session for the same number and billing country. Enable Advanced > Force VAT recheck on checkout, or test in a new private window.
- If it still fails, check WooCommerce > Status > Logs for the debug entry and send it to support.
Workarounds for known-good customers #
- Manual validation of VAT numbers (Advanced): list numbers you have checked yourself, comma separated with the prefix, for example
DE123456789,FR12345678901. They pass without a VIES call. - Skip VAT validation for selected countries (Validation): numbers from these country codes are exempted without a VIES call. Read the checkout note in the next section before relying on it.
If VIES blocks your server with IP_BLOCKED, see VIES VAT Validation Blocked (IP_BLOCKED).
The field says valid, but checkout says the number is not valid #
EU/UK VAT Manager checks the number twice: once while the customer types (the message under the field) and again when the order is placed. If the second check fails, the order stops with the Message on not valid error even though the field looked fine. The usual reasons:
- The number was accepted without a confirmed answer. In the current version (4.7.4), a number accepted only through Skip VAT validation for selected countries or through Accept the VAT number if VIES is not available is shown as accepted under the field, but the check at order time still needs a number that VIES, VATSense or your manual list confirmed. For customers you have checked yourself, add their numbers to Manual validation of VAT numbers (Advanced) instead: those count as confirmed at checkout. On Pro, Allow checkout on unregistered VAT numbers also lets these orders through.
- A fresh check at order time got a different answer. With Force VAT recheck on checkout on, placing the order triggers a new VIES call, and a VIES timeout at that moment rejects the order. If VIES is unreliable for your customers, turn the option off so the result from the field is reused for the same number and billing country.
- The customer changed the billing country or company after the check. The stored result only applies to the same number and billing country. A new combination is checked again, and an extra check such as Check for matching billing country code or Check company name (Pro) can fail at that point. Ask the customer to re-enter the number after filling in the billing details.
Customers without a registered VAT number #
Some consumers want a tax ID on the invoice that is not registered in VIES. Two options look similar but do different things:
- Valid VAT but still paying? (General, free) adds a checkbox for customers whose number is valid but who must still pay VAT. It does not make an unregistered number pass.
- Allow checkout on unregistered VAT numbers (General, Pro) lets the order go through with a number that VIES does not confirm. The number is saved with the order, and VAT is still charged because only confirmed numbers are exempt.
If you are on the free version, set VAT field will be to Optional so these customers can leave the field empty. See Make the VAT Field Required Only for Businesses.
Numbers rejected on the registration form #
On the WooCommerce registration form the number is validated only when VAT field will be is Required and Validate at sign-up form (Validation) is on. Registration forms usually have no billing country field, which causes two problems:
- With Check for matching billing country code on, the prefix is compared with an empty billing country, so every number fails. Turn that check off, or add a billing country field to the form.
- With Allow VAT number input without country code, there is no billing country to take the country from. Ask customers to type the country prefix on this form.
See Add the EU VAT Field to the Registration Form for the setup.
FAQ #
Is VIES validation a Pro feature? #
No. Real-time VIES validation with the SOAP, cURL and Simple methods is free.
Why does a number validate on the VIES website but not in my store? #
Usually a format difference (prefix, spaces, EL for Greece), an extra check such as billing country or company name, or a cached result from an earlier attempt.
Are UK numbers checked through VIES? #
No. GB numbers are validated with VATSense. See UK VAT Validation Fails.
Need a hand? Our team answers every ticket on the EU/UK VAT Manager support forum.
