VAT in the EU using Magento

Posted by: Genevieve Monday, October 24th, 2011

VAT – what’s the deal?

WebShopApps is based in the UK and we sell extensions all over the world, so like many eCommerce businesses, we have had to get our head around VAT rules.

Our understanding is that:

  1. VAT is charged at your local VAT rate to all non-VAT registered customers based in the EU
  2. For VAT registered business customers outside of your country in the EU, VAT is NOT charged ( they instead pay it themselves at their local rate)
  3. For customers outside of the EU, no VAT is charged

More information on the UK VAT rules are available from HM Revenue & Customs

If you already have your tax rules setup for the EU (1 & 3 above), you can skip the next section and jump down to ‘what about VAT registered business customers?’

How has WebShopApps set up VAT in Magento?

  1. First we have created product classes in Sales>Tax >Product Tax Class – we simply use Taxable Goods but you may need to have VAT standard, VAT reduced rate and Zero rated if you have products at different tax rates
  2. We then set up tax rates in Sales>Tax> Manage Tax Zones and Rates. We have one entry for every EU country with a rate of 20% and a rate for Jersey and the Channel islands of 0% (based on postcodes). We’ve exported our EU Tax Rates csv file, which you can import under Sales>Tax>Import/Export tax rates to save some time. EDIT: These rates are for B2B where tax prices are exclusive. If you are doing retail or you are using tax inclusive pricing, you will need to assign Guernsey and Jersey to their own country codes GY and JE. Thanks to Robbie Donaldson for the tip.
  3. Next we created a tax rule in Sales> Tax>Manage Tax Rules that applies to our product tax class (created in step 1), our standard customer groups and includes all of the tax rates (created in step 2)
  4. In our catalog we then select the Product tax class on our goods

Now we will be charging the correct amount of VAT to customers in EU countries and no VAT to customers outside of the EU.

What about VAT registered business customers?

Effectively, you have a group of customer that shouldn’t be taxed, no matter what they buy. So you need to set that at the customer tax class level.

  1. Create a new customer tax class under Sales>Tax>Customer Tax Classes, ours is called EU Business Customers
  2. Don’t apply any tax rules to this group, as they aren’t charged any tax
  3. Create a new Customer Group under Customers>Manage Customer Groups, again ours is called EU Business Customers, and assign your tax class in step 1 to it
  4. If you haven’t already, add the VAT number field to your checkout under System>Configuration> Customers>Customer Configuration> Name and Address Option > Show Tax/VAT number

Now when a customer checkouts and enters a VAT number you can verify it using the VIES service and if it’s valid, add them to the customer group you created in step 3, oh, and don’t forget to refund the VAT they got charged on their first order.
If, like us, you have hundreds of customers and many new ones each day, this manual processing quickly becomes a headache.

How can we help?

That’s why we wrote EU VAT Checker extension.
It will:

  • Check a customer’s VAT number during registration, at the checkout or from the admin panel for admin orders. This is done through the VIES web service, run by the EU.
  • Automatically add them to the correct customer group, so they only need to be validated once (for registered customers)
  • Remove the VAT from their order

It has lots of other features and configuration options so you can control, for example, what happens when the web service is down and whether to verify the syntax first. It’s a great little extension and comes with our full recommendation because we use it ourselves!

10 Responses to “VAT in the EU using Magento”

  1. jacopo says:

    your approach for VAT seems quite well thought, we may want to apply the same to our store.

    I do have another related question thou: it seems that your website redirect to the right store according to the user’s IP, is that the case?

    what did you use to do that?

  2. Thanks for this guys – there are loads of half baked Magento tax walk throughs out there but this one is one of the best. However!! Readers should take care if you are using the tax rates supplied here, they are perfect for a B2B operation like WebShoppApps but if you are doing retail then you will want to display prices inclusive of VAT. As I have eventually realised after a very frustrating few hours those rates won’t allow that as they have assigned both Jersey and Guernsey to the GB country code, which will override the UK VAT rate in the rule and prevent catalog prices displaying with VAT inclusive (even with all the other settings in System -> Configuration) correct. You need to assign them to their own country codes GY and JE.



  3. Genevieve says:

    Thanks Robbie, have updated the post with this tip.

  4. Genevieve says:

    Thanks for the feedback Jacopo. In answer to your question we use an extension from Mageworx called ‘Store and Currency Autoswitcher’.

  5. Marcello says:

    I don’t understand.. this system works also with NON-REGISTERED users (guests).. I mean.. the VAT / NO VAT issue should be dealt with at the CHECKOUT part of the flow… I can get it to work for registered users (using GROUPS) but I can’t deal with the situation of a non previously registered (and manuali added to a group!) user that is buying from a differen country… Either my system is default for VAT or for NON-VAT,.. but I can’t find a way for distinguish just before checking out.. for non-registered users… Is this possible and I am missing something?

  6. Genevieve says:

    Marcello, I’m assuming you don’t have EU VAT Checker on your system? You’ll need an extension to validate the VAT number during the checkout process and assign to the correct group. Email us at if you’d like more information.

  7. Genevieve says:


    Customers have previously created EU Exempt customer groups of their specialised pricing groups. You will need to manually move customers to these groups and use the “ignore groups” feature so they are no longer validated.


  8. James Simpson says:

    I think Magento have updated their system now, as the tax rules does not allow a zero value.

    You receive the following error = “Rate Percent should be a positive number.”

    This means the likes of Jersey where you have to enter “0” for the rate, cannot be done.

    You could add 0.00000001 but that causes rounding issues when getting to your payment gateway.

  9. Bram says:

    Hi the link to your extension doesn’t work anymore. Could you please publish a new link if the extension is still available and up-to-date?


  10. Josh says:

    Hi. We’ve discontinued this extension because Magento include it as standard since 1.7CE

Leave a Reply