Quick answer: To set up WooCommerce tax, first tick “Enable tax rates and calculations” under WooCommerce > Settings > General. A new Tax tab appears. There you choose whether your prices include tax, which address tax is based on, how shipping is taxed, how prices display, and which tax classes you need. Then add your rates in the Standard rates table, or import them from a CSV file, or turn on automated taxes through an extension. Finally, set each product’s tax status and class, and test a few orders with different addresses. WooCommerce does the calculations, but you are responsible for knowing which rates apply to your business, so check with an accountant.
Step 1: enable taxes
Go to WooCommerce > Settings > General and tick Enable tax rates and calculations. Save. A Tax tab now appears in the settings.
While you are on the General tab, check your store address and Default customer location. The default location decides which tax rate WooCommerce shows before a visitor enters their address. Options include no location, the shop base address, or geolocating the visitor by IP address.
Step 2: the main tax options
Open WooCommerce > Settings > Tax. The first screen holds the main options.
Prices entered with tax
Choose whether the prices you type into products include tax or not.
- Yes, I will enter prices inclusive of tax. Common in the UK, EU and Australia, where shoppers expect to see the final price.
- No, I will enter prices exclusive of tax. Common in the US and for B2B stores, where tax is added at checkout.
Decide this before adding lots of products. Changing it later means every price may need reviewing.
Calculate tax based on
Choose which address WooCommerce uses to pick a tax rate:
- Customer shipping address
- Customer billing address
- Shop base address
Shipping address is the usual choice for physical goods. Billing address is often used for digital products. Shop base address means everyone pays the same rate, which only suits certain businesses.
Shipping tax class
This decides how shipping costs are taxed. “Shipping tax class based on cart items” applies the same class as the products in the cart. You can also force a specific class such as Standard. Rules on taxing shipping vary between countries and states, so check what applies to you.
Rounding
The rounding option rounds tax at subtotal level instead of on each line. Some accounting systems expect one or the other, so match whatever your accountant or accounting software prefers.
Additional tax classes
By default WooCommerce includes Standard, Reduced rate and Zero rate. Add more if you sell items with special rates, for example children’s clothing or food in some regions. Each class gets its own rates table.
Display options
- Display prices in the shop: including or excluding tax
- Display prices during cart and checkout: including or excluding tax
- Price display suffix: text shown after prices, such as “inc. VAT”. Placeholders like
{price_including_tax}and{price_excluding_tax}can show both values. - Display tax totals: as a single total or itemized by tax name
For consumer stores, showing prices including tax throughout avoids surprises at checkout. For B2B stores, excluding tax is more familiar.
Step 3: add tax rates
Click Standard rates at the top of the Tax tab. Each row in the table is a rule with these columns:
- Country code: two letter code, such as US, GB or DE. Leave blank for all countries.
- State code: for example CA or NY. Leave blank for all states.
- Postcode / ZIP: you can use wildcards and ranges, such as
902*or90210...90299, and separate several with semicolons - City: separate several cities with semicolons
- Rate %: the tax rate, for example 20.0000
- Tax name: shown to customers, such as VAT or Sales Tax
- Priority: lets you stack rates, such as a state rate plus a county rate. Only one rate per priority applies.
- Compound: when ticked, this rate is applied on top of other taxes rather than on the base price
- Shipping: tick if this rate also applies to shipping
WooCommerce matches the customer’s address against the rows from most specific to least specific. A row with a blank country acts as a catch all.
Add rows for each reduced or zero rate class in their own tables if you use them.
Example: a UK store selling at 20 percent VAT
Country code GB, all other location fields blank, rate 20, name VAT, priority 1, shipping ticked. For EU customers you may need further rows, depending on your situation. Rules for selling digital services to consumers in other EU countries, for example, require charging the customer’s local VAT rate.
Example: a US store with nexus in one state
Add a row for your state with the state rate, then additional rows at priority 2 for county or city rates where needed. After the 2018 Wayfair decision, many states require out of state sellers above certain thresholds to collect sales tax too, which makes manual tables harder to maintain. That is where automated taxes help.
Importing rates from CSV
Use Import CSV at the bottom of the rates table to load many rows at once. Export your current table first to get the right column format. This is useful for US stores with many ZIP based rates.
Step 4: consider automated taxes
Maintaining rate tables by hand works for simple cases. For stores selling to many US states, it gets complicated quickly. Options include:
- WooCommerce Services with Jetpack, which can calculate rates automatically for supported countries. When active, an “Enable automated taxes” option appears in the tax settings.
- Dedicated tax extensions such as TaxJar or Avalara AvaTax, which calculate rates at checkout and can help with reporting and filing
These add a cost, but they reduce the risk of charging the wrong rate.
Step 5: set product tax status and class
Edit each product and look at the General tab of the product data box:
- Tax status: Taxable, Shipping only, or None
- Tax class: Standard, Reduced rate, Zero rate, or your own classes
For variable products, each variation can have its own tax class, which helps when, for example, sizes fall into different bands.
Bulk edit on the Products screen lets you change tax status and class for many products at once.
Step 6: test before going live
Place test orders with different addresses:
- Your home country or state
- A different state or region you collect tax for
- A country where you do not charge tax
- A cart with mixed tax classes
- With and without shipping
Check that the cart, checkout, order emails and invoices all show the right figures. Our guide to WooCommerce emails covers making order emails clear.
Tax and shipping, payments and digital goods
Tax settings interact with other parts of the store. WooCommerce shipping zones decide where you deliver and how much it costs, while tax rules decide whether shipping is taxed. If you sell digital products, billing address based tax is often more appropriate. For recurring payments, check how renewals handle tax in your subscription extension.
Common mistakes
- Switching between inclusive and exclusive prices after launch
- Forgetting the catch all row, so some countries get no tax when they should
- Using the shop base address when customer location should decide the rate
- Not ticking the Shipping column, so delivery is never taxed
- Assuming WooCommerce knows the law. It only applies the rules you give it.
FAQ
Does WooCommerce file my tax returns?
No. WooCommerce calculates and records tax on orders. Filing and paying tax is up to you or your accountant, although some paid tax services offer filing.
Why is tax not showing at checkout?
Common causes are taxes not enabled, no matching rate for the customer’s address, the product’s tax status set to None, or the customer’s address not entered yet.
Can I show prices including tax but charge some customers without tax?
Yes, with extra configuration or an extension, which is common for B2B stores handling VAT exempt customers with a valid VAT number.
How do I charge different tax rates for different products?
Create additional tax classes, add rates for each class, and assign the right class to each product or variation.
Get tax right before scaling
Tax settings are not exciting, but mistakes cost money and trust. Set them up carefully, test with real scenarios and review them when your business or the rules change. If you want a WooCommerce store that is set up properly and converts well, see our Turn visitors into customers service.