Tested Updated Trending Perfect rating

EU VAT for WooCommerce

(1 customer review)

From: $19.99 / year

Manage EU VAT in WooCommerce. Beautifully.

Clear

Description

With EU VAT for WooCommerce Pro plugin you can collect and validate EU VAT numbers on WooCommerce checkout. Optionally you can automatically disable VAT (i.e. exempt) for valid numbers. Additionally, there is a tool to add all EU country VAT standard rates to WooCommerce.

Main plugin settings can be accessed from “WooCommerce > Settings > EU VAT”. EU country VAT rates tool is in “Tools > EU country VAT Rates”. VAT is validated through http://ec.europa.eu service.

Frontend Options

EU VAT for WooCommerce - Frontend Options

Field label
Label visible to the customer.
Default: EU VAT Number
Placeholder
Placeholder visible to the customer.
Default: EU VAT Number
Description
Description visible to the customer.
Default: None
Required
Sets if EU VAT field is required on checkout.
Default: no
Confirmation notice
Will add an additional confirmation notice on the checkout on empty VAT ID. For example you can enable this if EU VAT field is not required, but you still want to display a confirmation notice to the customer when no VAT ID was entered.
Default: no
Confirmation notice text
“Confirmation notice” must be enabled.
Default:
You didn't set your VAT ID. Are you sure you want to continue?
Priority (i.e. position)
Sets EU VAT field’s position in the billing section of the checkout page. Here are the default fields priorities: First name – 10, Last name – 20, Company – 30, Country – 40, Address 1 – 50, Address 2 – 60, City – 70, State – 80, Postcode – 90, Phone – 100, Email – 110.
Default: 200
Clear
CSS clear option.
Default: yes
CSS class
CSS class option. Possible values: Wide; First; Last.
Default: Wide
Label CSS class
Label CSS class option.
Default: None
Always show zero VAT
Will always show zero VAT amount in order review on checkout.
Default: no
Show field for selected countries only
Ignored if empty (i.e. field is shown for all countries). Enter country codes as comma separated list, e.g. to show field for EU VAT countries only enter:

AT,BE,BG,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HU,HR,IE,IT,LT,LU,LV,MT,NL,PL,PT,RO,SE,SI,SK,MC,IM

Default: None

Validation

EU VAT for WooCommerce - Validation

Validate
Enabled/disables EU VAT validation.
Default: yes
Message on not valid. Replaced value: %eu_vat_number%
Message will be displayed, when customer tries to checkout with invalid VAT number (“Validate” option must be enabled).
Default:
<strong>EU VAT Number</strong> is not valid.
First validation method
Change this if you are having issues when validating VAT. This only selects first method to try – if not succeeded, remaining methods will be used for validation. Possible values: SOAP; cURL; Simple.
Default: SOAP
Exempt VAT for valid numbers
Enables/disabled VAT exemption.
Default: yes
Preserve VAT in selected countries
This will validate the VAT, but won’t exempt VAT for selected countries. Country for “Base (i.e. store) country” option is set in “WooCommerce > Settings > General > Store Address”. Possible values: Base (i.e. store) country; Comma separated list; Disable.
Default: Disable
Preserve VAT in selected countries: Comma separated list
Enter country codes as comma separated list, e.g. IT,NL. Ignored unless “Comma separated list” option is selected above.
Default: None
Check country by IP
This will check if customer’s country (located by customer’s IP) matches the country in entered VAT number.
Default: no
Check for matching billing country code
This will check if country code in VAT number matches billing country code.
Default: no
Allow VAT number input without country code
This will allow customers to enter VAT number without leading country code letters and still get VAT validated. In this case country will be automatically retrieved from billing country input.
Default: no

Progress Messages

EU VAT for WooCommerce - Admin Settings - Progress Messages

Add progress messages
Enabled/disables progress messages on checkout.
Default: no
Validating
Message when validation is in progress.
Default: Validating VAT. Please wait...
Valid
Message on valid VAT.
Default: VAT is valid.
Not valid
Message on invalid VAT.
Default: VAT is not valid.
Validation failed
Message on VAT validation server timeout etc.
Default: Validation failed. Please try again.

Display Options

EU VAT for WooCommerce - Display Options

Display
If empty – will display after order table. Possible values: After order table; In billing address.
Default: After order table
EU VAT number summary admin meta box
Adds EU VAT number summary meta box to admin order edit page.
Default: no

Advanced Options

EU VAT for WooCommerce - Advanced Options

Session type
Possible values: Standard PHP session; WC session.
Default: Standard PHP session
Skip VAT validation for selected countries
List all countries you want VAT validation to be skipped for (i.e. VAT always valid). Ignored if empty. Enter country codes as comma separated list, e.g. IT,NL.
Default: None

WPML/Polylang Compatibility

To translate field label, placeholder, description, all messages options etc. you can use [alg_wc_eu_vat_translate] shortcode by entering it directly in settings, e.g.:

[alg_wc_eu_vat_translate lang="DE,NL" lang_text="EU-Steuernummer" not_lang_text="EU VAT Number"]

or in more complex form:

[alg_wc_eu_vat_translate lang="DE"]EU-Steuernummer[/alg_wc_eu_vat_translate][alg_wc_eu_vat_translate lang="NL"]BTW nummer van de EU[/alg_wc_eu_vat_translate][alg_wc_eu_vat_translate not_lang="DE,NL"]EU VAT Number[/alg_wc_eu_vat_translate]

Developers

Field ID used for storing EU VAT is _billing_eu_vat_number. To retrieve saved EU VAT number from WooCommerce order in PHP, use this snippet:

if ( '' != ( $billing_eu_vat_number = get_post_meta( $order->get_id(), '_billing_eu_vat_number', true ) ) ) {
    echo esc_html( $billing_eu_vat_number );
}

To retrieve saved EU VAT number from WooCommerce customer meta in PHP, use the snippet below. Note that there is no underscore in field ID (differently from order meta):

if ( '' != ( $billing_eu_vat_number = get_user_meta( get_current_user_id(), 'billing_eu_vat_number', true ) ) ) {
    echo esc_html( $billing_eu_vat_number );
}

EU country VAT Rates Tool

Country VAT Rate
Austria (AT) 20%
Belgium (BE) 21%
Bulgaria (BG) 20%
Cyprus (CY) 19%
Czech Republic (CZ) 21%
Germany (DE) 19%
Denmark (DK) 25%
Estonia (EE) 20%
Spain (ES) 21%
Finland (FI) 24%
France (FR) 20%
United Kingdom (UK) (GB) 20%
Greece (GR) 24%
Hungary (HU) 27%
Croatia (HR) 25%
Ireland (IE) 23%
Italy (IT) 22%
Lithuania (LT) 21%
Luxembourg (LU) 17%
Latvia (LV) 21%
Malta (MT) 18%
Netherlands (NL) 21%
Poland (PL) 23%
Portugal (PT) 23%
Romania (RO) 19%
Sweden (SE) 25%
Slovenia (SI) 22%
Slovakia (SK) 20%

1 review for EU VAT for WooCommerce

  1. Vera

    It is great! And support is very helpful even with free version. 5 stars!

Add a review

Your email address will not be published. Required fields are marked *

29 thoughts on "EU VAT for WooCommerce"

  1. Even though I fill in a VAT nr that is valid then on place order it tells me that VAT is not valid how come?

    1. Hi Henrik,

      Would it be possible for me to login to your site? If yes – my email is [email protected]

    2. It turned out that it was an internal setup error. Everything is working now.

  2. Hi, I’ve installed your plugin on my website but unfortunately I have an issue:

    – If I am logged in, everything works fine and the VAT amount is removed from the total if the VAT number is correct

    – as guest user instead, also with a correct VAT number, the amount still remain there.

    How should I solve it, please?

  3. Hey,

    do you think you could add an additional && ! headers_sent() check in /functions/alg-wc-eu-vat-functions-general.php l. 65 to avoid causing headers already sent warnings?

    1. Hi Johannes,

      Sure, I could add it, however, are you sure it will still work? I mean, it looks like then no session will be started. By the way – have you tried selecting “WC session” for “Session type” in “WooCommerce > Settings > EU VAT > Advanced Options” – this should skip line 65 at all.

  4. Hi,

    I just found out about an issue involving this plugin in combination of the plugin Mollie Payments for WooCommerce.

    When the VAT number is correct, the total price of my WooCommerce cart updates the price to the correct total; total minus tax. But when I go to check-out using the Mollie checkout (creditcard/paypal) the price I need to pay shows the amount including the VAT. So not the correct total.

    I have also asked support at Mollie for this issue. I don’t know who can get this sorted. Looking forward to your reply.

    1. Hi,

      Sorry for a late reply. Is it possible for me to log in to your site’s admin? It would be much easier for me to solve this then. FTP access would also help. If that’s possible – my email is [email protected].

  5. Hello,

    Pre purchase question!

    If customers from a specific country enter their VAT number can the vat be reduced to zero rate?

    1. Hi,

      Yes. You need to enable “Exempt VAT for valid numbers” checkbox in plugin’s settings. And if you want to limit it to specific countries only, you can fill in “Show field for selected countries only” option.

      Hope that helps. Please let me know if you have any more questions.

  6. Tom,

    I have been trying to purchase your plugin with no luck. I keep getting error message Payment declined: 3000: Do not Honour.
    Order #14524, I have tried different credit cards with same outcome. Please let me know if there are any other options for payment.
    Hope to hear back from you soon.

  7. I’m using this plugin and its working great! except for one thing:

    I have ‘Preserve VAT in selected countries’ enabled on ‘Comma separated list’ and have selected NL (Netherlands) in this list.

    In the checkout when someone fills in his Belgium (BE) VAT number and it gets validated the order wil get charged 0% tax which is good, but when the user confirms the order, it suddenly brings back the tax (21%) and the user has to pay the full amount with tax included.

    Am I doing something wrong?

    1. Hi,

      Thanks for reporting – as “Comma separated list” option was only added in latest plugin version 1.4.0, it may be that I didn’t test it properly. Will check that as soon as possible.

    2. Hi again,

      I’ve just tried to reproduce the error on my test server, but unfortunately didn’t succeed – 0% VAT remains after I’m confirming the order. Maybe I could log in to your site’s admin to check what’s going on? If that is possible – my private email is [email protected]. If sharing an account is not an option – could you please for a start try setting “Preserve VAT in selected countries” option to “Disabled” to be sure that this is connected.

    3. Thanks for logins. After logging to your server I was able to replicate the error. The problem occurs only when VAT ID is entered without country code (i.e. “Allow VAT number input without country code” plugin option must be enabled). Already fixing this…

    4. Fixed in plugin v1.4.1.

  8. Hi! i have installed the plugin but it seems that doesn´t work on my site.

    I have to delete or edit the tax rates of the woocommerce section? I just have edited this three rows in order to not applicate taxes to GB and US but applicate it to the rest of the world :

    * | 21%
    GB | 0%
    US | 0%

    I am trying to prove valid VAT numbers from this link but I do not know if they are correct: https://www.braemoor.co.uk/software/vattestx.php

    Could you help me please?

    P.d: Where should i add the key??

    Thanks so much!

    1. Hi,

      Maybe you can create/share an admin account to your server, so I could log in and check what’s going on. If that’s possible – my private email is [email protected].

      As for the license key – you need to install free “WPFactory Helper” plugin (https://wordpress.org/plugins/wpcodefactory-helper/) to enter your site key.

    2. Of course Tom, thanks so much. I´m going to send you right now 🙂

  9. Hello,
    I don’t see the option “Preserve VAT in base country” working as expected. At the checkout with a EU VAT number from the store’s base country VAT still gets removed, which it shouldn’t.

    You can test this on my online shop, add a product here and progress to the checkout:
    https://underscoretype.com/product-category/typefaces/silta/

    · The shop location is Finland
    · The “Preserve VAT in base country” is checked
    · Try with a Finnish address and VAT, for example my company’s 28338636

    I further have an unrelated problem with the plugin coupled with WP Super Cache. The VAT plugin outputs headers which break the caching routine. Here an example of the error log:

     [18-Jan-2019 09:10:32 UTC] PHP Warning: Error while sending QUERY packet. PID=28164 in …/wp-includes/wp-db.php on line 1924 [18-Jan-2019 09:10:32 UTC] PHP Warning: Error while sending QUERY packet. PID=849 in …/wp-includes/wp-db.php on line 1924 [18-Jan-2019 09:10:32 UTC] PHP Warning: Error while sending QUERY packet. PID=31530 in …/wp-includes/wp-db.php on line 1924 [18-Jan-2019 09:11:32 UTC] PHP Warning: Cannot modify header information - headers already sent by (output started at …/wp-includes/wp-db.php:1924) in …/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 1197 [18-Jan-2019 09:11:32 UTC] PHP Warning: Cannot modify header information - headers already sent by (output started at …/wp-includes/wp-db.php:1924) in …/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 1197 [18-Jan-2019 09:12:11 UTC] PHP Warning: session_start(): Cannot send session cookie - headers already sent by (output started at …/wp-includes/wp-db.php:1924) in …/wp-content/plugins/eu-vat-for-woocommerce-pro/includes/functions/alg-wc-eu-vat-functions-general.php on line 57 [18-Jan-2019 09:12:11 UTC] PHP Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at …/wp-includes/wp-db.php:1924) in …/wp-content/plugins/eu-vat-for-woocommerce-pro/includes/functions/alg-wc-eu-vat-functions-general.php on line 57 [18-Jan-2019 09:12:11 UTC] PHP Warning: session_start(): Cannot send session cookie - headers already sent by (output started at …/wp-includes/wp-db.php:1924) in …/wp-content/plugins/eu-vat-for-woocommerce-pro/includes/functions/alg-wc-eu-vat-functions-general.php on line 57 [18-Jan-2019 09:12:11 UTC] PHP Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at …/wp-includes/wp-db.php:1924) in …/wp-content/plugins/eu-vat-for-woocommerce-pro/includes/functions/alg-wc-eu-vat-functions-general.php on line 57 [18-Jan-2019 09:23:43 UTC] PHP Warning: Error while sending QUERY packet. PID=11922 in …/wp-includes/wp-db.php on line 1924 [18-Jan-2019 09:24:02 UTC] PHP Warning: Cannot modify header information - headers already sent by (output started at …/wp-includes/wp-db.php:1924) in …/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 1197 [18-Jan-2019 09:24:24 UTC] PHP Warning: session_start(): Cannot send session cookie - headers already sent by (output started at …/wp-includes/wp-db.php:1924) in …/wp-content/plugins/eu-vat-for-woocommerce-pro/includes/functions/alg-wc-eu-vat-functions-general.php on line 57 [18-Jan-2019 09:24:24 UTC] PHP Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at …/wp-includes/wp-db.php:1924) in …/wp-content/plugins/eu-vat-for-woocommerce-pro/includes/functions/alg-wc-eu-vat-functions-general.php on line 57 
    1. Hi,

      Maybe it’s possible to login to your site’s admin to check what’s going on? Also FTP access would help a lot. If it’s possible – my private email is [email protected].

      P.S. I did try going through your site’s frontend, however I keep getting “VAT is not valid” message (I’ve tried VAT ID you’ve provided, and I’ve added FI prefix). If you have checked “Check country by IP” checkbox in plugin settings, then my IP being not from Finland would result in invalid VAT..

    2. Hm, odd. I sent a reply to this but it does not appear here.

      FTP or other access to my production site is not an option.

      I’ve disabled the IP based country check, so you should be able to run the same test now without that impeding your result.

      Have you checked this in a online test environment with a locale and matching VAT of your choosing?

    3. Hi Johannes,

      I’ve just tried it on your site (added “Silta Thin” product to the cart) and it seems to be working fine: after entering Finnish VAT you’ve provided, I’ve got “VAT is valid, no VAT will be charged to EU businesses outside of Finland.” message and VAT is still there (Subtotal: 29 eur; VAT: 7 eur; Total: 36 eur). What am I missing?

      P.S. Regarding your previous message – it went to spam for some reason (I suppose because site’s spam filter decided that there are too many links in the message, sorry for that).

    4. Hey, thanks for getting back to me with this.

      Can you think of a reason why I am getting different results? Entering the same details I am presented with VAT 0€ when I try the same (just now). IP check is still off, and regardless, I confirmed with an online tester that I am correctly identified as browsing from Finland. Why would I get a different result than you testing with the same country and VAT ID?

    5. Hi Johannes,

      Regarding the second issue with WP Super Cache – hopefully I’ve managed to fix it. I’ve just released new plugin version 1.2.1. After update, please go to plugin settings (in “WooCommerce > Settings > EU VAT”) and there (at the bottom of the page in “Advanced Options” subsection) please select “WC session” option for Session type. Please let me know if it’s still not working as expected.

  10. Hello, i have this premium plugin. Skip VAT validation for selected countries dont work for me. My country is Spain. I put ES in the list but VAT is validating yet if a client comes from spain

  11. I keep getting messages ”EU VAT Number is not valid.” when checking out, when this field isn’t filled.
    Even when ”Sets if EU VAT field is required on checkout.” is off.

    Private sales aren’t possible this way, how do i fix it?

    1. Hi,

      I’ve just re-tested on my server, but unfortunately couldn’t reproduce the issue – when “Required” checkbox is not set in plugin settings, I can checkout without entering VAT. Maybe I can login to you server to check what’s going on? My private email is [email protected].

      Best regards,
      Tom

    2. In case if anyone else has similar issues – as we figured out in private emails – removing EU VAT number field’s placeholder in plugin settings solves the issue.

      Best regards,
      Tom

Leave a Reply

Your email address will not be published. Required fields are marked *

Changelog

1.5.0 - 13/08/2019

  • Dev - Admin - Order List - "EU VAT" column added.
  • Dev - Admin - Reports - Taxes - "EU VAT" report added.
  • Dev - Admin - EU country VAT Rates Tool - Duplicates are no longer added for the country.
  • Dev - Admin settings split into sections.
  • Dev - Allow VAT number input without country code - Additional country fallback added.
  • Dev - Functions - General - alg_wc_eu_vat_session_start() - Additional headers_sent() check added.
  • WC tested up to: 3.7.
  • Tested up to: 5.2.

1.4.1 - 04/05/2019

  • Fix - Preserve VAT in selected countries - Bug (when "Allow VAT number input without country code" is enabled) fixed.
  • Fix - Show field for selected countries only - Bug (when "Required" is enabled) fixed.
  • Dev - Frontend Options - "Confirmation notice" options added.
  • Dev - Code refactoring.
  • Dev - "WC tested up to" updated.

1.4.0 - 06/03/2019

  • Fix - "Preserve VAT in selected countries" fixed when "Allow VAT number input without country code" is enabled.
  • Dev - Frontend Options - "Always show zero VAT" option added.
  • Dev - [alg_wc_eu_vat_translate] shortcode added.
  • Dev - Shortcodes are now also processed in field label, placeholder, description and validation message options.
  • Dev - Validation - Preserve VAT in selected countries - "Comma separated list" option added.
  • Dev - Frontend Options - "Show field for selected countries only" option added.

1.3.0 - 31/01/2019

  • Fix - Default field value on the checkout fixed.
  • Dev - Display Options - Display - Multiple positions are now allowed (i.e. multiselect).
  • Dev - Display Options - Display - In billing address - Field is now editable ("My Account > Addresses").
  • Dev - Frontend Options - "Label CSS class" option added.
  • Dev - Code refactoring.

1.2.1 - 30/01/2019

  • Dev - Advanced Options - "Session type" option added.
  • Dev - Admin settings - "Your settings have been reset" notice added.

1.2.0 - 12/11/2018

  • Fix - AJAX - Possible "undefined index" PHP notice fixed.
  • Dev - General - "Priority (i.e. position)" option added.
  • Dev - General - "Raw" input is now allowed in textarea admin settings.
  • Dev - Code refactoring.
  • Dev - Plugin URI updated.

1.1.0 - 07/06/2018

  • Dev - General - "Check for matching billing country code" option added.
  • Dev - General - "Allow VAT number input without country code" option added.

1.0.1 - 05/06/2018

  • Dev - %eu_vat_number% replaced value added to "Message on not valid" option. "Message on not valid" now doesn't check for required (i.e. empty) field.

1.0.0 - 24/05/2018

  • Initial Release.

Free version

This plugin is a premium version of free "EU VAT for WooCommerce" plugin.

Prices & Licenses

Single siteUnlimited sites
1 year[buy] $19.99 / year[buy] $29.99 / year
Lifetime[buy] $39.99[buy] $59.99

Installation and Updates

  • Buy the plugin 🙂
  • Download plugin's zip to your computer (you will receive an email with download link, or you can always download the plugin from your account).
  • Go to "Admin Dashboard > Plugins > Add New > Upload Plugin" and browse for downloaded zip file.
  • If plugin is successfully installed - you should see it added to the Plugins list.
  • To keep WPFactory items up to date, please install WPFactory Helper plugin and enter your site key.

Refunds

We want to ensure that you are 100% happy with your purchase, so if you feel the product(s) you purchased are not the best fit for your requirements and you attempted to resolve issues with product's author, we are offering 30 day money back guarantee refund policy.