Please explain the “tax class translations” feature (cross-border threshold selling)

This feature (which exists in release versions 1.22+ of the plugin, from May 2021)  relates to VAT territories (such as the EU) which have cross-border registration thresholds. It was designed particularly with the June 2021- rules in mind. These rules allow sellers of physical goods who have a presence in one EU country (e.g. France) but who sell to other EU countries (e.g. Belgium, Holland) to treat the first €10,000 (total, not per-country) of their cross-border sales as having a place of supply in their own country (rather than in the customer’s). This results in less bureaucracy – it removes the need to account for VAT separately for the other EU countries until that threshold is met.

Before you read any further (this is important!)…

  • You must make sure that you are familiar with all standard WooCommerce tax concepts, as explained in the WooCommerce tax documentation, including product tax classes, tax tables, and taxation based upon customer location.
  • You must understand that we are no accountants or tax lawyers. VAT can get complex. We provide tools, not consultancy. The tools allow you to set up your store according to a great variety of possible configurations; but it is entirely your responsibility to understand what configuration is correct for you and that you comply with all relevant requirements.
  • If you are under this EU regime, then you should familiarise yourself with its basic ideas, by reading the EU’s guidance, available here.

Here’s what you need to know to correctly use this feature…

WooCommerce (as you know, if you’ve not ignored the material above!), places products in tax classes. A tax class is the concept used to group together goods (products) which are subject to the same tax rules.

If you have products which are potentially (if you happen to go over the sales threshold) subject to being taxable in the customer’s country (rather than in your, the supplier’s, country), then you should follow the steps below. Note that the example given here is for the EU July 2021- regime. If you are operating under a different regime, you should adjust the details to fit your case.

  1. Create a WooCommerce tax class / table for these products, and put those products in that tax class. You should do that even if you have not yet reached the threshold, the reason for which will become clearer in subsequent steps. That tax class will have an entry for each separate country, with its own tax rate, because if you meet the threshold, those products are going to be deemed as having been supplied in the buyer’s country (not the store’s country), taxed there, and you will be liable to remit taxes country-by-country (using, if you so choose, the EU’s One Stop Shop system to reduce the bureaucracy; that system is beyond the scope of this article or indeed our support, since it is a tax-paying arrangement between you and the EU).
    Setting up new tax classes is done in your WordPress dashboard in WooCommerce -> Settings -> Tax, in the ‘Additional tax classes’ setting. When you have saved that setting, a new tab will appear within the ‘Tax’ tab that you are on, and in that new tab you can set up the rates. (Please see the WooCommerce tax documentation linked near the top of this article).
    If you have done this correctly, then the tax table will have different rates for each EU country, like so:
    VAT rates varying by country
  2. You should choose the tax class(es) from 1. in our plugin’s setting “Tax classes used for customer place-of-supply goods”, found in WooCommerce -> VAT Compliance -> Settings -> WooCommerce VAT Settings:
    Selecting relevant classes
  3. You should also create a separate tax class and table for the products to control how they will be treated when your total sales are below the threshold (i.e. like in step 1, but this time a table of flat rates, one for each EU country). If done correctly, this will look like this:Rates the same for each country
  4. You may need to repeat the above steps for different types of products that you have – e.g. if you have some products subject to reduced VAT rates. Once you have created all the needed tax classes/tables (and assigned your products to the appropriate tax classes), you are now ready to configure the VAT plugin to dynamically. Go to the plugin’s settings in WooCommerce -> VAT Compliance -> Settings -> WooCommerce VAT settings, and find the setting “Tax class translations”. Press “Create a new translation rule…”. Inspect and edit the rule to fit your situation. Then, go to the bottom and save the settings. Here is an example screenshot:
    Tax class translation ruleNow it is hopefully clear why you assigned your products to the “variable” class, even before hitting the threshold for the year. The above configuration will cause WooCommerce (via the workings of the VAT plugin) to treat the product as actually being in the “fixed” (second-mentioned) class, until the threshold has been hit. The rule becomes active if, and only if, the product being considered is in the “variable” class.
    Don’t forget to save your settings!


  • The plugin will run its reports to take a total of all sales for the current year (beginning January 1st) twice-daily. i.e. On the day on which you pass the threshold, the adjustment will only be made once this 12-hourly point in time is reached. Our understanding is that this is an acceptable practice (i.e. it doesn’t have to be “at the very instant”), but all users are reminded that we are neither tax consultants nor lawyers. Shop owners can always trigger a full recalculation by clearing all transients (e.g. using this tool).
  • If you start mid-way through the year, and have not previously been using the plugin, then you will need to make your own calculation (e.g. using WooCommerce’s existing report / analytics facilities) of your current cross-border sales, and instead of entering the full year’s value in your settings (e.g. 10,000), first subtract the existing sales that were not counted by the plugin. (e.g. If you have made 2,500 worth of sales already, then 10,000 – 2,500 = 7,500, so enter that figure (without commas)).
  • Your sales to-date for the year is calculated using orders with any states (see WooCommerce documentation, here) except Pending Payment, Failed, Cancelled, Refunded. By default this means that the statuses counted are “Processing”, “Completed” and “On hold”. When shops add new order statuses, these tend to be post-payment statuses, which is why the default is to include other states. A PHP developer can adjust this using the provided filter wc_vat_compliance_report_year_to_date_totals_exclude_statuses.

Posted in: WooCommerce EU/UK VAT Compliance