When WooCommerce tax looks wrong, freeze one basket and trace the price-entry setting, taxable address, product tax class and matching rate. Do not change the rate until you know which part differs from the intended setup. This is a technical configuration guide, not advice about where or what tax you must collect.
Get an approved expected result
Ask the person responsible for your tax setup to provide the expected treatment for a specific product and test address. Record whether the entered price includes tax, whether shipping is taxable under that setup, and whether the customer has a valid exemption handled by the store.
Use a test address appropriate to the approved scenario. Do not infer legal obligations from another store's checkout or copy its rates. A technically consistent calculation can still implement the wrong business requirements.
Follow the arithmetic
Here is an illustrative arithmetic example, not a recommended tax rate. A net price of 100 with an assumed 10% rate produces tax of 10 and a gross price of 110. If the entered 100 is already gross, the included tax is approximately 9.09, not 10. The two settings describe different inputs.
| Layer |
Evidence to compare |
| Price entry |
Inclusive or exclusive setting used when prices were entered |
| Location |
Shipping, billing or store address selected for calculation |
| Product |
Taxable status and assigned tax class |
| Rate selection |
Matching row or external tax-service response |
| Display |
Cart, shop and checkout display settings |
Expected treatment: Approved by tax owner. Calculation input: Price and location recorded. Order record: Matches controlled checkout. Receipt: Explains tax and rounding. Explanatory checklist, not a customer test result.
Separate core settings from an external service
Determine whether core tax tables or a tax-service extension supplies the result. If an external provider is involved, preserve its request reference and redacted response. Changing a core rate may not change a result owned by that integration.
For a core calculation, inspect the matching country, state and postcode rules, priorities and relevant tax class. Check whether a variation overrides the parent's class. Make one staging change at a time and record the before/after amount.
Test rounding without hiding a larger mismatch
A one-cent discrepancy across multiple items needs a different investigation from an entirely missing tax line. Compare line-level and subtotal rounding settings, quantities and discounts. Reproduce with one unit, then several units. Keep the same address so location is not another variable.
Do not rewrite historical orders or refunds just to make a report total match. If the initial order was correct but a refund or exemption appears inconsistent, continue with the tax-exempt refund cross-check.
Verify the complete record
Check cart, checkout, order details and the customer email against the approved example. Include one discounted basket and one shipping charge when those are relevant to the store. Confirm any differences are explained rather than silently rounded away.
HandL WP can trace the configuration and integration. Supply the approved expected calculation and anonymized test basket; leave legal tax decisions with your qualified adviser.
References: WooCommerce tax settings and core tax troubleshooting.
References reviewed October 4, 2026. Examples are explanatory; production changes require an appropriate backup and authorized access.