WooCommerce LMS

Selling Courses Internationally? Why WooCommerce Block Checkout Tax Bugs Matter

WooCommerce 10.9.4 fixed VAT exemption logic in Block Checkout. Learn why this small tax fix matters for LMS stores selling courses internationally.

Small updates can easily be missed, but this one from last week is worth your attention.

WooCommerce released version 10.9.4 on July 7, 2026. This was a minor maintenance update with no security or database changes. However, if you sell online courses internationally, one fix is important: the update corrected VAT exemption logic in Block Checkout, so logged-in customers with VAT-exempt status are now handled correctly.

If your store uses a WooCommerce LMS and has international or tax-exempt customers, update and check your setup as soon as possible.

First, let’s quickly review what VAT is

VAT means value-added tax. It’s a consumption tax added to many goods and services, especially in the UK, the European Union, and other countries.

For example, if someone buys an online course for $100 and their country has a 20% VAT, the checkout adds $20, so the total is $120. The business keeps $100 and collects $20 for the government. In short, VAT is a tax added at purchase, and it’s important for tax compliance when selling online courses internationally.

A VAT exemption means a customer or purchase does not have to pay VAT by law. This often applies to B2B sales between EU countries or to certain charities and disability cases. If the exemption logic fails, buyers might be charged tax they shouldn’t pay or miss tax they should pay. Both situations cause problems.

Why this fix is important for course sellers

The Checkout Block is where customers see their totals and finish payment. According to WooCommerce’s documentation, the Checkout Order Summary shows the subtotal, fees, discounts, shipping, and a separate taxes row: everything that adds up to the order total.

In WooCommerce’s block setup, the server holds the key Cart and Checkout data. The exemption status must be correct on the server, so checkout totals show the right tax or exemption. If the logic fails, both the tax in the order summary and the final checkout amount can be wrong.

Just to clarify, WooCommerce did not say that all VAT-exempt customers were charged incorrectly. What’s confirmed is that version 10.9.4 fixed the VAT exemption logic in Block Checkout. If your LMS store sells to international or tax-exempt customers, testing this should be a top priority.

Your post-update checklist

Here’s how I would check a WooCommerce course checkout after this update. Start with this checklist.

  1. Make sure your store is updated. Test WooCommerce 10.9.4 or later on a staging site first, especially if you use the Checkout Block.
  2. Check your tax settings. In WooCommerce, go to Settings, then Tax. Make sure taxes are enabled, prices are set as inclusive or exclusive of tax as you want, tax is calculated from the right address, the course has the correct tax status and class, and all needed countries and VAT rates are set up.
  3. Test both types of customers. Place two test orders for the same course: one as a regular taxable customer, and one as a VAT-exempt customer. Since the fix affects logged-in users, make sure your VAT-exempt test account is logged in.
  4. Check the results. The taxable customer should see VAT added, while the exempt customer should not.
  5. Change the checkout address and test with addresses from your store’s home country, an EU country, and a non-EU country.
  6. Watch for recalculation. The tax total should update whenever the billing or shipping address changes.
  7. Compare the Block and classic checkout. If the issue only happens in the Checkout Block, try the classic checkout shortcode. This helps you see if the problem is with Blocks or your overall tax setup.
  8. On your staging site, turn off any plugins that might conflict, like VAT validation, tax exemption, B2B, wholesale, checkout customization, caching, and automated-tax plugins. Then turn them back on one by one until the issue comes back.
  9. Check the test order. Look at the subtotal, tax lines, final total, customer exemption status, billing country, and order notes. Make sure the order summary, payment total, order record, and invoice all match.

Remember to retest VAT validation, tax exemption, membership, B2B, and LMS enrollment integrations. Checkout bugs often show up where plugins interact.

Monitoring after release

Use WooCommerce → Analytics → Taxes to track taxes collected over time. If you see unexpected increases, drops, or zero-tax orders, it could mean there’s a configuration or exemption issue.

Check WooCommerce → Status → Logs for PHP errors and logs from payment, VAT, or automated-tax plugins. Logging usually records new transactions, so after turning it on, create a new test order to see if the issue appears.

As a regular habit, place one taxable and one VAT-exempt test order after every WooCommerce, checkout, LMS, or tax plugin update. Write down the expected course price, VAT amount, and final total so you can spot any differences right away.

Small release, small fix, but VAT for online courses is exactly the kind of thing you want boringly correct. Fifteen minutes of testing now beats untangling exemption discrepancies at tax time, so start with the VAT-exemption check.

Frequently asked questions

Plugin conflictsWhich specific plugins are most likely to conflict with VAT exemption logic after this update?

Start with anything that changes tax totals or customer tax status at checkout: VAT ID validation plugins, EU VAT number checkers, tax exemption or “is_vat_exempt” helpers, B2B/wholesale plugins that force tax-free pricing, automated tax services (Avalara, TaxJar, and similar), and checkout customization or multi-step checkout plugins that replace Block totals. Caching and full-page cache plugins can also serve a stale exempt or taxable total to a logged-in user. Deactivate those on staging first, then re-enable one at a time while repeating a logged-in exempt checkout.

TroubleshootingWhat should I do if VAT exemption still fails after following the checklist?

Confirm the customer is logged in and that WooCommerce still marks them as VAT-exempt on their user profile. Compare Block Checkout against the classic checkout shortcode with the same account and address. If only Blocks fails, the issue is in the Block tax path or a Block-aware plugin. If both fail, dig into core tax settings, the course product’s tax status/class, and any filter that overrides woocommerce_customer_is_vat_exempt or cart tax calculations. Capture a fresh order after enabling WooCommerce → Status → Logs, then review the tax lines, billing country, and exemption flag on that order before opening a ticket with WooCommerce or the conflicting plugin.

International scopeAre there country-specific VAT exemption nuances I should be aware of beyond the EU?

Yes. The EU B2B reverse-charge model is the most common exemption path for digital courses, but it is not the only one. The UK has its own VAT rules after Brexit. Norway, Switzerland, Australia (GST), New Zealand (GST), Canada (GST/HST/PST), and several other markets apply consumption taxes to online courses with different registration thresholds, place-of-supply rules, and exemption categories. Charity, education, and disability exemptions also vary by jurisdiction. Treat “VAT-exempt” as a store-specific flag that must match local law, not a universal setting, and keep per-country rates and customer eligibility rules under WooCommerce → Settings → Tax current for every market you sell into.

TestingHow can I automate or streamline the VAT exemption testing process for frequent updates?

Keep two dedicated staging accounts: one taxable and one VAT-exempt, each with saved billing addresses for your home country, an EU country, and a non-EU country. After every WooCommerce, checkout, LMS, or tax-plugin update, run the same two orders and record expected vs. actual course price, VAT, and final total. A short Playwright or Cypress script against staging can place those checkouts headlessly and assert the tax row. Pair that with WooCommerce → Analytics → Taxes so unexpected zero-tax or spike patterns surface between releases. Fifteen minutes of repeatable checks beats ad-hoc testing every time.

Keep reading

More from the blog

Ready to sell certifications?

Branded learning, built on WordPress. Get Learn with Foundation and ship your first certification program this week.

© 2026 Learn with Foundation. All rights reserved.