How to configure specific tax setups in WooCommerce

The tax scenarios in this document are step-by-step guides that show how to configure specific tax setups in WooCommerce. They provide all the steps needed to achieve a particular outcome but without going into detail. Due to the uniqueness and variety of stores out there, the scenarios are not exhaustive and for illustration purposes only.

Refer to these additional guides for detailed descriptions of settings:

This documentation covers how to set up tax rates in WooCommerce, as well as how the platform handles taxes/VAT/GST based on these settings — not when or what to charge.

We are not tax professionals; our advice only applies to how to use our software. For advice on what — or when — to charge tax/VAT/GST etc., we recommend consulting a tax professional or accountant.

Every business is unique, and we are unable to cover all possibilities here.

Common Scenarios

Scenario 1: Charge customers the same tax rate as the Store Address

This example store is based in South Africa. It charges one rate of 15% VAT to all customers regardless of where they’re buying from or shipping to. It shows all its product prices including tax. 

The outcome of this setup is that all customers see and pay the same tax-inclusive prices for products throughout the store.

To achieve this outcome, follow the steps below. Use the default values where settings are not specifically mentioned. 

  1. General settings
  2. Tax settings
  3. Tax rates

Scenario 1 General Settings

  1. Go to WooCommerce > Settings > General and set Store Address to Cape Town, South Africa. 
  2. Set Default customer location to Shop country/region. 
  3. Enable taxes by checking Enable tax rates and calculations.
  4. Scroll to the bottom and click Save changes. 
Scenario 1 general settings for a Cape Town, South Africa store.

Scenario 1 Tax Settings

 

  1. Go to WooCommerce > Settings > Tax > Tax Options. 
  2. Set Prices entered with tax to Yes, I will enter prices inclusive of tax. 
  3. Set Calculate tax based on to Shop base address. 
  4. Set Display prices in the shop to Including tax
  5. Set Display prices during cart and checkout to Including tax. 
  6. Set Display tax totals to As a single total. 
  7. Click Save changes. 
Scenario 1 tax options showing tax-inclusive prices calculated from the shop base address.

Scenario 1 Tax Rates

 

  1. Go to Standard rates (the subtab near the the top of the screen)
  2. Click the Insert row button. 
  3. In the Rate % column enter 15. 
  4. In the Tax name column enter VAT. 
  5. Click Save changes. 
Scenario 1 Standard rate with a 15% VAT rate.

Verify that taxes work as you expect by running tests with a variety of addresses, both inside and outside of the store’s base country.

Scenario 2: Tax only certain countries based on customer shipping address

In this scenario the example store is based in the UK and sells world-wide. It taxes purchases for customers from only 3 countries based on their shipping address: 20% in the UK, 19% in France, and 25% in Norway. It does not collect tax for customers shipping anywhere else. Because of the varying taxes, it displays product prices excluding tax.

The outcome of this setup is that first-time visitors all see the same tax-exclusive prices for products. Once a shipping country is added to the address field on the cart/checkout page, taxes are calculated according to the respective tax rate for one of the 3 countries. If a customer’s shipping address is no in one of the 3 countries, prices continue to show as tax-exclusive and taxes are not charged.

To achieve this outcome, follow the steps below. Use the default values where settings are not specifically mentioned. 

  1. General settings
  2. Tax settings
  3. Tax rates

Scenario 2 General Settings

  1. Go to WooCommerce > Settings > General and set Store Address to a UK-based address.
  2. Set Default customer location to No location by default.
  3. Select Enable tax rates and calculations.
  4. Select Save changes.
Scenario 2 general settings for a Hexham, United Kingdom store with no default customer location.

Scenario 2 Tax Settings

 

  1. Go to WooCommerce > Settings > Tax > Tax options. 
  2. Set Prices entered with tax to No, I will enter prices exclusive of tax. 
  3. Set Calculate tax based on to Customer shipping address. 
  4. Set Display prices in the shop to Excluding tax.
  5. Set Display prices during cart and checkout to Excluding tax. 
  6. Set Display tax totals to Itemized (to show the tax rate names).
  7. Click Save changes. 
Scenario 2 tax options showing prices excluding tax and tax calculated from the customer shipping address.

Scenario 2 Tax Rates

 

  1. Go to Standard rates (the subtab near the the top of the screen).
  2. Click the Insert row button to enter the 1st tax rule. 
  3. In the Country Code column enter GB (the 2-digit code for the UK).
  4. In the Rate % column enter 20. 
  5. In the Tax name column enter VAT. 
  6. Click the Insert row button to enter the 2nd tax rule. 
  7. In the Country Code column enter FR (the 2-digit code for France).
  8. In the Rate % column enter 19. 
  9. In the Tax name column enter TVA. 
  10. Click the Insert row button to enter the 3rd tax rule. 
  11. In the Country Code column enter NO (the 2-digit code for Norway).
  12. In the Rate % column enter 25. 
  13. In the Tax name column enter MVA. 
  14. Click Save changes.
Scenario 2 Standard rates for France, the United Kingdom, and Norway.

Verify that taxes work as you expect by running tests with a variety of addresses, both inside and outside of the store’s base country.

Scenario 3: Use a countrywide tax, except in a specific state, add additional tax for a specific ZIP

The example store in this scenario is based in California. It sells and ships within the U.S. only. It charges 7% for sales that ship within the state, plus an additional 2% for shipping to specifically the 90210 ZIP code. Sales shipped to any other state are charged 6% tax. The order in which tax rules appear among priorities are important as the 1st rule that matches is used.

The outcome of this scenario is that all visitors see prices excluding tax until they enter their shipping details on the cart/checkout page, after which one or more taxes apply as determined by the tax rates.

To achieve this outcome, follow the steps below. Use the default values where settings are not specifically mentioned. 

  1. General settings
  2. Tax settings
  3. Tax rates

Scenario 3 General Settings

  1. Go to WooCommerce > Settings > General and set Store Address to a California-based address. 
  2. Set Default customer location to No location by default (first-time visitors will not see any tax info until they enter a shipping address). 
  3. Enable taxes by checking Enable tax rates and calculations.
  4. Scroll to the bottom and click Save changes. 
Scenario 3 general settings for a Beverly Hills, California store.

Scenario 3 Tax Settings

 

  1. Go to WooCommerce > Settings > Tax > Tax options. 
  2. Set Prices entered with tax to No, I will enter prices exclusive of tax. 
  3. Set Calculate tax based on to Customer shipping address .
  4. Set Display prices in the shop to Excluding tax.
  5. Set Display prices during cart and checkout to Excluding tax. 
  6. Set Display tax totals to Itemized (to show the tax rate names).
  7. Click Save changes. 
Scenario 3 tax options showing tax calculated from the customer shipping address.

Scenario 3 Tax Rates

 

  1. Go to Standard rates (the subtab near the the top of the screen).
  2. Click the Insert row button to enter the 1st tax rule. 
  3. In the Country Code column enter US (the 2-digit code for the U.S.).
  4. In the State Code column enter CA (the 2-digit code for California).
  5. In the Rate % column enter 7.
  6. In the Tax name column enter Tax. 
  7. In the Priority column enter 1. 
  8. Click the Insert row button to enter the 2nd tax rule. 
  9. In the Country Code column enter US. 
  10. In the Postcode / ZIP column enter 90210* (we add the wildcard (*) to apply this rule to ZIP+4 codes as well).
  11. In the Rate % column enter 2.
  12. In the Tax name column enter BH Tax. 
  13. In the Priority column enter 2. 
  14. Click the Insert row button to enter the 3rd tax rule. 
  15. In the Country Code column enter US .
  16. In the Rate % column enter 6. 
  17. In the Tax name column enter Tax. 
  18. In the Priority column enter 1. 
  19. Click Save changes. 

You’ll notice that the rules are automatically rearranged and grouped by priority once saved.

Scenario 3 Standard rates: 7% California tax, 6% US tax, and 2% tax for ZIP codes starting with 90210.

Here is how the tax rules are evaluated when a customer enters their address:

  • All Priority 1 taxes are evaluated first, from the top down as the rules appear in the table. 
  • The 1st criteria from the 1st rule is that the address is U.S.-based. 
  • If it is, the 2nd criteria is that the address is California-based. 
  • If it is, the 7% rate is applied, and the evaluation moves on to Priority 2 taxes. 
  • If the address is not California-based, it moves on to the next Priority 1 tax rate, and applies that instead. 
  • Next, Priority 2 taxes are evaluated. 
  • WooCommerce checks if the address is U.S.-based. 
  • If it is, it checks if the ZIP code starts with 90210. 
  • If it does, it applies the 2% rate (alongside the Priority 1 tax).
  • If the ZIP code does not start with 90210, the rate is ignored and only the one Priority 1 tax applies. 

The below illustrations show how the different tax rates apply to various addresses.

First, Hiouochi is in California, but outside the specific ZIP code, so only the 7% tax applies.

Cart for Hiouchi, California, showing only the 7% California tax.

Next, 90210 is in both California and match the specific ZIP code we targeted with the 2nd tax rate. As intended, this address gets 2 taxes applied.

Cart for Beverly Hills, California 90210, showing the 7% California tax and additional 2% ZIP tax.

Our last address is in Ann Arbor, Michigan, so only the more general U.S. tax applies to it.

Cart for Ann Arbor, Michigan, showing only the general 6% US tax.

Scenario 4: Use the highest Additional tax rate for shipping when Standard rate tax is not used

By default, shipping taxes rely on the Standard rate class. If no Standard rate products are present in an order, or you do not use that tax class, then the first rate in Additional tax classes is used. In that case, make sure that your highest rate is listed first in the Additional tax class section as illustrated below.

Note the additional classes: Tax A, Tax B, and Tax C. Create them by adding the names in the Additional tax class setting and Save changes. The names will appear as sub-tabs at the top of the screen. The Standard rates class cannot be deleted, but if left blank, it will be ignored.

Scenario 4 tax options with Tax A, Tax B, and Tax C listed as additional tax classes.

The illustration below shows the Standard rates class without any tax rules, thus empty.

Scenario 4 Standard rates table with no tax rates.

In the illustration below, the Tax A class is shown with the highest rate of 24%, so it’s positioned first on the list. One row is added to the rates table with the Country code set to US, Rate % set to 24, Tax name set to Tax 24%, and Priority set to 1. The rest of the columns have default values.

Scenario 4 Tax A rate of 24%.

The next illustration shows that the Tax B class is next. It’s the same as Tax A, except here the Rate % is 14 and the Tax name is Tax 14%.

Scenario 4 Tax B rate of 14%.

In this illustration the Tax C class is entered last and the settings are the same again as Tax B, except the Rate % is 10% and the Tax Name is Tax 10%.

Scenario 4 Tax C rate of 10%.

The outcome of this scenario is that the highest tax rate is applied to shipping when an order with multiple products is created, each product with one of the above tax rates assigned.

In the illustration of the order below, we see that the tax for Product 1 is $84 (on a $350 product). The Flat rate shipping of $10 is $2.40. Where the total for this 24% tax rate appears, we see that together it’s the sum of those parts, or $86.40, confirming that the 24% tax rate applied to the shipping, as we intended.

Scenario 4 order showing the 24% tax on Product 1 and on the  flat-rate shipping charge.

Scenario 5: Tax physical goods in one location, but virtual goods everywhere

The store in this scenario is based in the U.S. state of Kentucky where there’s a 6% state tax for physical goods shipped within the state. The store does not collect taxes on those same goods if shipped to outside the state. However, it also sells virtual goods for which it needs to collect taxes regardless of the customer’s shipping address. 

The outcome of this setup is that all products for a Kentucky address are taxed, whether that product is virtual or physical, but for addresses elsewhere, only virtual products are taxed. 

  1. General settings
  2. Tax settings
  3. Tax rates
  4. Product settings

Scenario 5 General settings

 

  1. Go to WooCommerce > Settings > General and set Store Address to a Kentucky-based address. 
  2. Set Default customer location to No location by default (first-time visitors will not see any tax info until a shipping address is entered). 
  3. Enable taxes by checking Enable tax rates and calculations.
  4. Scroll to the bottom and click Save changes. 
Scenario 5 general settings for a Lexington, Kentucky store.

Scenario 5 Tax settings

 

  1. Go to WooCommerce > Settings > Tax > Tax options. 
  2. Set Prices entered with tax to No, I will enter prices exclusive of tax. 
  3. Set Calculate tax based on to Customer shipping address. 
  4. In Additional tax classes add a new class e.g. Virtual Goods (we’ll assign this to products later).
  5. Set Display prices in the shop to Excluding tax.
  6. Set Display prices during cart and checkout to Excluding tax. 
  7. Set Display tax totals to Itemized (optional, this setting shows tax rate names).
  8. Click Save changes. 
Scenario 5 tax options with Virtual Goods as an additional tax class.

Scenario 5 Tax rates

 

<ol class=
Was this answer helpful? 0 Users Found This Useful (0 Votes)