Setting up taxes and tax rates is one of the first tasks you want to perform when setting up a store. Taxes can be a complex matter, but WooCommerce aims to make the setup as straightforward as possible.
Enabling Taxes
To access the tax settings screens, they first need to be enabled.
- Go to: WooCommerce > Settings > General.
- Select the Enable Taxes and Tax Calculations checkbox.
- Save changes.
Configuring Tax Options
To start configuring taxes:
Go to: WooCommerce > Settings > Tax. This tab is only visible if taxes are enabled.
The Tax tab displays several options that can be set to suit your needs — settings you choose are based on the tax jurisdiction under which your store is located.
Prices Entered With Tax
This option is perhaps the most important when managing taxes in your store, as it determines how you input product prices later on.
- “Yes, I will enter prices inclusive of tax” means that all catalog prices are input using your store’s base tax rate.
For example, in the UK you would input prices inclusive of the 20% tax rate e.g. You enter a product price of £9.99 that includes £1.67 tax. A customer in the UK would pay £9.99 as defined, and a customer in the US would only pay £8.32.
- “No, I will enter prices exclusive of tax” would mean that your catalog prices need to be tax exclusive.
Using the example from above, a UK shop would enter 8.32 at the product price. A tax of 20% would be applied on top of this during checkout making the amount payable £9.99.
The tax calculation for tax-inclusive prices is:
tax_amount = price - ( price / ( ( tax_rate_% / 100 ) + 1 ) )
The tax calculation for tax-exclusive prices is:
tax_amount = price * ( tax_rate_% / 100 )
More information about:
Calculate Tax Based On
This setting determines which address is used for tax calculations.
- Customer billing address
- Customer shipping address (default)
- Store base address
If you use store base address, taxes are always based on your store location and not your customer’s location.
Shipping Tax Class
In most setups, shipping tax class is inherited from the item being shipped, e.g., Shipping a reduced rate item such as baby clothes would also use a reduced rate. If this is not the case in your jurisdiction, choose a different tax class.
In the case of multiple tax rates in the order, the shipping tax will be applied as follows:
- If you have a product with the
Standard
rate in the order, it will be used for the shipping regardless if this rate is high or low; - If you don’t have a product with the
Standard
rate in the order, then the first rate found in theAdditional tax class
section will be used for shipping.
The goal is to make sure that your highest rate is listed the first in the Additional tax class
section if you don’t use the Standard
class and if you need the highest tax rate to apply to shipping, for example.
Here is a setup to showcase it visually:
The Standard
class is there by default but Tax A
, Tax B
, Tax C
should be created for each tax class respectively. Note that it is not possible to delete the Standard
tax rate but you can leave it empty and it will be ignored:
Standard
rate is empty:
Tax A
(24%) – the highest rate listed the first:
Tax B
(14%):
Tax C
(10%):
As a result, the highest tax rate gets applied to the shipping in the order with multiple tax rates assigned to products:
Rounding
If you enable Rounding tax at subtotal level, instead of per line, the rounding is done at the Subtotal level. Check your tax jurisdiction to know if this is done.
Additional Tax Classes
Tax Classes are assigned to your products. In most cases, you want to use the default Standard class. If you sell goods that require a different tax class (i.e., Tax, except zero-rated products) you can add the classes here. To get started, we include Standard, Reduced Rate and Zero Rate tax classes.
Each class is listed at the top of the tax settings page – click a class to view tax rates assigned to the class.
Display Prices in the Shop
This option determines how prices are displayed in your shop/catalog. Choose from inclusive/exclusive tax display.
Display Prices During Cart and Checkout
This option determines how prices are displayed in your cart and checkout pages – it works independently of your catalog prices. Choose from inclusive/exclusive tax display.
Price Display Suffix
Allows you to change display to: “Prices include __% tax/VAT” or anything appropriate for your store. You can use these two placeholders if you want to have text before and after the price:
{price_including_tax}
{price_excluding_tax}
For example: “Price incl. VAT: {price_including_tax}
” will display as: “Price incl. VAT: $15” (if that is the price, of course). So, if you’ve set the taxes to display excluding tax, you could add in small print what the tax inclusive of tax will look like:
Suffixes on Variable Products
This functionality is turned off at Variable product level because it’s not possible to “know” the prices including/excluding tax. Prices come from variations, which can have different tax classes. E.g. you have a variable product with 2 variations and both are priced at $10. However, one variation has a tax rate of 20% and one has a reduced rate of 10%. What is the price including tax?
The only way to show accurate prices would be to load the variation and get its price, which adds extra overhead and still has edge cases where the values would be inaccurate.
Variations (the price revealed when you’ve selected a variation) do support suffixes because variations have a tax class/rate.
One can customise this method via filter hooks if needed for variable products, for example:
add_filter( 'woocommerce_show_variation_price', '__return_true' );
Display Tax Totals
This determines if multiple taxes get displayed as one total during checkout, or as an itemized list of taxes.
Setting up tax rates
Tax classes are displayed at the top of the tax screen. Click one to view tax rates for the class.
In the tax rates table, you can define tax rates (one per row). Click Insert Row to get started.
Each tax rate has these attributes:
- Country Code – 2 digit country code for the rate. Use ISO 3166-1 alpha-2 codes. Leave blank (*) to apply to all countries.
- State Code – 2 digit state code for the rate. See
i18n/states/COUNTRYCODE.php
for supported states. For the US, use a 2 digit abbreviation e.g. AL. Leave blank (*) to apply to all states. - ZIP/Postcode – Enter postcodes for the rate. You may separate multiple values with a semi-colon (;), use wildcards to match several postcodes (e.g. PE* would match all postcodes starting with PE), and use numeric ranges (e.g. 2000…3000). Leave blank (*) to apply to all postcodes.
- City – Semi-colon separated list of cities for the rate. Leave blank (*) to apply to all cities.
- Rate % – Enter the tax rate, for example, 20.000 for a tax rate of 20%.
- Tax Name – Name your tax, e.g. VAT
- Priority – Choose a priority for this tax rate. Only 1 matching rate per priority will be used. To define multiple tax rates for a single area you need to specify a different priority per rate.
- Compound – If this rate is compound (applied on top of all prior taxes) check this box.
- Shipping – If this rate also applies to shipping, check this box.
Tax rate examples
Here is an example of a tax setup for a UK store — 20% for UK customers only.
In this example, we have a 6% tax rate for all U.S. states except California, which has a 7% tax rate and a local tax rate of 2% for ZIP code 90210. Notice the priorities — this demonstrates how you can ‘layer’ rates on top of another.
Importing and exporting rates
There are Import CSV and Export CSV buttons below the table with the rates. You can use them to import and export tax rates to and from a CSV file.
The CSV file for importing requires 10 columns;
country code, state code, postcodes, cities, rate, tax name, priority, compound, shipping, tax class
Leave tax class blank for standard rates.
Below we’ve provided a sample tax rate CSV to import for the United States based on state tax only. This should not be used for production/live purposes, as tax rates frequently change. Double-check any rate for accuracy before using.
Download Sample Tax Rate CSV Here
Deleting tax rates
If you incorrectly added tax rates or the CSV import has incorrectly added tax lines, this information needs to be deleted.
To delete:
- Go to: WooCommerce > Settings > Tax > Your Tax Rates (Standard, Reduced Rate, Zero Rate)
- Select the incorrect lines by clicking on them. They are highlighted in yellow.
- Select Remove Selected Rows. This deletes the highlighted row(s).
- Save changes.
If you want to delete all tax rates at once, use Delete WooCommerce Tax Rates in WooCommerce > Status > Tools.
Viewing tax reports
Tax reporting can be found in WooCommerce > Reports > Taxes > Taxes by Date > Year. This report allows you view taxes for the year.
Going to Reports > Taxes > Taxes by code displays a different report, showing taxes separately.
Configuring special tax setups
Tax based on subtotal amount
Apply different tax rates based on the customer role
Frequently Asked Questions
Why do prices change when “Prices Include Tax”?
If you are entering prices including tax, you should be aware that this price might change based on the country in which your customer is located.
For example, your store is in the UK, so you create one tax rate for GB of 20%.
- You create a product with a tax inclusive price of £120.
- Customers in the UK will pay £120 (£100 + £20 VAT).
- Customers outside the UK will pay £100 because you do not have any tax rates set up for any other country.
OR
Your store is in the UK, so you create one tax rate for GB of 20%, a tax rate for France of 19% and Norway at 25%.
- You create a product with a tax inclusive price of £120.
- Customers in the UK will pay £120 (£100 + £20 VAT).
- Customers in France will pay £119 (£100 + £19 Tax).
- Customers in Norway will pay £125 (£100 + £25 Tax).
- Customers outside the UK, France or Norway will only pay £100 because you do not have any tax rates set up for any other countries.
This is explained in more detail at: How Taxes Work in WooCommerce.
Can I charge one amount regardless of customer location when defining prices including tax?
This can be done but is an experimental (not officially supported) feature. Read: How Taxes Work in WooCommerce.
When some users visit my store, taxes are not shown.
Since taxes are based on customer location in most setups, things like geolocation can make taxes hidden until the user checks out and inputs their real address.
To prevent this, go to WooCommerce > Settings > General > Default Customer Location to disable Geolocate and set to the Shop Base Address.
Why tax options are greyed out?
Tax options are greyed out if you have enabled automated taxes with WooCommerce Shipping & Tax:
To edit your tax options back, choose Disable automated taxes, and click Save changes.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article