WooCommerce Tax Not Calculating? Causes & Fix
If WooCommerce shows no tax at checkout — or a tax line of zero — taxes are usually switched on and working; the store just can't find a rate that applies to this customer and this product. Here's how to find the gap.
Last updated: 16 Jul 2026 · ~6 min read
The usual cause is that the customer's address matches no row in your tax table, so the rate resolves to zero. Open WooCommerce → Settings → Tax → Standard rates and check your rows aren't pinned to a state, city or postcode the buyer doesn't have — an asterisk (*) matches everything. The second cause: a product in the Zero rate class, or a class with no rates in it.
What "no tax" at checkout actually means
WooCommerce calculates tax by taking three things — the customer's address, the product's tax class, and your rate table — and looking for a row that matches all of them. If no row matches, it doesn't error. It quietly returns zero and carries on. That's why this failure is so easy to ship: the checkout looks fine, the order completes, the customer pays, and the shortfall only surfaces when you file.
From the customer's side there is nothing to notice at all. From yours, the tell is that the totals are internally consistent — subtotal plus shipping equals total, with no tax line, or a tax line reading zero. That's a matching problem, not a maths problem.
The most common causes (most likely first)
- No rate row matches the customer's addressYour table has rows, but they're pinned to a specific state, city or postcode range the buyer falls outside. Tax appears for some destinations and not others. Blank or
*in a column means "match anything" — a value means "match only this". - The product is in the Zero rate class, or a class with no rates definedTax works on most products but not this one. Check
Products → Edit → General → Tax class. Each class has its own rate table — a product in Reduced rate gets nothing if you only ever filled in Standard rates. - Taxes are switched off entirelyThe clearest tell of all: there is no Tax tab under
WooCommerce → Settings. The tab only appears once Enable taxes is ticked underWooCommerce → Settings → General. - The product's tax status is set to NoneSeparate setting from tax class, and easy to miss.
Products → Edit → General → Tax statusoffers Taxable, Shipping only, and None. Set to None, the tax class is irrelevant — the product is untaxed. - Tax is calculated from an address the store doesn't have yetTax is missing on the cart page but appears once the customer types their address at checkout. That's Calculate tax based on (under the Tax tab) resolving against an unknown customer address. Related: Default customer location under the General tab decides what the store assumes before it's told.
- Tax is being calculated — it's just baked into the displayed priceNothing is wrong. If prices are entered inclusive of tax and displayed inclusive, there's no separate tax line to see at checkout. Check the order's tax totals in the admin before you go changing settings.
Where to look first
- Open
WooCommerce → Settingsand look for the Tax tab. No tab? Taxes are off — tick Enable taxes under General (cause 3). That's the whole fix. - Open
WooCommerce → Settings → Tax → Standard rates. Take one address that's failing and read across the rows — does any row actually match its country, state, postcode and city? Loosen the columns to*to find out (cause 1). - Tax works on some products but not others? That's the product, not the address. Check Tax status and Tax class on the failing one (causes 2 and 4) — and check the class you chose has rates in its own table.
- Tax missing on cart but correct at checkout? That's expected until the store knows the address — check Calculate tax based on and Default customer location (cause 5) before treating it as a bug.
- Before changing anything, open a recent order in the admin and check its tax totals — if tax is there and just inclusive in the display, stop (cause 6).
Don't want to find out at filing time?
This one is quiet, and that's what makes it expensive — a tax table with no matching row doesn't throw an error, it just returns zero, and the gap compounds silently until you file. DiagnosticIQ's free dashboard checks whether taxes are enabled, whether your rate rows can actually match the addresses you sell to, and whether products are sitting in a tax class with no rates behind it — before the shortfall becomes a number you have to explain.
Get the free plugin →Made by Prima Digital — the team behind this guide. Free forever; no card to install.
How to know you fixed it
Run a test order to a real customer address in a region you expect to tax — the checkout should show a tax line with the right amount, and the finished order should show the same tax under its totals in the admin.
Frequently asked
Do I owe the tax on orders that already went through untaxed?
Usually yes — the liability doesn't depend on whether you collected it. Fix the rates first, then talk to your accountant about the orders already taken. This guide isn't tax advice.
Can I add tax to orders that already completed?
You can recalculate an existing order in the admin, but that changes the total after the customer paid. For orders already charged, it's a bookkeeping question, not a WooCommerce one.
Why does tax show on the cart for me but not for customers?
Your address is known — theirs isn't yet. WooCommerce falls back to whatever Default customer location is set to until they enter one.
Could a VAT or tax-exemption plugin be zeroing it?
Yes. EU VAT reverse-charge and B2B exemption plugins deliberately zero the tax for validated business customers. If it's zero only for some customers, check there before touching your rate table.