Use this guide to find why WooCommerce’s manually configured tax rates produce a missing or unexpected tax amount. Start with a staging copy of your store and one taxable product, then change one setting at a time.
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.
Before you start
↑ Back to topHave a known customer address, the product’s tax class, and the expected rate approved for that address. For initial setup, follow Setting up taxes in WooCommerce. This guide checks software configuration; it does not decide which tax you must charge.
Check which service calculates tax
↑ Back to topIf a tax extension calculates rates automatically, use its own troubleshooting guide. For WooCommerce Tax, see the WooCommerce Tax documentation. For another provider, contact that extension’s support team. Manual rate-table changes may not resolve an automated calculation problem.
Check the basic tax settings
↑ Back to top- Under WooCommerce > Settings > General, confirm that Enable tax rates and calculations is selected. Save any changes. The Tax tab should be available.
- Under WooCommerce > Settings > Tax, check Prices entered with tax against the prices you actually entered for your products. Changing this option changes how WooCommerce interprets those prices; it does not rewrite the stored product prices.
- Check Calculate tax based on. Confirm whether the expected rate should use the customer shipping address, customer billing address, or shop base address. Use that same address when testing.
- Check the product’s Tax status and Tax class. A product must be taxable to have product tax calculated. Check individual variations if their settings differ.
- Compare the product page, cart, and checkout display settings before treating a difference between an inclusive and exclusive price as a calculation error.
Expected result: the Tax tab is available and your test product uses the intended address, class, and inclusive or exclusive price interpretation. If any setting differs, correct it on staging and repeat the same test before changing the rate table.
Find the rate for the test address
↑ Back to top- Open the rate table for the test product’s tax class under WooCommerce > Settings > Tax. Standard products use Standard rates; additional classes have their own tables.
- Check the country code and the country’s supported state code. State codes are not always two letters. An asterisk matches any value in a location field.
- For postcode matches, separate entries with semicolons. A wildcard such as 90* matches a prefix. A numeric range uses 90210…90215, with three dots; a hyphen is not range syntax.
- Check the city and postcode together when both fields are filled. Remove accidental spaces and confirm that the customer entered the intended address.
- Check the rate’s Priority. WooCommerce selects one matching rate per priority. More specific location matches can take precedence; moving a row to the top is not a reliable way to override the match. Different priorities can apply together.
- Save the rates and retest the same product, quantity, and address. Compare the rate name and percentage with the expected row.
If there is no tax, check that a saved rate matches all of the location fields and the product’s class. If there is too much tax, check additional priorities and whether a rate is marked compound. Use How taxes work in WooCommerce for calculation examples.
Check shipping tax
↑ Back to top- Confirm that the shipping method’s Tax status is taxable, where the method provides that setting.
- Under WooCommerce > Settings > Tax, check Shipping tax class. If it inherits from cart items, a cart with a Standard-class item uses Standard; otherwise the configured order of additional classes affects the selection.
- In the applicable rate table, select the rate’s Shipping checkbox. A product rate that does not allow shipping will not tax the shipping charge.
- Test one taxable product first, then test a mixed-class cart and a cart containing only non-taxable items. Confirm the shipping tax line for each case.
If shipping is still untaxed, confirm that the selected class has a rate matching the test address and allowing shipping. For setup details, see Setting up taxes in WooCommerce.
Check prices before the customer enters an address
↑ Back to topUnder WooCommerce > Settings > General, check Default customer location. This setting supplies an initial location; the address entered later can change the applicable tax rate.
If you use geolocation, check your MaxMind geolocation integration. Location detection is an estimate and may not supply the same detail as a complete billing or shipping address. Test both the first visit and checkout with an explicit address.
If prices appear to belong to another location, exclude personalized cart, checkout, and account pages from caching according to your host’s guidance. Check the dedicated General settings guide for the geolocation option intended for stores using page caches.
Isolate caching or extension conflicts
↑ Back to topUse a staging copy with the same tax settings and product prices. Keep a record of the original settings so you can restore them.
- Retest the same product and address in a fresh browser session. Clear the relevant site and browser caches.
- On staging, disable tax and pricing customizations one at a time. If needed, run a conflict test using WooCommerce and a default compatible theme.
- Compare the result with your original expected rate. If the issue disappears, restore components one at a time until the difference returns.
- Restore the staging configuration when finished. Apply a confirmed configuration fix to the live store only after checking its effect on the relevant addresses and product classes.
Check rounding and displayed prices
↑ Back to topSmall differences can come from rounding per line versus rounding at subtotal level. Check Round tax at subtotal level, instead of rounding per line under WooCommerce > Settings > Tax. Compare a one-item cart with a multi-item cart using the same rate. Include coupons, shipping, and the store currency’s decimal settings when reproducing the calculation.
Keep the rounding behavior required for your store. A custom rounding rule is not a general fix for an incorrect rate. For variable products, dynamic price-suffix placeholders are omitted from the parent price range; compare the selected variation and the cart before changing the calculation.
When the store needs a different tax policy
↑ Back to topManual rate tables do not provide every jurisdiction, exemption workflow, or external accounting integration. Ask a tax professional which policy applies, then choose a supported tax service or a reviewed customization that implements it. Check the provider’s current documentation for its coverage and limitations.
Developer customizations
↑ Back to topIf the confirmed requirements need custom code, ask a developer to review these separate guides. Each guide describes its scope and a staging test. A pricing customization does not decide legal eligibility for an exemption.
- Keep tax-inclusive prices across locations
Keep the same displayed product price when customers have different tax rates. - Assign a tax class by customer role
Apply a product tax class based on the signed-in customer’s role. - Show zero-value tax lines
Display existing zero-value tax totals on orders.
Get help with the reproduced problem
↑ Back to topFor a WooCommerce core issue, use the support link below. Include the WooCommerce version, address fields with personal details removed, product tax status and class, tax settings and matching rate row, expected amount, actual amount, and the staging conflict-test result. Do not include customer names, full orders, credentials, or payment details.
For a tax extension, send the same reproduction to that extension’s support team. For advice about rates or exemptions you must apply, consult your tax adviser.
Questions and support
↑ Back to topDo you still have questions and need assistance?
This documentation is about the free, core WooCommerce plugin, for which support is provided in our community forums on WordPress.org. By searching this forum, you’ll often find that your question has been asked and answered before.
If you haven’t created a WordPress.org account to use the forums, here’s how.
- If you’re looking to extend the core functionality shown here, we recommend reviewing available extensions in the WooCommerce Marketplace.
- Need ongoing advanced support or a customization built for WooCommerce? Hire a Woo Agency Partner.
- Are you a developer building your own WooCommerce integration or extension? Check our Developer Resources.
If you weren’t able to find the information you need, please use the feedback thumbs below to let us know.