WooCommerce 10.9.4 addresses a specific VAT exemption failure that can appear when a logged-in customer completes an order through the WooCommerce block checkout. The release fixed a problem involving the is_vat_exempt customer property, which was not correctly applied during this checkout flow. If a store uses a VAT-number or exemption extension, the result could be a checkout that appeared to contain the right customer information while the exemption was not applied as expected.
This is a software-behaviour and troubleshooting issue, not a general solution for VAT eligibility or compliance. The practical questions are whether the customer exemption state is persisted correctly, whether WooCommerce tax settings match the intended store configuration, and whether the complete checkout flow can be reproduced safely. The following process focuses on staging tests, logged-in customers, server-side checkout data, tax configuration, and careful separation of WooCommerce core behaviour from extension-specific logic.
What WooCommerce 10.9.4 Fixed
WooCommerce 10.9.4 was released on 2026-07-07. Its changelog identifies a bug in which the is_vat_exempt function did not work correctly during block-based checkout for logged-in users. In practical terms, the customer’s exemption property was not being applied reliably at the point when the Checkout block processed the order. This could make a valid test workflow appear to lose the exemption during checkout, even when the relevant customer information had been entered or was already associated with the account.
The underlying change describes the issue as a customer-object persistence problem during the Store API checkout flow. The update included regression-test coverage for WC_Customer persistence, which is relevant because the checkout must work with the customer object used during order processing rather than only with values displayed in the browser. The correction should therefore be understood as a specific compatibility and persistence fix. It is not a general VAT-calculation solution, a determination of customer eligibility, or a guarantee that every VAT extension and custom checkout integration will behave identically.
Why Logged-In Customers Need a Separate Block Checkout Test
The Checkout block processes an order through the Store API. For transactional data, WooCommerce relies on server-side information such as cart totals, taxes, customer details, addresses, shipping methods, and order data. This architecture means that a value visible in a field or displayed in the browser is not, by itself, proof that the same value was persisted to the customer object and used when the order was calculated.
Logged-in customers require particular attention because WooCommerce can work with saved customer information as well as the current checkout and session state. A customer may already have an account record, while the active checkout also contains address and exemption-related data. The is_vat_exempt property must be applied and read at the correct point in that lifecycle. The 10.9.4 issue specifically concerned logged-in users in block checkout, so a test using only a guest session may not reproduce the same path.
This does not mean that every block checkout differs from every shortcode checkout, or that a front-end difference automatically indicates a core defect. It means that the logged-in block flow deserves a controlled test of the customer record, checkout state, calculated tax lines, and resulting order. Those checks provide more useful evidence than relying only on the total shown before payment.
Pre-Test Checklist for WooCommerce Tax and VAT Settings
Before attributing a failed exemption result to WooCommerce 10.9.4, review the core tax configuration on a staging site. First confirm that tax rates and tax calculations are enabled. Then check the setting that determines whether tax is calculated from the customer shipping address, billing address, or the shop base address. That choice affects which location data WooCommerce uses when matching a rate.
Next review the product tax class and the applicable tax-rate rows. Check the country, state or region, postcode, and city fields used for matching. Also review the rate priority, compound status, and whether shipping is taxable where those settings are relevant to the store’s configuration. A missing or unexpected tax line can result from these rules rather than from the logged-in block-checkout persistence issue.
- Confirm that tax calculations and tax rates are enabled.
- Record the selected tax calculation basis: shipping address, billing address, or shop base address.
- Check the product tax class and matching location fields.
- Review rate priority, compound settings, and shipping-tax treatment.
- Record whether an automated tax service or VAT-related extension supplements or overrides core settings.
Make these changes and comparisons in staging first. Do not treat a tax-table result as a jurisdiction-specific conclusion about eligibility, documentation, invoicing, or record retention.
A Safe Staging Test for VAT Exemption
Use a staging site or another private, isolated environment before changing live tax settings or testing checkout extensions. Activate the relevant EU VAT Number or exemption extension, prepare non-production customer data, and create a separate test customer account. The documented reference scenario uses an Irish store address with Irish VAT, so reproducing that configuration can make the result easier to compare with the upstream verification flow.
- Confirm the tax settings and applicable test rate before starting.
- Use a test product, test customer account, test address, and non-production VAT number.
- Begin in a private browsing session so that existing customer and checkout state does not obscure the result.
- Add the product, open the Checkout block, and log in during the checkout flow.
- Submit the order using BACS, as in the documented reference test, rather than placing a real customer order.
- Check the VAT-number validation result, VAT deduction, subtotal, tax lines, customer account data, and recorded exemption status separately.
A zero-tax total alone is not sufficient evidence that the intended exemption workflow was applied. The order should be inspected alongside the customer data and validation result. If saved customer state is relevant, repeat the test with a separate non-production account or after clearing the test session. That is additional quality assurance, not a documented requirement for the 10.9.4 fix.
The Irish configuration, EU VAT Number extension, logged-in customer, Checkout block, and BACS method form a reproducible reference scenario. They do not prove that every country, payment method, tax service, extension, or custom workflow behaves in the same way.
How to Interpret the Test Result
If the VAT number is validated, the expected VAT deduction appears, and the order records the relevant customer and exemption information, the result supports the conclusion that the tested logged-in block-checkout flow handled the exemption property correctly in that environment. Record the WooCommerce version, extension versions, tax configuration, customer status, checkout type, and payment method so that the result can be repeated.
If the issue continues after updating, first compare the tax tables, address rules, product tax class, and customer record with the successful or expected scenario. Then investigate the VAT extension, automated tax service, caching, payment integration, and custom checkout code. These areas can influence the result independently of the core persistence correction. A separate test account can help determine whether saved customer data is involved, while a controlled comparison with another checkout implementation can provide diagnostic context without proving that one checkout type is universally correct.
Do not assume that updating to 10.9.4 resolves every VAT exemption failure. A successful software test also does not establish legal compliance or confirm that the customer has met jurisdiction-specific requirements.
Extension and Compatibility Checks
Before drawing conclusions, create an inventory of the tested environment. Record the active WooCommerce and WordPress versions, the VAT or tax extension versions, the payment method, the Checkout page configuration, and any checkout-field customizations. This information helps distinguish a core WooCommerce behaviour from an integration-specific result.
Review each extension’s available compatibility information and release notes before updating it. In particular, check whether the extension documents compatibility with Cart and Checkout blocks. The supplied research does not establish compatibility for every VAT exemption plugin, payment integration, or custom checkout implementation, so compatibility should be verified in the actual staging configuration rather than assumed from the WooCommerce core update.
On staging, temporarily disable nonessential checkout customizations and test the basic flow first. Reintroduce integrations in a controlled sequence, recording the result after each change. Keep the 10.9.4 core correction separate from third-party eligibility logic, VAT validation services, and custom code. Do not edit WooCommerce core files or manually copy a pull request patch as a workaround. Use an official stable release and check the involved extensions instead. For store-specific extension planning, explore WooCommerce plugins and extensions without assuming that any particular product guarantees VAT compatibility.
When to Escalate the Problem
If a controlled staging test still fails, collect evidence before changing more settings. Include the WooCommerce and WordPress versions, checkout page type, active tax and VAT extensions, payment method, customer status, and the exact path used to reproduce the issue. State whether the customer was already logged in or logged in from the Checkout block, because that distinction is central to this particular defect.
Save the order subtotal, tax lines, exemption status, VAT validation result, relevant logs, and screenshots. Use test accounts and remove or protect personal, payment, and customer tax information. Separate the core WooCommerce flow from extension-specific behaviour before contacting the relevant support channel. If the problem occurs only after a customization or integration is enabled, that comparison is important evidence rather than a reason to modify core files.
For broader site troubleshooting and controlled plugin isolation, browse WordPress plugins as part of your normal staging toolkit. Keep tax changes and checkout updates away from production until the result is understood. Software testing can show how a defined configuration behaves; it cannot determine jurisdiction-specific eligibility, evidence, invoicing, or retention requirements. For those matters, consult a qualified tax professional.
WooCommerce 10.9.4 corrected the application and persistence of is_vat_exempt for logged-in customers using the block-based checkout. The fix is important because the Store API flow depends on server-side customer and order data, not only on what the browser displays. A reliable investigation should therefore combine a review of tax activation, address basis, tax classes, rate matching, and extension settings with a controlled staging test.
Use non-production data, a safe payment method such as the documented BACS scenario, and separate checks for validation, customer information, tax lines, and order results. Treat the reference test as evidence about one defined environment, not as universal compatibility or VAT compliance. Explore our WordPress plugins, WooCommerce extensions, themes and membership plans to find the right tools for your website.