How to Set Up US Sales Tax in WooCommerce
The same $24 product costs one price in Texas and another in California: set up US sales tax in WooCommerce with state and local rates, tax on shipping, and a test at checkout.
Watch the tutorial
This tutorial builds the setup from scratch in a fresh test shop, using only stock WooCommerce: entering prices without tax, basing tax on the customer's address, tax classes and tax status, a rates table with state rows and a local row, whether shipping is taxed, and a live checkout test in two states. Then we go through three common mistakes. No code needed.
Also on YouTube (opens in a new tab)
Read the transcript
The same $24 product costs one price in Texas, and another in California. Here's how to set up US sales tax in WooCommerce, using only what comes with it. We'll build it in a fresh test shop, with a few state rates. Those rates are demo values. And this isn't tax advice. So check what applies to you, with a tax professional or your state's tax agency. First, how WooCommerce works out sales tax. In the US, prices usually don't include tax. So you enter each price without it. WooCommerce looks at the customer's address. It finds the row in your tax rates table that matches their state, and, if you've added them, their ZIP code or city. It adds that tax on top, as its own line at checkout. You decide which places get a row. And what each row charges.
Open WooCommerce, then Settings. First, check the store address. This is your shop base, the address WooCommerce treats as yours. Here, it's Austin, Texas. Further down, tick Enable tax rates and calculations, and save. A new Tax tab appears. Open it.
Prices entered with tax: choose No, I will enter prices exclusive of tax. That's the usual way in the US, and it's WooCommerce's default. If you chose Yes, WooCommerce would read a $24.00 price as already including tax, and take the tax out of it. Calculate tax based on: keep Customer shipping address, so the rate follows where the order is going. Shop base address would charge every customer your own state's rate. Some states tax by where the seller is, and others by where the buyer is. So check which applies to you. Leave Shipping tax class on based on cart items. We'll come back to shipping. Display prices in the shop, and during cart and checkout, stay on Excluding tax. Customers see the price before tax, and the tax is added at checkout. Display tax totals: Itemized shows a line for each tax rate, with its name. As a single total adds them into one line. We'll keep Itemized. These are all WooCommerce's defaults, so nothing needs to change. Click Save changes.
Tax classes let you charge different rates on different products. WooCommerce starts with Standard rate, plus Reduced rate and Zero rate, listed here under Additional tax classes. You can change that list, one class per line. A simple shop can leave every product on Standard rate. Open a product, and on the General tab, the price is marked ex. tax, and Tax class is Standard. Tax status is Taxable. The other choices are Shipping only, and None. We'll come back to those.
Now the rates. Open Standard rates. Each row has a country code, a state code, an optional ZIP code and city, then a rate, and a name. Click Insert row. The country code is US, the state code is TX, and the rate is 6.25%. The name is what customers see at checkout, so we'll call it Texas sales tax. Priority one is fine. Compound stays unticked, because that's for tax charged on top of other tax. Shipping is ticked by default, so this rate applies to shipping too. Add a row for California: country US, state CA, rate 7.25%, named California sales tax. Many cities and counties add their own tax on top of the state's. For that, add a row for the same state, with a ZIP code or city. Here's Austin: ZIP codes starting 787, at 2%. Give it priority two. WooCommerce uses only one matching rate for each priority, so a second priority is how the two rates are added together. In the ZIP field, a star is a wildcard. You can also use ranges, or several values separated by semicolons. Save changes. For a long list, you can import a CSV file instead. Remember, these rates are demo values. Look up the real ones for the places where you collect tax.
Now the shop. Prices show without tax, so the dripper is $24.00. In the cart, the total says Estimated. Until the customer gives an address, WooCommerce uses a default location, which here is the store's own state. The tax line uses the name from the rates table.
Now shipping. Here's a flat rate of $5.00, with Tax status set to Taxable. Shipping costs are entered without tax. WooCommerce adds tax on top, when the rate row has Shipping ticked. Whether shipping is taxed differs between states, so check yours. For this demo, we'll untick Shipping on the California row. Texas keeps Shipping ticked. Save changes.
Time to test. The dripper is in the basket, and the address is in Austin, Texas. The item is $24.00, and shipping is $5.00. Tax shows as two lines: Texas sales tax, and Austin local tax. They add up to $2.39, so the total is $31.39. That includes tax on shipping, because Shipping is ticked on both rows. Now change the address to Los Angeles, California: the state, the city, and the ZIP code. One tax line this time: California sales tax, $1.74. It's only on the item, because Shipping isn't ticked on that row. The total is $30.74. Always test each state you sell to, the way a customer would.
Now some common mistakes. The first is where you charge tax. Here's a customer in New York. We have no row for New York, so WooCommerce charges no tax. Whether you should collect tax there is a different question. It depends on nexus, which means a legal connection to a state, such as a physical presence, or enough sales there. WooCommerce doesn't track that for you. It only charges where there's a row. So find out where you must collect tax, with a tax professional, and add a row for each of those states.
The second is treating rates as fixed. Here's a customer in Dallas, Texas. They get the state rate only, because we haven't added a local row for Dallas. Local rates vary from place to place. Rates also change over time, and WooCommerce never updates them for you. When one changes, edit the row, and save. Some tax services and extensions look up the rate for each address automatically. The Explore solutions link at the bottom of this page opens WooCommerce's list. We're not recommending one, so compare them for yourself.
The third is a product's tax status. Here the dripper has been set to None by mistake. Now the checkout has no tax at all, not even on shipping, whatever the rates table says. None means never taxed. Shipping only means the product isn't taxed, but its shipping is. Set it back to Taxable, and update the product. Now the tax lines return. Whether a product should be taxed depends on your state's rules, so check each one.
To recap: enter prices without tax, and base the tax on the customer's address. Add a row for each state where you collect tax, with a second priority for local rows. Check shipping, your rates, and each product's tax status, and test from a few states. This video covered US sales tax. If you sell in the UK or EU, VAT works differently, and we have another video on that. Everything shown is stock WooCommerce, with demo rates and no tax advice. Thanks for watching.
What you will learn
- Where your store address (the shop base) is set, and how to turn on taxes
- What "Prices entered with tax" and "Calculate tax based on" really change, and why the US norm is prices without tax
- How to add rows to the Standard rates table: country, state, ZIP code and city, rate, name, priority, compound and shipping
- How to add a local rate on top of a state rate using a second priority
- How the Shipping box on each rate row decides whether shipping is taxed
- How to test the result at checkout for a customer in Texas and one in California
- Three common mistakes: a state with no tax row (and what nexus means), rates that change or vary by place, and a product left on the wrong tax status
Good to know
This shows how WooCommerce behaves. It is not tax or legal advice, so check what applies to you with a tax professional or your state's tax agency. The rates in the video (Texas 6.25%, California 7.25% and an Austin local rate of 2%) are demo values for the test shop, not the rates you should charge. Whether you must collect tax in a state, which products and shipping are taxable, and the correct rate for each place are things only you can confirm. Automated tax services and extensions exist; no particular one is recommended or used here. Everything shown is stock WooCommerce (version 11.2 in this video) with no extra plugins, and screens may look slightly different in other versions. This tutorial covers US sales tax only; UK and EU VAT has its own tutorial. Filmed on a demo shop (Marlow Lane Coffee) with sample products and prices. The voice-over is a computer-generated voice.