Herzlich willkommen

EU VAT Enhanced

Follow these steps to install and configure the EU VAT Enhanced for Magento 2 / Adobe Commerce extension.

Installation

Please have a look for the detailed installation instructions at My Downloadable Products in your customer account section.

Magento Marketplace Installation

If you did purchase the extension at Magento Marketplace (now Adobe Commerce Marketplace), please find general installation instructions here.

Magento VAT Configuration

As you should have installed the module now, it needs to be configured according to your needs. Basically you have two options: automatic or manual configuration. Use our setup helper to create a basic default tax configuration, including tax rules and rates. Or if you have configured your store for calculating VAT already, you can proceed to the configuration of the extension and adjust it to your current configuration.

This is not tax advisory. As developers we can not know about your local tax law. The extension implements common functionalities and is/gets adjusted according to your feedback. Please let us know if you need any more enhancements.

Automatic Configuration with the Setup Helper

The automated setup efficiently handles all necessary steps, ensuring the proper creation of tax classes, tax rates, and tax rules. Additionally, it configures specific store settings to ensure the common/default workwise.

Upon completion of the extension installation, a notification will appear in the admin area. To initiate the setup, click on the "Configuration Helper" link. Please note that if you have previously configured Magento for VAT, you have the option to skip the setup process. In this case continue with the configuration of the extension.

Setup Notice
Setup Notice Admin Notification

The following page will appear. Within this page, fill out the required fields with your data.

Setup Screen
Setup Screen

Explanation of the setup fields

  • License Key: Your license key is visible in the downloads section of your customer account. Please use the same license key for all development and the production installation.
  • Installation Type: If you installed the module in the production installation, select "Production".
  • Domestic Country: Depending on the country selected, the tax rates and shipping origin will be configured.
  • Merchant VAT Number: Required for extended VAT number validation with return of a request identifier.
  • Apply store configuration for VAT: When enabled, the setup will set configuration values required for VAT calculation:
Store config path Value
general/country/default
general/store_information/country_id
tax/defaults/country
shipping/origin/country_id
Will be set to "Domestic Country"
general/store_information/merchant_vat_number Will be set to "Merchant VAT Number"
tax/classes/shipping_tax_class Will be set to the standard shipping tax class
tax/calculation/based_on Will be set to "Shipping Address"
customer/create_account/auto_group_assign Will be set to "No", this will disable Magento Core VAT validation.
customer/create_account/vat_frontend_visibility Will be set to "Yes", shows the address based VAT number field in frontend.
customer/address/taxvat_show Will be set to "No", will disable the account based Tax/VAT number field.
  • Create tax classes, rules and rates: This option can automatically set up common tax classes, rates and rules for VAT calculation. By default, it will create the rules for standard VAT calculation (at full rates of your country OR with the rate of each EU country). Additionally, you can choose if you need further rules for example for digital services or reduced products.
  • Tax class mapping: To be able to provide an automated setup, the function needs to know the internal IDs of the product and customer tax classes. Therefore we will remove the existing tax classes from your system and create new ones. Make sure to select the mapping of the new IDs to fit your requirements. Existing products and customer groups will get the new IDs assigned, instead of the old ones.

Now just click on [Run Setup] to run the setup. When the setup is finished, you will be redirected to the extension configuration settings.

If you did not use the options Apply store configuration for VAT or Create tax classes, rules and rates please continue with the manual configuration. Otherwise you can proceed with the configuration of the extension.

Manual Configuration

If you do not want to use the automated setup, this will guide you to the neccessary steps to create a default EU VAT setup in Magento 2.

When it comes to title the different classes rules and rates, of course you can use your own naming schema.

Create tax rules

For EU VAT calculation in different scenarios, there is no way around creating tax rules in your Magento store. In most cases you need to have one rule for each product tax class you have in use, like products at standard, reduced or even super-reduced VAT rate. For each rule you then assign the applicable tax rate for each country you deliver to.

To do that, navigate to Stores → Tax Rules, and create the tax rules as shown below, for example. If you don't need to deal with products at a reduced VAT rate (e.g., food, books, ...), then you don't need to create a tax rule for these types of products. The same applies to digital products, especially since July 1, 2021, when the One-Stop-Shop became valid, and you have to calculate the foreign countries' rate anyway.

Tax Rules Tax Rules
Example Tax Rules

Explanation of the tax rules

Imagine the point of view of a shop based in the Netherlands. The standard VAT rate in NL is 21%.

Consumers buy products with standard VAT: This is the basic standard rule required to calculate VAT for consumers. It applies to consumers and domestic businesses. For products and the shipping at standard rate, it will calculate 21% for each country listed in the tax rates section. For the tax rates, create one tax rate for each EU country with a rate of 21% — or when you need to apply OSS, with the rate of the country.

(Optional) Consumers buy products with reduced VAT: The same as above, just the product tax classes and tax rates change. For the tax rates, create one tax rate for each EU country with a rate of 6% (reduced VAT rate in NL) — or when you need to apply OSS, with the reduced rate of the foreign country for this type of products.

(Optional) Consumers buy digital products and services (MOSS rule for consumers): This rule is only needed if you sell digital content like downloads. It applies only to consumers, which should get calculated the VAT rate of their own country. For the tax rates, create one rate for each EU country with the standard rate of this country. For example: "NL digital VAT" has a rate of 21%, whereby "DE digital VAT" has a rate of 19%.

(Optional) Domestic businesses buy digital products and services: As the MOSS rule is only applicable to consumers from our experience, domestic businesses will get calculated at the standard rate of the domestic country.

EU Businesses buy VAT exempt: The last rule is for EU businesses with valid VAT number or for other cases where the zero rate is applied. Assign the customer tax class "Businesses excl. VAT" here together with all possible product tax classes. It is not strictly neccessary but when you create one tax rate for each country with 0% it may become available in Magento core to display the name of this rate, like "VAT zero rated BE".

Prepare customer groups

Navigate to Customers → Customer Groups. The use of customer groups is totally optional with the extension. The extension can dynamically apply the customer tax class depending on the customers VAT number validation results and the shipping address. The tax class of the customer group is just a fallback. Therefore it is optional if you want to assign customers to groups depending on the VAT number validation results.

For reference, we suggest these customer groups:

Setup of customer groups
Example Customer Groups

Configuration of VAT in Magento

There are several places at the Magento system configuration where the calculation of VAT is affected. Following we go through each setting areas step by step.

Enable the VAT number input field
  • Navigate to Stores → Configuration → (Customers) Customer Configuration
  • At Create New Account Options set Enable Automatic Assignment to Customer Group to No, to disable the Magento core VAT validation
  • At Create New Account Options set Show VAT Number on Frontend to Yes
  • At Create New Account Options set your Default Group eg. General
  • At Name and Address Options set Show Tax/VAT Number to No
Customer configuration
Customer configuration
Set the tax calculation method
  • Navigate to “Stores → Configuration → (Sales) Tax”
  • At Tax Classes set “Tax Class for Shipping“ to “Shipping with standard VAT rate”
  • At Tax Classes set “Default Tax Class for Product“ to “Products with standard VAT rate”
  • At Tax Classes set “Default Tax Class for Customer” to Consumers incl. VAT
  • At Calculation Settings set “Tax Calculation Based On” to “Shipping Address”
  • At Default Tax Destination Calculation set “Default Country” to your domestic country
Tax configuration
Tax configuration
Set the shipping origin

This will define the origin country from where you ship the goods. It has to be your your domestic country.

  • Navigate to “Stores → Configuration → (Sales) Shipping Settings”
  • Set the shipping origin country
Shipping Origin
Shipping Origin Country

Now you have done the basic settings required in Magento for EU VAT calculation.

Extension Configuration

Navigate to "Stores → Configuration → (Sales) EU VAT Enhanced". On this page you will find all the configuration sections which are described one after another below.

Module Information

This configuration section is on the extension configuration page at "Stores → Configuration → (Sales) EU VAT Enhanced".

EU VAT Enhanced Module Information
Module Information

Description of the configuration fields:

  • License Key: Set your license key which you can find at your customer account at “My Downloadable Products”
  • Installation Type: If this is your production installation, please select "Production".
  • Debug Mode: Enable to get a detailed log file about the tax calculation flow. To get useful information from it, you should only log specific requests. For example put something in the cart and go to the cart page. Then delete the log file and reload the cart page. Then you have only the specific log for your cart. Otherwise all other calculations for example for the catalog pages are also included in the logs and as this log file will grow very fast in size, it becomes useless.
Debug Mode should be disabled in your production environment because it will produce a very big file within a short time.

Interface Settings

This configuration section is on the extension configuration page at "Stores → Configuration → (Sales) EU VAT Enhanced".

Interface & AJAX settings
Interface settings

Description of the fields:

  • Requester VAT number: Put the VAT number of the requester (eg. your own VAT number) in here. It will be sent together with the VAT number to be validated, during all validation requests to the interface. When the requester number is sent together with the VAT number to be validated, the interface will return a request identifier. This request identifier is basically a confirmation number that the requester did validate the number at a given point of time.

    Whether this is a valid confirmation according to your local tax law is about to be discussed with your tax advisor.

  • Validation Interface: Which interface shall be used to validate the numbers. There is currently only "VIES" available to set, because the extension will automatically use HMRC for VAT numbers starting with GB.
  • IPv6 Compatibility: If you have general problems to connect to the interface, the IPv6 compatibility mode might help. It depends on your server setup if you need this option. Turn it on and set your servers IPv4 address to see if the connection is working then. Some interfaces still have problems handling IPv6 addresses.
  • Offline Validation Fallback: Whether to use syntax based offline validation in case the interface is not available. In such cases the number will be accepted as valid and can be validated later when the interface is available again.
  • Offline Validation Countries: Restrict the offline validation fallback to specific countries with this setting. The EU VIES interface works as a proxy to each EU countries interface and some countries will have a better uptime as others. We think that this works best when you select only countries for which you have known issues for, to have a more precise result on stable country interfaces.

VAT settings

This configuration section is on the extension configuration page at "Stores → Configuration → (Sales) EU VAT Enhanced".

The module supports the dynamic application of up to three different customer tax classes, like consumers and businesses which have to pay VAT and businesses which have not. We have assembled the most, if not all, frequent VAT calculation cases with the help of our customers. The definition of these cases is documented here .

VAT settings
VAT settings

Description of the fields:

  • Domestic country: Set your domestic country to identify domestic business customers.
  • Use dynamic customer tax class: This setting will enable the custom VAT descision, based on the customer address instead of the customer group like Magento core does. When enabled, generally all customers can purchase without VAT, when their VAT number is valid and the country does match. They do not have to be assigned to a specific customer group anymore.
  • Tax class consumer incl. VAT: This class will be applied when there is no VAT number on the customers address or if the VAT number is invalid.
  • Tax class business incl. VAT: This class will be applied when there is a valid VAT number on the customers address and the country is the same as the domestic country configured.
  • Tax class business excl. VAT: This class will be applied when there is a valid VAT number on the customers address and the country is different to the domestic country. This class will also be applied, when the country is not a EU member. EU member countries can be configured in the general store settings.

You can optionally disable certain groups from "being dynamic" in regards of the VAT calculation:

No dynamic calculation for groups
No dynamic calculation for specified groups

Also optionally, define countries where customers can not purchase without VAT even with a valid VAT number. It is not needed to select your domestic country here.

Always including VAT
Always including VAT Countries

Cross Border Trade

These configuration fields are on the extension configuration page at "Stores → Configuration → (Sales) EU VAT Enhanced" within the "VAT Settings" section.

If the main business of your shop is towards consumers, or for any other reason, you probably have set the admin prices to "Incl. Tax". Then you can choose to "Enable Cross Border Trade" at "Stores -> Configuration -> Tax".

If you do so then the business customers with valid VAT number will get the gross price, just without the tax amount. To calculate the real net price, navigate to "Stores → Configuration → (Sales) EU VAT Enhanced → VAT Settings" and enable "Disable Cross-Border-Trade (for valid VAT numbers)". Additionally you can control how you want to handle it for non-EU countries with the "Disable Cross-Border-Trade (for non EU)" setting from in the same configuration section.

Cross Border Trade and threshold countries
Cross-Border-Trade Settings

Description of the fields:

  • Enable customer country net price: Whether to use the net price at the countries rate instead of the net price of your domestic country.
  • Net price countries: Sometimes you need to calculate the VAT rate of another country, when you sell to customers within that country. In this case you change the tax rate(s) for the country at "Stores -> Tax Zones and Rates" accordingly. Select such a country here to also calculate the actual net price with the foreign country rate, instead of the domestic rate.

Delivery to the UK

This configuration section is on the extension configuration page at "Stores → Configuration → (Sales) EU VAT Enhanced".

This is a feature for EU based businesses. If you sell to consumers within the UK and you need to follow the new UK regulations, requiring you to collect 20% UK VAT for orders below 135 GBP, follow these steps to configure it:

Enable the feature in the extension configuration section:

Brexit Configuration
UK Delivery Threshold

Description of the fields:

  • Enable UK VAT Threshold calculation: Whether to use the calculation method
  • Threshold value: Value must be provided in GBP
  • Disable Cross-Border-Trade: To calculate the real net price instead of gross price without tax
  • Include shipping in calculation: Whether or not the shipping cost does count to the threshold value

If GBP is not your stores default currency, enable GBP as a currency and configure a conversion rate:

  • Navigate to "Stores → Configuration → Currency Setup"
  • Add "British Pound" to the list of "Allowed Currencies"
  • Get a free API key from fixer.io (or any other service) and save it to the corresponding field
  • Configure a daily scheduled import
  • Click "Save Configuration"

Now the extension will check if the order is going to the UK and apply VAT on the order, as long as the cart subtotal is below the configurable 135 GBP threshold. If it is above, the extension will set the order to 0% VAT.

Import One Stop Shop

This configuration section is on the extension configuration page at "Stores → Configuration → (Sales) EU VAT Enhanced".

If your non-EU based company supplies products or provides services to consumers in EU countries, there is a high likelihood that you will need to comply with the regulations around the Import-One-Stop-Shop procedure.

Enable the feature to calculate the corresponding VAT rate of the country unless the configured threshold value is exceeded. The value is calculated based on the net subtotal.

IOSS Configuration
IOSS Delivery Threshold

Description of the fields:

  • Enable non-EU to EU delivery VAT Threshold calculation: Whether to use the calculation method
  • Threshold value: Value must be provided in EUR
  • Disable Cross-Border-Trade: To calculate the real net price instead of gross price without tax
  • Include shipping in calculation: Whether or not the shipping cost does count to the threshold value

If EUR is not the base currency of your store, you need to enable currency conversion as follows:

  • Navigate to "Stores → Configuration → Currency Setup"
  • Add "Euro" to the list of "Allowed Currencies"
  • Get a free API key from fixer.io (or any other service) and save it to the corresponding field
  • Configure a daily scheduled import
  • Click "Save Configuration"

Shipping VAT Settings

This configuration section is on the extension configuration page at "Stores → Configuration → (Sales) EU VAT Enhanced".

Currently the module supports two algorithms to calculate the shipping VAT dynamically.

  1. Largest Total: When set to "Use the tax class with largest total", the shipping tax class will have the same product tax class as the cart item with the biggest row total.
  2. Highest Rate: When set to "Use the tax class with the highest rate", the shipping tax class will have the same product tax class as the cart item with the highest rate.

Configure the additional tax classes for reduced and even super reduced rates if you need it.

Magento dynamic shipping tax
Dynamic Shipping Tax Class

Description of the fields:

  • Use dynamic shipping tax class: Whether to apply one of the two algorithms described above.
  • Reduced product tax class: Select your product tax class used for products with reduced VAT rate
  • Reduced shipping tax class: Select your shipping tax class used for shipping with reduced VAT rate
  • Super reduced product tax class: If you need to, select your product tax class used for products with super reduced VAT rate
  • Super reduced shipping tax class: If you need to, select your shipping tax class used for shipping with super reduced VAT rate
You need to have the highest rate tax classes configured as the default. Navigate to "Stores -> Configuration -> Tax" and set the default tax classes to the ones which are assigned to the high/standard VAT rates.
Default tax classes
The default tax class must be the one for the standard/highest rate

Group assignment

This configuration section is on the extension configuration page at "Stores → Configuration → (Sales) EU VAT Enhanced".

It is optional to assign customer groups to customers based on the VAT number validation results. If you use it, you have to set all group assignments (leave none at -- Please Select --).

Choose the desired customer groups for the situations described in the configuration comments.

Magento dynamic customer group assignment
Customer Group Assignment

Additional description of the fields, others are self explanationary:

Overwrite actual customer group on guest orders: The customer group on orders from guests is usually NOT LOGGED IN. If you want, for example for ERP integration, enable this setting to have a group set on the order according to the group assignment selection.

Excluded Groups

This configuration field is on the extension configuration page at "Stores → Configuration → (Sales) EU VAT Enhanced" within the "Group Assignment" section.

If you use the group assignment and need special groups for discounts, select these here at "Excluded groups". Customers in the selected groups will not be assigned to other groups based on the configuration above.

Magento dynamic customer group assignment
Excluded Customer Group Assignment

Change price display by customer group

This configuration section is on the extension configuration page at "Stores → Configuration → (Sales) EU VAT Enhanced".

These options give you a better control over how prices are displayed. In general when there is nothing configured it falls back to what is configured at "Stores -> Configuration -> Tax -> Price Display".

You can change the display individually for the catalog, cart items and the subtotal.

Magento dynamic price display
Price Display Type by Customer Group

Description of the fields:

  • Catalog Product Price Display: The "Display Type" set for a "Customer Group" will be used for the prices in product catalog
  • Cart Product Price Display: The "Display Type" set for a "Customer Group" will be used for the prices in cart
  • Cart Subtotal Price Display: The "Display Type" set for a "Customer Group" will be used for the subtotal in cart

Note that these settings only apply to the display type and not whether the price actually includes or excludes VAT.

Integration Settings

This configuration section is on the extension configuration page at "Stores → Configuration → (Sales) EU VAT Enhanced".

These options control how the VAT number input field behaves in the frontend.

EU VAT Integration Settings
Integration Settings
  • Enable VAT field functionality: Enable or disable all field functionality like validating VAT numbers, giving hints about syntax and toggling visibility based on the country.
  • Enable Address fields on registration page: If enabled, the customer address input fields are shown at the registration, together with the VAT number input field. Your customers can register and will be assigned to the matching customer group, if group assignment is used.
  • Field validation at Customer Registration: Select which validation should apply for the customer registration "VAT number" field.
  • Field validation at Customer Address Edit: Select which validation should apply for the customer address edit page "VAT number" field.
  • Field validation at Checkout: Select which validation should apply for the checkout "VAT number" field.
  • VAT number field tooltip: A little help text, to guide your customers.
  • VAT number field placeholder: Allows to set a placeholder value for the VAT number field.
  • VAT number field delay: This controls after how many seconds the validation of the number will start and show messages about the VAT number syntax and validity.
  • Field visible countries: If you want to show the field only for specific countries, select them here. This field will only show countries, which are configured as "Allow Countries" at "Stores -> Configuration -> General".
  • Ask customer to set the country automatically: A confirmation popup will be shown to the user and will ask to set the address country according to the VAT number prefix. This can help avoid mistakes if the user forgets to change the default country.

Periodic Revalidation of VAT numbers

This configuration section is on the extension configuration page at "Stores → Configuration → (Sales) EU VAT Enhanced".

When enabled the module will reuse existing VAT number validation data for the period selected. This has several benefits and is recommended. It lowers the amount of requests to the interface which can be overloaded or not responding at all. It is also faster to reuse the data instead of querying the interface again.

The recommended setting for the period is Every Month.

Revalidation of EU VAT numbers
Revalidation Settings

Always revalidate invalid numbers (once a day): Once numbers are validated online negatively (invalid numbers) you might think that the number either is wrong or is not being used anymore. In reality it can happen that numbers become valid although they were invalid before. To handle this situation without waiving the revalidation period feature, the extension can try to validate invalid numbers once a day and on demand, for example when the customer logs in.


Congratulations! You should now have a well working default setup for your european VAT calculation needs. However as the module was developed based on requirements and wishes of its customers, we can not guarantee that this alone fulfills any national VAT compliance requirements of your specific country.

We recommend to go through each use case together with your tax advisor.