Every one of the WooCommerce sales tax plugins on this page does the same headline job — look up the customer’s address, return a rate, add a tax line to the order. What separates them is what they cost per order once you are actually selling, how much time they add to a checkout that can never be cached, and what they do when the API on the other end does not answer. Those three things decide the bill; the feature grids do not.
Below are the criteria I judged each one on, a table with prices and version numbers I checked on 22 September 2026, and the specific weakness of every option including the free ones. One caveat first, and it is not a disclaimer for the sake of it: none of these plugins tells you where you are obliged to collect. That is a question for an accountant, and the plugin market is very good at blurring it.
Automated tax puts a third-party API call inside your checkout
This is the part that matters technically and almost never appears in a comparison post. WooCommerce recalculates totals whenever the cart or the customer’s address changes. With automated tax switched on, every one of those recalculations can become an outbound HTTPS request to a vendor’s API — on the cart page, again when the shopper types a ZIP code, again at checkout, and again when they change state in the dropdown.
Checkout is the one page you are not allowed to cache, so there is nowhere to hide that latency. If you have already been through which WooCommerce caching plugins break a store and which work, this is the same problem from the other end: your category pages are served from disk in 40 ms and your checkout is waiting on somebody else’s data centre. Live shipping rate lookups do exactly the same thing, which is why a store running both feels slow at precisely the moment it needs not to — see WooCommerce shipping methods compared for US stores for that side of it.
The failure mode to plan for. The tax API times out or returns an error and the order goes through with zero tax on it. Nothing is visibly broken, the customer is happy, and you find out at filing time that you owe money you never collected. Ask every vendor what their plugin does on a failed call before you commit, and then go and prove it yourself by pulling the API key out and placing a test order.
The five criteria I judged each WooCommerce sales tax plugin on
Stated up front so you can weight them differently if your store is shaped differently from the one I assumed — a US store selling physical goods, registered in a handful of states, doing somewhere between 50 and 2,000 orders a month.
- Cost per order at your actual volume, not the headline price. A $39/month subscription and a $0.50-per-transaction API are the same money at 78 orders a month and very different money at 1,000. Work out your own crossover point rather than reading a “starting at” figure.
- Does it calculate at checkout, or only report afterwards? Two well-known names in this market sell a reporting-and-filing product where the entry tier does not do real-time calculation at all. Buying the wrong tier gets you a monthly bill and a checkout that still uses your manual rate table.
- Behaviour on refunds and partial refunds. Refunding a US order means reversing the tax too, and the reversal has to reach the system you will file from. This is where plugins quietly diverge, and where a mismatch between WooCommerce and the vendor’s dashboard starts.
- Exemption handling. If you sell wholesale, someone will hand you a resale certificate. Either the plugin has a place to record that and zero the tax for that customer, or you are doing it by hand on every order.
- Dependencies you are taking on. A WordPress.com connection, a Stripe account, a separate SaaS contract. Each one is a thing that can be down, be disconnected, or change its pricing independently of your store.
WooCommerce sales tax plugins compared
Prices, version numbers and install counts come from each vendor’s own pricing page and from WordPress.org on 22 September 2026. Where a vendor does not publish a price — Avalara does not — I have said so rather than guessing at one.
| Option | Cost (checked 22 Sep 2026) | Calculates at checkout? | Files returns? | Where it falls short |
|---|---|---|---|---|
| WooCommerce core rate tables | Free, no external service | Yes, from your own table | No | You maintain every rate by hand. Fine for one state, unworkable across several, because local rates move and nothing tells you when |
| WooCommerce Tax (formerly Shipping & Tax) | Free. 500,000+ installs, v3.6.16, needs WP 7.0+ and PHP 7.4+ | Yes | No | Requires a WordPress.com connection to reach the tax API. US territories including Puerto Rico are outside the supported list, and your tax-class and price-display settings lock while automated taxes are on |
| Stripe Tax for WooCommerce | Usage-based. Stripe’s API pricing is $0.50 per Transaction API call plus $0.05 per Calculation API call, with up to 10 calculation calls free per transaction call | Yes | No on Tax Basic. Tax Complete ($90–$1,500/mo tiers) includes filing via Taxually | Live mode only — you cannot exercise it in a Stripe sandbox. No ship-from addresses. Refunds are supported but the Stripe Tax fees on the original order are not refunded |
| TaxJar for WooCommerce | Starter $39/mo, Professional $99/mo, 30-day free trial, roughly 10% off annually. 5,000+ installs, v4.2.10 | Yes | Yes, via AutoFile credits — 2/yr on Starter at $50 each after that, 4/yr on Professional at $55 each | Rated 2.6 out of 5 on WordPress.org on the day I checked, with maintenance and calculation complaints running through the one-star reviews. Read them before you sign an annual contract |
| TaxCloud for WooCommerce | Starter and Premium tiers priced by order volume; filing sold separately from $39/mo; 30-day trial that excludes filing and registrations. 500+ installs, v8.4.16 | Only on the tier that includes real-time calculation — the entry tier lists WooCommerce as data import for reporting | Yes, separately, with Streamlined Sales Tax state coverage | Smallest install base here, still shipping under its old simple-sales-tax slug, and tested only to WordPress 7.0.5 rather than 7.1 |
| Avalara AvaTax for WooCommerce | Extension is free; the Avalara account is a separate contract and Avalara does not publish its pricing | Yes | Yes, plus exemption certificates and cross-border duties | You cannot cost it out from a web page, which tells you who it is built for. Overkill and over-budget for a store doing a few hundred orders a month |
That is deliberately not a ranking. Two of the six are disqualified for most readers by the dependency column alone, and which two depends on your stack.
The free option is genuinely good, and it has two sharp edges
WooCommerce Tax is the default answer for a single-state US store and it costs nothing. Its description is plain about scope: it calculates by city, county and state at checkout, and it does not file returns, remit anything, or work out where you have an obligation.
Two things surprise people after they switch it on. The first is the WordPress.com connection — the plugin’s own FAQ says it is required to authenticate against the tax API, so a store that has deliberately kept Jetpack and WordPress.com out of its stack is being asked to let them back in. The second is that turning automated taxes on freezes your tax-class and price-display settings; if you sell tax-inclusive prices and want to change that later, you turn automation off, change it, turn automation back on.
And if you sell into Puerto Rico or the other US territories, check before you build on it. They are not in the supported-country list.
Stripe Tax bills per transaction, so do the arithmetic first
The Stripe Tax extension for WooCommerce is published by Stripe, sits at 30,000+ installs and v2.1.0, and is tested to WordPress 7.1.1 — so it is maintained, which is more than can be said for parts of this market. It is an API integration rather than Stripe’s no-code checkout product, and Stripe’s own documentation points you at the API pricing for it: $0.50 per Transaction API call, $0.05 per Calculation API call, with up to ten calculation calls bundled free with each transaction call.
Run that against your volume before anything else:
| Orders / month | Stripe Tax at $0.50/order | TaxJar Starter | Cheaper option |
|---|---|---|---|
| 50 | $25 | $39 | Stripe Tax |
| 78 | $39 | $39 | Line ball |
| 300 | $150 | $39 | TaxJar |
| 1,000 | $500 | $39 | TaxJar, comfortably |
Those figures assume one transaction call per order and no more than ten calculation calls alongside it, which is the shape of a normal checkout. A cart page that recalculates on every keystroke in the ZIP field is how you blow through the free calculation allowance, so watch that if your theme does something clever with address fields.
Three operational details from Stripe’s documentation that are worth knowing before you install rather than after. Tax is not applied at all until you add registrations for the jurisdictions you collect in — a fresh install calculates zero tax on everything and looks broken when it is working exactly as designed. The extension only runs in live mode, so there is no sandbox rehearsal. And refunds are supported and reduce your tax liability, but the Stripe Tax fee on the original order is not refunded, so a store with a high return rate pays for orders it did not keep.
If you are already weighing Stripe against other processors, the per-transaction tax fee belongs in the same spreadsheet as the processing fee — WooCommerce payment gateway fees explained for US stores has the rest of that arithmetic.
Reporting-only tiers are the trap in this market
TaxCloud’s WooCommerce plugin — still distributed under the simple-sales-tax slug, which tells you how long it has been around — advertises real-time calculation across all fifty states and, by its own count, 13,000-plus jurisdictions, plus nexus tracking and filing through the Streamlined Sales Tax programme. That is a lot of product for a plugin with 500+ active installs.
The thing to check is which tier you are buying. TaxCloud’s pricing page lists the entry tier’s WooCommerce integration as data import — good for return-ready reports, not a live rate at checkout — with real-time calculation and API access on the higher tier. Filing is a separate line item again, starting at $39/month, and unused filings do not roll over. None of that is hidden; it is just easy to skim past and end up paying a subscription while your checkout still reads from a manual rate table.
The same shape of question applies to Avalara. The WooCommerce extension is free and the Woo marketplace lists it as compatible with the block-based cart and checkout and with High-Performance Order Storage, which is the right answer technically. The cost lives entirely in the Avalara contract, which is not published. If a vendor will not show you a price, you are not the customer they built the pricing for.
Exemption certificates are where B2B stores get stuck
Sell to another business for resale and they hand you a certificate, and from then on their orders should carry no tax. Stripe Tax handles this per customer — there is a Stripe Tax Exemptions control on the WordPress user profile where you set a tax status, and that status feeds the calculation. Avalara goes considerably further and manages the certificates themselves, collecting them at checkout and applying the exemption automatically, which is most of the reason enterprises pay Avalara money. WooCommerce Tax does not have an answer here.
You also want the tax itemised on whatever document the buyer’s bookkeeper receives. PDF Invoices & Packing Slips for WooCommerce by WP Overnight is the established free choice — 300,000+ installs, v5.16.1 — and its free Taxes Summary add-on puts a tax breakdown table under the order details. Start there.
The adjacent gap is payment terms, because wholesale buyers rarely pay by card at checkout. WooCommerce ships “Direct bank transfer” and “Check payments” in core and both work as crude net-terms methods. My own Invoice Payment adds a proper pay-by-invoice gateway instead. Disclosure: I build and maintain that plugin. Judged by the same yardstick I have used on everything else here, it is at 10+ active installs and v1.1.7 — early software with almost no field history, and if that matters to you, the core gateways cost nothing and have been there for a decade.
Measure what it costs your checkout before you commit
Do not take a vendor’s word for checkout impact, and do not try to read it off a synthetic speed test either. Time the real thing. Drop this in a small plugin or your child theme’s functions.php, place a few test orders, then read the results in WooCommerce → Status → Logs:
add_action( 'woocommerce_before_calculate_totals', function () {
$GLOBALS['wpf_totals_start'] = microtime( true );
}, 1 );
add_action( 'woocommerce_after_calculate_totals', function () {
if ( empty( $GLOBALS['wpf_totals_start'] ) ) {
return;
}
$ms = ( microtime( true ) - $GLOBALS['wpf_totals_start'] ) * 1000;
unset( $GLOBALS['wpf_totals_start'] );
wc_get_logger()->info(
sprintf( 'Totals calculated in %d ms', (int) $ms ),
array( 'source' => 'wpfairs-tax-timing' )
);
}, 999 );
Take a baseline with automated tax switched off, switch it on, and compare. A well-behaved integration adds tens of milliseconds because it caches rates for repeated addresses. A badly behaved one adds two to four hundred every time the shopper touches the address form, and that is a number worth knowing before you build a checkout on it.
Then break it on purpose. Replace the API key with rubbish and place an order. If the order completes with a zero tax line and nothing in the log, you have found the failure mode described at the top of this page, and you need a monitoring answer rather than a plugin setting. Turning on WordPress debugging so you can read the error logs safely is how you see what the plugin swallowed.
What to pick at your store’s size
- One state, physical goods, any volume. WooCommerce core’s own rate table. One rate to maintain, no external call in your checkout, no subscription. Automating this is solving a problem you do not have.
- A few states, under roughly 80 orders a month. Stripe Tax if you are on Stripe already, because per-transaction pricing is cheaper than any subscription at that volume and the extension is actively maintained. WooCommerce Tax if the WordPress.com connection does not bother you and free beats everything.
- Several states, a few hundred orders a month, and you want filing off your desk. This is TaxJar’s or TaxCloud’s segment on price. Read TaxJar’s recent WordPress.org reviews first and check which TaxCloud tier actually calculates at checkout, then trial both — they each offer 30 days.
- Wholesale, exemption certificates, or selling across borders. Avalara, and budget for a sales call rather than a checkout page. Nothing else here manages certificates end to end.
- You are not sure where you are registered. Stop reading plugin comparisons and talk to an accountant. Every product on this page assumes you already know, and several of them silently calculate zero tax until you tell them.
Frequently asked questions
Does WooCommerce calculate sales tax without a plugin?
Yes. WooCommerce → Settings → Tax gives you standard and reduced rate tables with a CSV importer, and it applies them at checkout with no external service involved. The limitation is maintenance, not capability: US local rates change on their own schedule and nothing in WordPress will tell you when one moved. For a single state that is a non-issue. Across five states it is a recurring job you will forget.
Why is my store calculating zero tax after I installed a tax plugin?
Most often because you have not added a registration for the customer’s jurisdiction. Stripe Tax, for example, applies nothing until you list the jurisdictions you collect in. Check three things in order: that “Enable tax rates and calculations” is on under WooCommerce → Settings → General, that the plugin’s own enable switch is on, and that a registration exists covering the test address. If all three are right, the product’s tax code may make it non-taxable in that state, which is a correct zero rather than a bug.
Will an automated tax plugin slow down my checkout?
It adds at least one outbound API call to a page that cannot be cached, so yes, by some amount. How much depends on the plugin’s caching of repeated addresses and on how often your theme triggers a totals recalculation. Measure it with the timing snippet above rather than guessing — the difference between a good and a bad integration here is roughly an order of magnitude.
Do any of these plugins tell me which states I have to collect in?
Some offer nexus monitoring dashboards that flag when your sales into a state cross a threshold, and that is genuinely useful as an early warning. None of them is advice, and WooCommerce Tax’s documentation says outright that it does not determine where your business has an obligation. Treat the dashboard as a prompt to call your accountant, not as an answer.
What happens to tax when I refund a WooCommerce order?
WooCommerce reverses the tax line on the refund, and a well-integrated plugin pushes that reversal to the vendor so your filing reports match your store. Confirm it reaches the vendor’s dashboard by refunding a real test order and looking in both places, because this is where store and vendor records drift apart. Note that the vendor’s own fee for the original transaction is usually not refunded — Stripe states this explicitly.
Can I run two tax plugins at once as a fallback?
No. They hook the same WooCommerce tax filters and the result is unpredictable — double lines, or whichever plugin ran last silently winning. If you want a safety net, keep a maintained manual rate table in core as the state you fall back to when you disable automation, and switch deliberately rather than layering.
The short version
Work out your cost per order at your real volume before you look at a feature list, because that number alone eliminates half this market. Check that the tier you are buying calculates at checkout rather than only reporting afterwards. Test what happens when the API fails, since a silent zero-tax order is the expensive bug here and it does not announce itself. And if the deciding factor turns out to be how long your checkout takes, the tax plugin is one of several things adding time to it — shipping rate lookups and an uncacheable cart are the others.

Leave a Reply to This Post