WooCommerce EU VAT Assistant



The EU VAT Assistant reached its end of life on the 30th of June 2022 (see the announcement from January 2022). The plugin is still functional and it can be used, but it’s no longer maintained or supported. We’re keeping it available for a while longer as a courtesy to existing users who have developers who can take care of its maintenance and troubleshooting.

For more information about the plugin retirement and the recomemnded alternative, please refer to the sticky post in the support forum: EU VAT Assistant – End of life and recommended alternative.

This is a full version of the premium EU VAT Assistant plugin

We are proud to say that this is the most powerful free EU VAT solution on the market. It was designed with you, the merchant, in mind, and it will make it easier to deal with the new, complex EU VAT regulations. this plugin was developed by Aelia Team – The WooCommerce internationalisation experts.

The WooCommerce EU VAT Assistant is designed to help achieving compliance with the new European VAT regulations, coming into effect on the 1st of January 2015. Starting from that date, digital goods sold to consumers in the European Union are liable to EU VAT, no matter where the seller is located. The VAT rate to apply to each sale is the one charged in the country of consumption, i.e. where the customer resides. These new rules apply to worldwide sellers, whether resident in the European Union or not, who sell their products to EU customers. For more information: EU: 2015 Place of Supply Changes – Mini One-Stop-Shop.

How this plugin will help you

The EU VAT Assistant plugin extends the standard WooCommerce sale process and calculates the VAT due under the new regime. The information gathered by the plugin can then be used to prepare VAT reports, which will help filing the necessary VAT/MOSS returns.

  • Tracks and records customers’ location. The EU VAT Assistant plugin also records details about each sale, to prove that the correct VAT rate was applied. This is done to comply with the new rules, which require that at least two pieces of non contradictory evidence must be gathered, for each sale, as a proof of customer’s location. The evidence is saved automatically against each new order, from the moment the EU VAT compliance plugin is activated.
  • Collects evidence required by the new regulations. All the data used to determine the VAT regime to apply is recorded in real-time, stored with the order and made available as needed.
  • Accepts and validates EU VAT numbers, adjusting VAT accordingly. Validation of European VAT numbers is performed via the official VIES service, provided by the European Commission. This feature is equivalent to the one provided by the EU VAT Number plugin.
  • Supports a dedicated VAT currency, which is used to generate the reports. You can sell in any currency you like, the EU VAT Assistant plugin will take care of converting the VAT amounts to the currency you will use to file your returns.
  • Can automatically populates the VAT rates for all EU countries. With a single click, you enter the VAT rates for all 28 EU countries. No more tedious manual typing!
  • Includes advanced Reports
    • EU VAT report by Country. This report will show you all the VAT collected under the VAT MOSS regime, as well as the VAT collected for your domestic VAT return.
    • VIES report. This report shows all the supplies provided to B2B customers.
    • INTRASTAT report. This report shows all the sales made to the EU.
    • Sales by Country (in development).
  • Supports ECB exchange rates in VAT MOSS reports. VAT MOSS Reports can use either the exchange rate saved with each order, or the European Central Bank rate required to produce the official VAT MOSS returns (ref. official documentation). This feature will allow you to use the most appropriate rate when producing your domestic VAT return and the VAT MOSS return.
  • Supports mixed products/services scenarios. The new EU VAT MOSS regime applies to the sale of digital products and services that do not require significal manual intervention. Sale of services that are provided with human intervention, such as support, consultancy, design, are still subject to VAT at source. In this case, VAT has to be paid to the revenue in merchant’s country. WooCommerce allows to specify to which country a tax applies, but not to which country it should be paid once collected. The EU VAT Assistant can help, by allowing merchants to specify the “payable to” country for each VAT. Such information is then displayed in the VAT reports.
  • Allows to force B2B or B2C sales. You can decide if you wish to force customers to a valid EU VAT number at checkout, thus accepting only B2B transactions, or prevent them from doing it, thus accepting only B2C transactions.
  • Can prevent sales to specific countries. You can exclude some countries from the list of allowed ones, thus preventing customers from those countries from placing an order.
  • It’s fully compatible with our internationalisation solutions, such the WooCommerce Currency Switcher, for multi-currency support, Prices by Country, Tax Display by Country and Prices by Role (coming soon).
  • Automatically updates the exchange rates that are be used to produce the VAT reports in the selected VAT currency. The plugin can fetch exchange rates from the following providers:
    • European Central Bank
    • HM Revenue and Customs service
    • Bitpay
    • Irish Revenue (experimental)
    • Danish National Bank (sponsored by Asbjoern Andersen).
  • Fully supports refunds. Refunds were introduced in WooCommerce 2.2, and support for it was added to our plugin right from the start.
  • Integrates with PDF Invoices and Packing Slips plugin, to automatically generate EU VAT-compliant invoices.


  • WordPress 4.0 or newer.
  • PHP 7.1 or newer.
  • WooCommerce 3.5 or newer.
  • Aelia Foundation Classes framework or newer.


This product has been designed to help you fulfil the requirements of the following new EU VAT regulations:

  • Identify customers’ location.
  • Collect at least two non-contradictory pieces of evidence about the determined location.
  • Apply the correct VAT rate.
  • Ensure that VAT numbers used for B2B transactions are valid before applying VAT exemption.
  • Collect all the data required to prepare VAT returns.

We cannot, however, give any legal guarantee that the features provided by this product will be sufficient for you to be fully compliant. By using this product, you declare that you understand and agree that we cannot take any responsibility for errors, omissions or any non-compliance arising from the use of this plugin, alone or together with other products, plugins, themes, extensions or services. It will be your responsibility to check the data produced by this product and file accurate VAT returns on time with your Revenue authority. For more information, please refer to our terms and conditions of sale and support.


  • Settings > Checkout. In this section you can configure how the EU VAT Assistant will behave on the checkout page.
  • Settings > Self-certification. In this section you can configure if the plugin should allow customers to self-certify their location.
  • Settings > Currency. In this section you can specify which currency you would like to use for VAT reports. It doesn’t have to match the WooCommerce base currency. In the lower section, you can choose which provider you would like to use to retrieve the exchange rates that will be used to calculate the amounts in VAT currency.
  • Settings > Sales. This section contains the settings that can be used to control how sales are handled (e.g. by preventing sales to some specific countries).
  • Settings > Options. Miscellaneous options.
  • Settings > Shortcuts. This section contains a few handy shortcuts to reach the WooCommerce sections related to the EU VAT compliance.
  • Frontend > Checkout. This screenshot shows the new elements displayed to the customer at checkout. The EU VAT Number field can be used by EU businesses to enter their own VAT number. The number is validated using the VIES service and, when valid, a VAT exemption is applied automatically. The self-certification element can be used to allow the customer to self-certify that he is resident in the country he selected. This information can be used as a further piece of evidence to prove that the correct VAT rate was applied.
  • Admin > WooCommerce > Order edit page. This page shows how the VAT details are displayed when an order is reviewed in the Admin section. The meta box shows the details of the VAT charged for order items and shipping, as well as the amounts refunded. Note: refunds are available in WooCommerce 2.2 and later.
  • Admin > WooCommerce > Tax Settings. This screenshots shows the Tax Settings page extended by the EU VAT Assistant. The new user inerface allows to automatically retrieve and update the European VAT rates. It’s possible to choose which VAT rates are applied in each page. Another important feature is the possibility to specify to which country a VAT will have to be paid. It will be possible, for example, to apply a 20% UK VAT for services to a German customer who buys consultancy hours, and still keep track of the fact that such tax will have to be paid to HMRC (i.e. outside of MOSS scheme).
  • Report > EU VAT by Country. This report shows the totals of VAT applied and refunded at each rate, for both items and shipping, grouped by country. The Export CSV button allows to export the data to a CSV file, which can be easily imported by accounting software.


  1. Extract the zip file and drop the contents in the wp-content/plugins/ directory of your WordPress installation.
  2. Activate the EU VAT Assistant plugin through the Plugins menu in WordPress.
  3. Go to WooCommerce > EU VAT Assistant to configure the plugin. Important: the EU VAT Assistant is very flexible and includes many options. We recommend reading the descriptions carefully, to ensure that you have a clear understanding of what each setting does. Its features can be summarised as follows:

For more information about installation and management of plugins, please refer to WordPress documentation.


Does the EU VAT Assistant include features to comply with the EU VAT OSS regulations that apply to physical products?

In short, no. We originally developed the EU VAT Assistant to help with the VAT MOSS regulations that apply to digital products from the 1st of January 2015 (VAT MOSS regulations). The EU VAT Assistant can be used, to a certain extent, even after the 1st of July. It’s possible, with some custom filters, to cover some the rules applicable to the shipping of goods, such as the VAT exemption over 150 EUR (or 135 GBP, for the UK). However, please keep in mind that it’s designed primarily for digital products, and doesn’t implement features specific to physical goods, such as handling the aspects of shipping.

What is Aelia’s recommended solution for compliance with rules introduced by the VAT OSS regime, Brexit and Norway’s VOEC?

Over the course of 2021 we have been working on a new plugin to handle the new VAT regulations, to replace the EU VAT Assistant. After carefuly consideration, we came to the conclusion that the product we have been developing could not be competitive, in a market where several of these solutions already exist. Due to that, we opted not to release our own premium VAT compliance product, and collaborate with the authors of existing plugins instead.

Towards the end of 2021, Aelia established a collaboration with David Anderson, founder of Simba Hosting and author of the popular Updraft Plus backup plugin, and of the WooCommerce EU/UK VAT / IVA Compliance plugin. If you’re looking for a comprehensive plugin to help you complying with the new regulations, we recommend to try that plugin.

We chose to endorse the David’s solution, instead of releasing our own, because we have been working together and exchanging information for years and we know that it’s a reliable product.

We are also organising to offer an optional migration service, to convert the data stored by the Aelia EU VAT Assistant into the formate used by the WooCommerce EU/UK VAT / IVA Compliance plugin. This will be an optional, paid service, which we will provide on request.

You can read more about the collaboration between Aelia and Simba Hosting in the following article: VAT OSS Compliance – From Aelia EU VAT Assistant to Simba Hosting’s WooCommerce EU/UK VAT/IVA Compliance.

What features are included in the EU VAT Assistant?

The EU VAT Assistant includes all the features to handle the VAT MOSS regulations for EU countries (see notes about UK Brexit, applicable from the 1st of January 2021). It’s based on the same framework we use for our other premium products, such as the Aelia Currency Switcher for Woocommerce, Prices by Country for WooCommerce, Aelia Tax Display by Country for WooCommerce, and it follows the same quality standards. All the included features are fully functional, without restrictions or time limitations.

Can the EU VAT Assistant validate EU VAT numbers?

Yes. The EU VAT Assistant automatically validates the EU VAT number entered by the customer on the checkout page. When a valid VAT number is entered, the plugin informs WooCommerce that a VAT exemption should be applied.

How does the EU VAT Assistant validate EU VAT numbers?

Our solution relies on the official VIES service to validate EU VAT numbers. The EU VAT Assistant also includes several options to accept VAT numbers when the remote VIES service is unavailable or overloaded. Such options are disabled by default, and can be enabled in the plugin settings.

Does the EU VAT Assistant validate UK VAT numbers?

The EU VAT Assistant could validate UK VAT numbers up until the 31st of December 2020. From the 1st of January 2021, the VIES service no handles UK VAT numbers, which must be validated through a different service, provided by the UK Revenue Office (HMRC). We wrote an addon for the EU VAT Assistant to cover that aspect, but we have since shifted our focus on other endeavours (see FAQs above).

Will the EU VAT Assistant include features dedicated to UK merchants?

The EU VAT Assistant features aim to simplify compliance with the VAT MOSS regulations that apply to EU merchants. Out of the box, the plugin which should cover most of the needs of UK merchants as well (with the exclusion of the validation of UK VAT number). If you’re looking for a comprehensive solution that covers that aspect, we recommend the WooCommerce EU/UK VAT / IVA Compliance plugin, developed by David Anderson.

Can the EU VAT Assistant show the correct VAT rate as soon as a visitor lands on the site?

Such feature is provided by our Tax Display by Country plugin. If you like the EU VAT Assistant, we invite you to purchase the Tax Display by Country as well, and enjoy the powerful features of a comprehensive tax compliance solution, at a small price.

I would like to show the same prices to all customers, regardless of the applicable VAT

Our Tax Display by Country plugin includes such feature as well, using it is as simple as ticking a box.

Does the EU VAT Assistant guarantee compliance with regulations?

We developed the EU VAT Assistant to be as accurate as possible, in order to help fulfil the requiremenets of the EU VAT MOSS regulations. As required by WordPress policies, we can’t guarantee legal compliance.
Similarly, although our solution is flexible enough to cover scenarios that falls outside the EU VAT MOSS regulations (e.g. the sale of physical products), we can’t promise that it will cover all of them. That’s simply due to the presence of too many variables, which could introduce edge cases that our tests didn’t cover.

Of course, if you spot a specific condition in which the EU VAT Assistant doesn’t seem to work as expected, please feel free to report any issue you might encounter, either via our contact form (premium support) or on the public forum (free support). We’re always happy to review each special cases, and see if we can support them in our solution.

What is the support policy for this plugin?

Should you need assistance with this plugin, you can post your query in the public Support section, above**. We review that section on a regular basis, and we will reply as soon as we can (usually within a couple of days). Posting the request there will also allow other users to see it, and they may be able to assist you. Please note that we can only provide basic support on the public forum. We can’t offer assistance with customisations, nor implement them, and we won’t be able to perform in-depth investigations about issues.

I have a question unrelated to support, where can I ask it?

Should you have any question about this product, please use the contact form on our site. We will deal with each enquiry as soon as possible. Important: we won’t be able to provide advice about taxation, accounting or legal matters of any kind.


නොවැම්බර් 23, 2021
Whilst commercial plugin costs some money, this just works out of the box plus has incredible option to check against the VAT validity. Big thanks!
ඔක්තෝබර් 8, 2021
We’re currently configuring compatibility between this plugin and ours, and it’s a relief to be working with a pro (Diego at Aelia).
අගෝස්තු 28, 2021
Really thank you for this amazing plugin. It solves a very big problem. Without this plugin, it would be really very hard. I really love it. One of the most useful plugins I’ve ever installed.
ජූලි 13, 2021
The plugin has all the features (at least the ones I needed) to process VAT in EU. Saves a lot of time and energy.
ජූනි 28, 2021 1 reply
Tried installing this. It needs a companion plug-in. It then tried to install a Maxmind geolocation database from a URL that doesn’t work. Why it couldn’t find the one I’ve already got installed as part of WooCommerce integration I’ve no idea. But, since it fgell at the first hurdle, I can’t really recommend this.
Read all 38 reviews

Contributors & Developers

“WooCommerce EU VAT Assistant” is open source software. The following people have contributed to this plugin.



  • Declared compatibility with WooCommerce 8.5.

  • Declared compatibility with WooCommerce 8.4.

  • Declared compatibility with WooCommerce 8.3.
  • Declared compatibility with WordPress 6.4.x.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.
  • Updated supported WordPress versions.

  • Updated embedded AFC framework. The new version includes an updated version of the Freemius library (v 2.5.10).

  • Updated supported WooCommerce versions.

  • Tweak – Streamlined installation process, removing unnecessary steps.
  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.

  • Tweak – Updated embedded framework to fix error thrown by method FeaturesUtil::declare_compatibility().

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.
  • Updated supported WordPress versions.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.
  • Updated supported WordPress versions.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.
  • Updated supported WordPress versions.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.
  • Updated embedded framework.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.
  • Updated supported WordPress versions.

  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.

  • Tweak – Modified filter wc_aelia_eu_vat_assistant_customer_vat_exemption, so that it always receives customer’s country and VAT number, even if one of the two values is empty.

  • Updated supported WooCommerce versions.

  • Fix – Fixed check against the validation response returned by the VIES service.

  • Updated supported WooCommerce versions.
  • Updated supported WordPress versions.

  • Updated requirements. The plugin now requires at least PHP 7.1.

  • Tweak – Added logic to disable the EU VAT Assistant when the premium Aelia VAT Assistant plugin is installed.
  • Updated supported WooCommerce versions.

  • Tweak – Updated links to the Tax Display by Country plugin.
  • Updated supported WooCommerce versions.

  • Tweak – Rewritten logic used to remove the country prefix from VAT numbers. The new logic can now handle prefixes longer than two characters.
  • Updated supported WooCommerce versions.

  • Tweak – Refactored class VAT_Number_Validation_Service. Added support for a settings section callback, which VAT number validation services can use to display some information about their configuration.

  • UI – Improved validation logic for the VAT number field on the checkout page. The “invalid field” styles are now removed before each validation.
  • Fix – Fixed logic used to check if the company name field is filled on the checkout page, before validating the VAT number.

  • Feature – Added new filter wc_aelia_euva_script_params, to allow 3rd parties to alter the arguments used to localise the frontend scripts.
  • Updated supported WordPress versions.

  • Feature – Added filters wc_aelia_euva_set_customer_vat_exemption_country and wc_aelia_euva_set_customer_vat_exemption_vat_number, fired during the validation of VAT numbers at checkout.
  • Fix – Fixed logic used to hide the self-certification field when sufficient location evidence is available.
  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.

  • Feature – Added new filter wc_aelia_euva_enabled_currencies.

  • Tweak – Improved handling of VIES response. Added logic to handle the condition in which parts of the trader address are missing.

  • Fix – Fixed handling of the self-certification field when the VAT number field is not displayed on the checkout page.
  • Updated supported WooCommerce versions.

  • Set minimum required WooCommerce version to 3.5.

  • Set PHP requirements in the plugin header.

  • Fix – Fixed bug that could trigger an error when a customer didn’t enter a VAT number at checkout.
  • Tweak – Added Northern Ireland, with ISO-2 code “XI”, to the list of countries supported by the VIES VAT number validation service.

  • Fix – Fixed validation logic in dummy validation service class.
  • UI – Improved Settings page.
  • Updated language files.

  • Tweak – Refactored base class VAT_Number_Validation_Service to make it more flexible.
  • UI – Improved Settings page.

  • Tweak – Improved VAT validation logic. Added logic to remove country prefixes from VAT numbers before the validation, to ensure a consistent result.
  • Feature – Added wc_aelia_euva_order_vat_number_required filter. The filter will allow 3rd parties to decide if a valid EU VAT number is required for specific countries.
  • Feature – Added wc_aelia_euva_checkout_vat_number_required_message filter. The filter will allow 3rd parties to alter the message displayed when the checkout is blocked because a valid VAT number was not entered.
  • Deprecation – Deprecated filter wc_aelia_euva_order_is_eu_vat_number_required.
  • Tweak – Upgraded jQuery UI CSS to version 1.12.1.

  • Bumped major version.
  • Tweak – Optimised loading of frontend scripts.
  • Feature – Added support for WooCommerce Privacy Policy features.

  • Refactor – Reorganised logic used to manage the VAT number validators.

  • Refactor – Rewritten settings page to use the new features of the AFC 2.1.0.
  • Refactor – Rewritten VAT number validator classes to make them more modular and extensible, ahead of the new Brexit regulations.

  • Updated supported WooCommerce versions.
  • Updated supported WordPress versions.

  • Fix – Removed the licence key prompt, which applies only to premium plugins and was enabled by mistake.

  • Corrected version number.

  • Updated supported WooCommerce versions.

  • Tweak – Removed the <strong> element from VAT Number field label, on the checkout page.

  • Updated supported WordPress versions.

  • Tweak – Removed obsolete jQuery library jquery.ba-bbq.min.js.
  • Updated supported WooCommerce versions.

  • Updated supported WooCommerce versions.

  • Updated supported WordPress and WooCommerce versions.

  • UI – Improved description of “store invalid VAT numbers” field (now called “accept invalid VAT numbers”).
  • Updated language files.
  • Downgraded econea/nusoap library to version 0.9.7, to fix the “out of memory” errors caused by version 0.9.9.

  • Tweak – Improved VAT number checks on renewals. A warning is no longer issued when a renewal order doesn’t contain a VAT number.

  • UI – Improved VIES report. The “Order ID” column now shows a list of all the order IDs linked to the VAT number.

  • Fix – Added check to prevent calls to function wcs_order_contains_renewal() when the Subscriptions plugin is not installed.

  • Updated embedded Aelia Foundation Classes framework.

  • Feature – Added validation of VAT numbers for manual orders, when the “recalculate” operation is performed.

  • Improved support for subscriptions.
  • Tweak – Replaced calls to update_post_meta() with CRUD functions.
  • Updated supported WooCommerce versions.

  • Tweak – Improved logic used to collect VAT data for manual orders.

  • Updated supported WooCommerce versions.

  • Fix – Fixed bug that could prevent exchange rates from being updated in some cases.
  • Tweak – Updated logic used to fetch exchange rates from BitPay.

  • Updated requirement checking class.
  • Updated requirements.
  • Updated supported WooCommerce versions.

  • Tweak – Improved Sales Summary (VAT RTD) report. Added new logic to fetch the VAT rate for refunds, when the parent order that was refunded falls outside the date interval of the report.
  • Tweak – Changed URL of the WSDL document from “http” to “https”.

  • Fix – Fixed notice related to method Orders_Integration::woocommerce_ajax_get_customer_details(), which should be declared as static.

  • Fix – EU VAT by Country report. Restored customer country name in Customer Country column.

  • Fix – Added UK (ISO code “GB”) back to the list of EU VAT countries in WooCommerce 4.0 and later.
  • Updated supported WooCommerce versions.

  • Tweak – Replaced country code with country name in the error message displayed when an invalid VAT number is entered in the plugin settings.
  • Updated language files.

  • Updated logic to call the VIES VAT number validation service.

  • Fix – Removed notice message that could occasionally appear on the EU VAT by Country report.
  • Updated supported WooCommerce versions.

  • Tweak – Clarified error message logged when a requester VAT number saved in the EU VAT Assistant settings is too short.

  • Fix – Fixed typo that could cause an error during the logging of a “VAT number too short” message.

  • Tweak – Improved validation of minimum length of VAT numbers.
  • Fix – Fixed logic to use ECB rates in Sales Summary (VAT RTD) report.
  • Fix – Fixed logic fetching the list of available tax rates in EU VAT Assistant > Reports settings page.
  • Updated supported WooCommerce versions.

  • Updated embedded AFC framework to version

  • Updated supported WooCommerce versions.

  • Fix – Handled edge condition which prevented the automatic update of exchange rates from being scheduled.
  • Updated supported WooCommerce versions.

  • Fix – Fixed bug in the logic used to pass the requester VAT number to the VIES service, which caused the consultation number not to be returned by the remote service.

  • User Interface – Moved VIES validation settings to the new “VAT Validation” section.
  • Feature – Added option to retry the validation of a VAT number when the VIES service is considering the requester information as not valid.
  • Feature – Added option to accept VAT numbers as valid when the VIES service is unavailable.
  • Feature – Added option to accept VAT numbers as valid when the VIES service is rejecting the call due to too many requests.
  • Feature – Added new filter wc_aelia_euva_vat_validation_cache_duration. The filter allows to specify for how long the result of a VAT number validation should be cached (default: one hour).
  • Improvement – Optimised reports for WooCommerce 3.7+ (EU VAT by Country, Sales Summary (VAT RTD), VIES, INTRASTAT).
  • Tweak – Made minor changes to report interface, to make it lighter.
  • Updated language files.

  • Improvement – Improved logic used to validate the requested VAT number on the settings page.
  • Improvement – Improved logging and error checking during VAT number validation.
  • Improvement – If an invalid requester VAT number is stored in the settings, the plugin won’t use it to validate VAT numbers at checkout.
  • User Experience – When an invalid requester VAT number is entered in the settings, the page now shows all the details related to the failed validation.
  • Updated supported WooCommerce versions.

  • Improvement – Rewritten logic for the VAT RTD report, to ensure consistency with the VAT MOSS reports.
  • Tweak – Improved handling of response from VIES service, to deal with mixed case keys in the response data.
  • Tweak – Added styles to improve readability of VAT MOSS and VAT RTD reports.
  • Fix – Fixed display of VAT number field at checkout, when it’s configured to be “always required”.

  • Tweak – Improved message related to the failed validation of the requester VAT number, on the settings page.
  • Updated supported WooCommerce versions.

  • Improvement – Improved handling of response from VIES service, to fetch the validation error message when present.

  • Updated supported WooCommerce versions.

  • Tweak – Improved user interface on My Account > Edit Billing Address. The “VAT Number” field is now displayed on its own line.

  • Tweak – Updated URL of ECB exchange rate feed for historical rates.
  • Tweak – Optimised logic used to fetch rates from the ECB historical feed.
  • Updated language files.

  • Tweak – Reduced size of column aelia_exchange_rates_history.provider_name. This is to prevent errors in MySQL 5.6 and earlier, due to the primary key being too long.
  • Fix – Fixed layout of the footer in “Sales Summary Report (VAT RTD)”, to produce the correct CSV file during export.

  • Tweak – Handled edge case in which the tax rate for a refunded item or shipping could not be determined.
  • Tweak – Improved consistency in rounding logic in the VAT RTD report.

  • Tweak – Updated SQL queries used to create temporary tables.
  • Tweak – Improved debugging features for sales reports.
  • Tweak – Improved logic used to fetch the label for the tax rates associated to an order.

  • Tweak – Improved logging during the generation of reports.
  • Updated supported WooCommerce versions.

  • Fix – Fixed display of “VAT Number” field title on the checkout page.

  • Tweak – Added check to skip calls to the VIES service when a VAT number is too short.

  • Fix – Fixed loading of VAT number field during the “load address” operation on the Edit Order page.

  • Fix – Fixed URL of the ECB exchange rate feed.

  • Fix – Fixed loading of frontend.js script from the embedded AFC framework.

  • Tweak – Improved UI on checkout page. An empty VAT number is now displayed as invalid only when it’s required.
  • Fix – Fixed error that could occur when both the Aelia Foundation Classes and the embedded AFC were loaded on a site.

  • Fix – Fixed validation of merchant’s VAT number while configuring the plugin for the first time.
  • Tweak – Improved validation of VAT number and self-certification requirements on the checkout page.

  • Tweak – Added support for updates served via Aelia update servers (premium version).

  • Feature – Added support for “requester VAT number” in VAT validation requests to the VIES service.

  • BREAKING CHANGE – Used filter woocommerce_checkout_fields to display the VAT number and self certification fields.
  • BREAKING CHANGE – Removed rendering of VAT number and self certification fields that used action woocommerce_checkout_billing.
  • Tweak – Improved VAT number scripts on checkout pages.
  • Tweak – Updated CSS to reflect the IDs and classes of the new VAT number and self certification fields.

  • Updated supported WooCommerce versions.

  • Fix – Fixed deprecation notice in WC 3.x.
  • Feature – Added new wc_aelia_eu_vat_assistant_validate_vat_number filter, to allow 3rd parties to validate VAT numbers.

  • Fix – Fixed issue of VAT number being deleted in WooCommerce 3.3 and later, after updating an order from the Edit Order page.

  • Tweak – Added logic to set the “VAT exempt” flag for orders added or modified manually in the backend.

  • Updated supported WooCommerce versions.

  • UI – Added CSS to highlight odd/even rows in reports.
  • Improvement – Added logic to reuse the same logger instance throughout the plugin, instead of loading a new instance every time.

  • UI – Added VAT Number field to Admin > User Profile page.

  • Tweak – Added custom repository as a new source of VAT rates.
  • Updated supported WooCommerce version.

  • Tweak – Added wc_aelia_euva_eu_vat_number_validation_complete event upon completion of the validation of a VAT number via Ajax.

  • Tweak – Added new filters wc_aelia_eu_vat_assistant_show_vat_field and wc_aelia_eu_vat_assistant_show_self_certification_field, to simplify the customisation of the checkout page.

  • Updated supported WooCommerce version to 3.2.

  • Fix – Fixed logic used to check if the “collect VAT data for manual orders” is enabled.
  • Localisation – Updated language files.

  • Tweak – Improved collection of tax data for manual orders in WooCommerce 3.0.x/3.1.x.

  • Tweak – Added check to prevent divisions by zero, with “zero VAT” rates are used.

  • Fix – Handled condition that prevented the collection of VAT exemption data in some circumstances.

  • Improvement – Removed obsolete method EU_Invoice_Order::get_order_currency(). Many thanks to Malte Vollmerhausen for reporting the bug and proposing a solution.

  • Fixed “hanging” comment, which caused a syntax error in the code.

  • Improvement – Compatibility with WooCommerce 3.0:
    • Replaced direct access to properties with calls to the new get() methods.
    • Fixed logic used to collect VAT data in WooCommerce 3.0.3.

  • Bug fix – Fixed saving of the “Is VIES service” option for variations.

  • Re-tested for compatibility with WooCommerce 3.0.

  • Improvement – Compatibility with WooCommerce 2.7:
    • Replaced call to WC_Customer::get_country() with WC_Customer::get_billing_country() in WC 2.7 and newer.

  • Improvement – Compatibility with WooCommerce 2.7:
    • Replaced woocommerce_product_write_panels action with woocommerce_product_data_panels.

  • Improvement – Compatibility with WooCommerce 2.7:
    • Replaced calls to order properties with calls to wrapper methods.

  • Replaced obsolete calls to jQuery.delegate() with jQuery.on().
  • Updated supported WordPress version to 4.7.

  • Improvement – Added compatibility with PHP 7.
  • Improvement – Added filter wc_aelia_euva_vat_country_prefixes. This filter allows to alter the prefix associated to each EU country, which is used for the validation of VAT numbers.
  • Improvement – Added possibility to override the frontend templates (VAT field and self-certification) in a theme.
  • Improvement – Handled edge condition that prevented the VAT exemption from being applied in some cases.

  • Improvement – Added filter wc_aelia_euva_eu_vat_number_raw_validation_result. This filter allows to alter the response returned by the validation of an EU VAT number.

  • Updated supported WordPress version to 4.6.

  • Bug fix – Fixed priority of the checks related to the VAT number at checkout. Now the number is no longer required if it’s hidden because the customer is in shop’s base country.

  • Improvement – Added extra check when saving product metadata.

  • Tweak – The description of the “deduct VAT for customers in shop’s base country” setting is now clearer.

  • Marked as compatible with WordPress 4.5.

  • Bug fix – Fixed JavaScript issue related to order. The issue was caused by an incorrect initialisation of the new features used to collect VAT information for orders entered manually.

  • Bug fix – Fixed check in Orders_Integration class. The incorrect check could caused a display issue in order and coupon list pages.

  • Tweak – Tweaked calculation of sales totals in EU VAT by Country report, to reduce the discrepancies caused by rounding.
  • New feature – Added option to enable/disable the collection of VAT data for manual orders.
  • New feature – Added VAT Number to the Billing fields in the Edit Order page.

  • New feature – Collection of VAT information for orders entered manually. The new feature allows to process orders entered manually, collecting the VAT data related to them and making it available to the reports provided by the EU VAT Assistant.

  • Fixed bug in Sales Summary and INTRASTAT reports. The bug caused shipping charges to be aggregated under the “zero” tax rates.
  • Tweak – Handled the case when get_current_screen() doesn’t return an object.

  • Added Sales Summary report. The new report will be useful to file returns such as the Irish VAT RTD.

  • Refactored INTRASTAT report.
  • Updated clearfix CSS for better compatibility with 3rd party plugins.

  • Fixed UI glitches in report pages. The glitches were caused by new CSS styles introduced by WordPress 4.4.

  • Added new filter: wc_aelia_eu_vat_assistant_customer_vat_exemption. The filter allows to alter the result of the VAT exemption check performed by the EU VAT Assistant, for example to make a customer exempt from VAT based on custom criteria.

  • Improved UI of checkout page:
    • The VAT number field is now highlighted by WooCommerce when it’s required and it’s left empty.
    • Improved logic used to show/hide the VAT number and determine if it’s required.

  • Refactored VAT number validation logic:
    • Replaced validation logic with a simplified process, which also returns more details about the validation result.
    • Fixed bug in VAT number validation. The bug caused the wrong error code to be returned for invalid VAT numbers (error “5002 – Could not validate” was returned instead of “5001 – VAT number not valid”).
  • Improved settings UI. The “Set manually” column in the Currency section now shows Select/Deselect all, which is clearer than a checkbox.

  • Added possibility to make EU VAT field compulsory when the customer enters a company name only if the address is in the EU.
  • Fixed bug in display of EU VAT number at checkout. The bug caused the field to be hidden for non-EU countries even if the display option was set to “always required”.
  • Updated language files.

  • Added possibility to make EU VAT field compulsory when the customer enters a company name.
  • Handled edge case in which the shop is configured to sell to a single country.

  • Fixed display of the EU VAT options tab for simple products.

  • Improved Admin UI. Moved links to reports to “Reports” tab and removed the “Shortcuts” tab.

  • Improved handling of EU VAT field visibility. The field is now shown and hidden dynamically in the frontend when option “Show EU VAT field when customer is located in base country” is enabled.

  • Preliminary WooCommerce 2.5 compatibility:
    • Reviewed logic used to populate the VAT rates in Tax Rates page.
    • Removed “tax payable to country” field from Tax Rates pages.
    • Improved checks to handle cases in which the “tax payable to country” field is not POSTed with the tax rate data.
  • Corrected name of localisation files for Finnish.

  • Fixed invalid reference to settings constant.

  • Fixed bug in handling of EU VAT field visibility. The field is now hidden correctly when option “Show EU VAT field when customer is located in base country” is enabled.
  • Fixed initialisation of Messages controller. The controller now uses the correct text domain.
  • Updated language files.
  • Removed redundant logic used to check for updates.

  • Fixed UI conflicts with Currency Switcher (JavaScript and CSS).
  • Improved handling of reduced EU VAT rates. The plugin now uses the standard VAT rate when it finds a country that doesn’t have a reduced rate (e.g. Denmark).

  • Updated link to Aelia Foundation Classes plugin.

  • Improved BitPay integration. The class now uses a simpler caching mechanism to prevent multiple calls to BitPay servers. This will avoid issues caused by the connection being refused by BitPay.

  • Fixed conflict with Aelia Tax Display by Country plugin. The conflict prevented VAT exemptions from being applied correctly with the “keep prices fixed” feature of the Tax Display plugin was enabled.

  • Verified compatibility with WordPress 4.3.
  • Verified compatibility with WooCommerce 2.4.

  • Improved handling of EU VAT field:
    • VAT field is now displayed in My Account > Billing section.
    • VAT field is automatically pre-populated at checkout for registered customers.

  • Updated VIES report:
    • Added customer country and order ID.
    • Altered query to retrieve the “is service” flag for variations.

  • Improved support for refunds in EU VAT reports:
    • Improved query.
    • Added option to include/exclude refunded orders.
    • Added option to included refunds placed in the specified period, or related to orders placed in the specified period.

  • Added missing WPML configuration file.

  • Improved localisation:
    • Added missing string for Admin UI.
    • Added WPML configuration file.

  • Improved requirement checking. Now the plugin gracefully informs the user if an unsupported PHP version is installed.

  • Improved INTRASTAT report:
    • Improved UI.
    • Replaced “quarter” filters with “bi-monthly” ones.

  • Fixed bug in integration with the Currency Switcher. The bug raised a notice when the Currency Switcher settings were saved, due to an incorrect check about the saved data.

  • Fixed bugs in INTRASTAT report:
    • Fixed rendering of month names.
    • Fixed formatting.

  • Added stub for INTRASTAT Report.
  • Added base Base_VIES_Report class.
  • Added WC21\VIES_Report class.

  • Fixed bug in EU_VAT_By_Country_Report::get_tax_refunds_data(). The bug caused the report to include refunds for orders whose status was “refunded”, which should be excluded by default from the report.
  • Removed “Options” section from VIES Report UI. Such report does not need it (yet).
  • Added “refunds options” section to EU VAT Report UI (currently disabled, as the feature is not yet complete).
  • Added header view template for sales report.

  • Added UI to specify if a variable product is a service for VIES purposes.
  • Completed UI to handle “is service” setting for products.
  • Added logic to save and retrieve the “is service” setting.
  • Fixed calculations in VIES report.

  • Added VIES report.
  • Added logic to normalise the EU VAT numbers stored with each order.
  • Added plugin version to the EU VAT Evidence stored with each order (previously, the version was associated only to the EU VAT Data field).
  • Refactored query to produce the VIES report.
  • Refactored base report classes:
    • Moved method Base_EU_VAT_By_Country_Report::get_vat_currency_exchange_rate() to Base_Report class.
  • Added support for refunds to VIES report.
  • Added method Base_Report::order_statuses_to_include(). The method allows to dynamically specify the orders to include in each report.

  • Fixed minor warning introduced in previous version.
  • Added Italian localisation.

  • Fixed bug in validation of VAT numbers at checkout. The bug caused the checkout process to continue, instead of being blocked, when an invalid VAT number was entered.

  • Fixed possible bug in WC_Aelia_EU_VAT_Assistant_Install::update_to_1_2_0_150215(). The bug could cause the auto-update process to be considered failed, even when the creation of the exchange rates table was successful.

  • Added wc_aelia_euva_order_is_eu_vat_number_required filter. The filter will allow 3rd parties to decide if a valid EU VAT number is required for specific countries.

  • Updated class used for requirement checking.

  • Fixed bug in UI of EU VAT MOSS report. The bug caused the selected options not to be used correctly when a custom date range was used to generate the report.

  • Added wc_aelia_euva_invoice_target_currencies filter.
  • Fixed bug in plugin settings management. The bug caused multi-select fields that were emptied (e.g. sale restrictions field) to be ignored if they were previously populated.

  • Added logging of VAT validation response.
  • Fixed initialisation of logger in EU_VAT_Validation.
  • Removed redundant initialisation of plugin hooks.
  • Fixed processing of translations:
    • Payment provider names.
    • Title of self certification field.
  • Added Finnish translations. Courtesy of Arhi Paivarinta.

  • Updated English .MO file.

  • Updated English localisation.

  • Fixed bug in recording of VAT data. The bug prevented the “tax payable to country” information from being recorded correctly.
  • Improved EU VAT Report:
    • Added check to skip processing of orders on which no taxes were paid.
    • Removed Country – Payable from the table.
    • Improved filtering of MOSS/non-MOSS data.
    • Added grouping of MOSS and non-MOSS VAT data.
    • Improved user interface and help information of Tax Types filter.

  • Updated build file to include language files.

  • Set minimum required version of Aelia Foundation Classes to

  • Improved validation of checkout data. The new logic should prevent cases in which a VAT number cannot be validated because customer’s country cannot be determined.

  • Fixed check on “shipping as evidence” on frontend JavaScript.

  • Changed selector for checkout form in frontend script. The selector was too specific and did not work with all themes. This prevented the self-certification box and VAT number field from behaving correctly.
  • Fixed check on “shipping as evidence” on frontend JavaScript.

  • Fixed incorrect variable reference in JavaScript. The bug prevented the self certification box from displaying the correct country name.

  • Handled case in which reports are run using ECB rates for a date in the future (e.g. for a quarter that is not yet ended).
  • Improved code documentation.

  • Extended EU VAT by Country report to allow use of ECB historical exchange rates:
    • Added Base_Report::get_last_day_of_quarter() method.
    • Added Exchange_Rates_ECB_Historical_Model::get_rates_for_date() method.
    • Added logic to automatically retrieve and store the exchange rates for a specific quarter.

  • Added Tax Rate Class information with the EU VAT data saved against each order.
  • Added update script for this version.

  • Added logic to produce the EU VAT reports using the ECB rates for the last day of the quarter.

  • Fixed JavaScript bug on checkout page. The bug prevented the self-certification field from updating correctly when the EU VAT number field was hidden.

  • Added extra checks to the EU VAT Number validation logic. The checks will keep track of validations that fail due to unexpected errors in the communication with the VIES service.
  • Disabled caching of VAT validation data when debug mode is active. This will force the VAT validation class to always perform live requests when in debug mode.
  • Fixed bug in handling of SERVER_BUSY response received from VIES service.

  • Added support for another URL format in the HRMC Exchange Rates Provider. The new URL format was unexpectedly introduced by HMRC in February 2015, and it doesn’t match the structure of any of the previous one. The update is backward compatible, and any of the formats supported will keep working.

  • Improved compatibility with WooCommerce 2.3:
    • Fixed issue with self certification box at checkout. The issue was caused by a breaking change in WC 2.3, which now renders checkbox fields in a different way.

  • Fixed warning on checkout page.

  • Fixed bug in automatic population of tax rates. The bug caused the rates to be saved with an incorrect country code.

  • Fixed query used to retrieve refunds for the VAT MOSS report.

  • Extended EU VAT Report to include the totals of sales and shipping charged to each country.

  • Fixed text domain.
  • Added Bulgarian translation, courtesy of Ivaylo Ivanov.

  • Fixed notice in Settings class.

  • Added support for additional tax rate fields. The fields will allow to identify not only to which country a VAT applies, but also to which country it should be paid.
  • Altered EU VAT by Country report to display the “country payable” for each tax amount.
  • Renamed class Aelia\WC\EU_VAT_Assistant\WCPDF\EU_Invoice_Price_Formatter to EU_Invoice_Helper.

  • Fixed notices on EU VAT Report page.

  • Fixed bug in recording of customer’s self-certification. Plugin always recorded “yes” even when the customer did not self-certify his location.
  • Fixed minor notice messages.

  • Added possibility to disallow sales to specific countries.

  • Removed display of an empty “VAT #” entry in customer’s address when such information is not available.

  • Improved UI.
  • Added WCPDF\EU_Invoice_Price_Formatter::reverse_charge() method. The method allows to quickly determine if an invoice is based on EU reverse charge rules, and print the related note on the invoice.

  • Fixed minor bug at checkout. The bug caused the wrong country to be used for VAT number validation when tax was setting to use customer’s shipping address.
  • Improved recording of VAT data against orders. Now basic VAT details, such as the exchange rate to VAT currency, are recorded for all orders, whether VAT was applied or not.
  • Improved display of VAT details in Order Edit admin page.

  • Extended Order::get_vat_data() method to allow retrieval of specific parts of the VAT data.

  • Fixed bug in reports. The bug caused reports for past quarters to appear empty.

  • Added support for the new (and unannounced) exchange rates feed used by HMRC.
    Updated language files.

  • Production ready.

  • Fixed JavaScript bug in Admin section.

  • Redacted FAQ.
  • Fixed minor bug in Order::get_vat_data().
  • Optimised in Order::get_vat_refunds().

  • Fixed import of Danish National Bank exchange rates.
  • Updated language files.
  • Optimised loading of JavaScript parameters for Tax Settings admin pages.

  • Added missing file (Danish National Bank interface was missing from WordPress repository).

  • Rewritten EU VAT by Country report to correctly process VAT refunds.

  • Fixed bug in handling of VAT refunds. Now VAT refunds are calculated on the fly on order edit view page.

  • Added exchange rates provider for Danish National Bank feed.
  • Added tracking of exchange rates provider against each order.
  • Improved validation of VAT rates to be used on WooCommerce > Tax settings page.
  • Reorganised Admin UI.
  • Added possibility to make the EU VAT Number field optional, required, required for EU countries or hidden.

  • Improved checks on of VAT validation responses. This will prevent issues caused by corrupt cached responses.

  • Updated requirements.

  • Added recording of the timestamp of the VAT currency exchange rate.

  • Fixed bug in handling of VIES response containing non-Latin UTF-8 characters.

  • Added caching of VIES WSDL to speed up VAT validation.

  • Fixed bug in VAT Number validation. The bug caused validation to fail when “odd” characters were returned by VIES service.

  • Fixed bugs in EU VAT by Country report:
    • Fixed incorrect reference to plugin class.
    • Fixed bug in range calculation.

  • Removed unused report.
  • Fixed bug in handling of VAT rates for Isle of Man and Monaco.

  • Fixed bug in handling of VAT rates for Isle of Man and Monaco.

  • Added exchange rates provider for HMRC feed.
  • Added VAT rates for Monaco and Isle of Man.

  • Fixed call to WC_Aelia_EU_VAT_Assistant::get_eu_vat_countries().

  • Replaced hard-coded table prefix with dynamic one in Order::add_tax_rates_details().
  • Added possibility to specify if shipping country should be used as location evidence.
  • Added possibility to customise the self-certification message.

  • Fixed call to auto-update mechanism (the wrong plugin ID was used

  • Rewritten EU VAT by Country report.
  • Fixed several minor warnings.
  • Added call to auto-update mechanism.

  • Added logic to save tax details (rate and label) with the VAT data associated to an order.
  • Order class now saves the tax rate and the tax country with the VAT data.
  • Reorganised reports:
    • Divided reports in WC2.1 and WC2.2 namespaces.
    • Restructured report class to promote code reuse.
    • Updated EU VAT report to include “processing” orders.
  • Added support for shipping tax refunds.
  • Rewritten code to calculate and save tax subtotals against the orders.

  • Added logic to fix incorrect country codes in the VAT Rates feed.

  • Fixed logic in validation of VAT evidence at checkout.
  • Refactored EU VAT by Country report.

  • Implemented scaffolding classes for report management.
  • Implemented EU VAT by Country report (draft, untested).

  • Improved recording of VAT data and evidence:
    • Reduced the amount of duplicate data stored in order’s “VAT paid” metadata.
    • Altered order metabox to calculate amounts in VAT currency on the fly.
    • Modified order VAT metadata to be stored as hidden fields.
    • Repurposed the “VAT paid” metadata to a more generic “VAT data”.
  • Added support for refunds (WooCommerce 2.2 and newer).
  • Improved UI.

  • Added logic to automatically append the VAT number to customer’s formatted billing address.

  • Fixed logic used to determine the availability of sufficient evidence about customer’s location.
  • Fixed bug in validation of sufficient customer’s location evidence.
  • Added integration with WooCommerce PDF Invoices & Packing Slips.
  • Added notice to invite site administrator to complete the plugin configuration.

  • Added extra filter to facilitate 3rd party integrations.
    • Added filter wc_aelia_eu_vat_assistant_get_order_exchange_rate.
    • Added filter wc_aelia_eu_vat_assistant_get_setting.

  • Added feature to allow automatic population of EU VAT rates.

  • Renamed plugin to EU VAT Assistance to avoid confusion with the existing EU VAT Compliance one.

  • Added initial support for subscription renewal orders.
  • Added validation of location self-certification field.

  • Added collection of the exchange rate used during the VAT calculation in Order::update_vat_paid_data() method.

  • Implemented handling of self-certification field:
    • Added field to checkout page.
    • Added logic to show/hide the field depending on the configuration, and on the presence of sufficient evidence or a valid VAT number.
    • Added logic to save the self certification flag against orders.

  • Improved logic that records VAT information against an order. Now data is recorded with subtotals for each tax rate.
  • Improved order metabox to display the VAT totals broken down by rate.
  • Improved UI of order metabox.

  • Added recording of VAT paid upon order completion.
  • Added recording of VAT evidence upon order completion.
  • Added meta box to display VAT information on order edit page.
  • Fixed bugs in handling of VAT details.

  • Implemented integration with Currency Switcher.
    • Added automatic update of exchange rates when Currency Switcher settings change.
  • Improved admin UI.
  • Added Settings::get_exchange_rates_method().
  • Added rounding of VAT amounts during conversion to VAT currency.

  • Improved look of admin UI.
  • Added settings for customer’s self-certification at checkout.
  • Added settings for currency management (exchange rates and VAT currency).
  • Added automatic updates of exchange rates.

  • Added EU_VAT_Validation class to validate EU VAT numbers using VIES.
  • Added view to render the EU VAT number field at checkout.
  • Added frontend validation of the EU VAT number.
  • Added caching of EU VAT validation responses.
  • Added plugin settings UI.
  • Added Order class template.
  • Added icons to indicate if VAT number was validated correctly.

  • First plugin draft.