Tax-exempt customers still see VAT at checkout? Here are the most common causes and fixes for Shopify B2B stores.
TL;DR: If your tax-exempt Shopify customers still see VAT at checkout, you’re not alone. This is one of the most common issues for B2B stores in the EU. Below are the causes and fixes, whether you’re using Shopify’s native tax exemption or the EU Tax Exemption app.
This catches many merchants off guard. You mark a customer as VAT-exempt with the EU reverse charge exemption, but when they order and ship to the same country as your fulfillment location, VAT still appears.
That’s correct behavior. The EU reverse charge mechanism only applies to intra-community supplies, meaning the goods must cross a border between two different EU member states. A German customer buying from a German warehouse is a domestic sale. VAT applies at the local rate regardless of the customer’s B2B status.
Fix: If you want domestic B2B customers to also be tax-exempt, you need the “Don’t collect tax” exemption type instead of reverse charge. This depends on your tax situation and your accountant’s advice. The reverse charge guide explains the difference in detail.
You’ve set prices to include tax. You mark a customer as tax-exempt. But the customer still pays the same price at checkout. What gives?
This is a known Shopify behavior with tax-included pricing. When your product is listed at €119 (including 19% VAT) and the customer is tax-exempt, Shopify should reduce the price to €100. But in some configurations, especially with certain themes, express checkout, or payment methods, the deduction doesn’t apply correctly.
Fixes:
A customer enters their VAT number at checkout. The number validates successfully. But the order still includes VAT.
This is a documented Shopify checkout caching issue. When a customer is created and validated during the same checkout session, the tax exemption doesn’t always apply immediately. Shopify’s tax calculation may have already locked in before the customer status update propagates.
Fixes:
You have warehouses in Germany and Poland. A French customer orders and gets fulfilled from Poland. Shopify’s reverse charge exemption looks at the fulfillment location country, not your shop’s country.
If Shopify picks the Polish warehouse for fulfillment but calculates tax based on your German default location, the reverse charge might not trigger correctly for France-to-Poland routes.
Fix: Check your default fulfillment location in Shopify admin under Settings, then Locations. The reverse charge exemption uses the fulfillment location to determine if the transaction is cross-border. Make sure your primary location is set to the country you actually ship from most often. For multi-location setups, you may need to configure which locations apply to which markets.
Tax exemption in Shopify is tied to a customer record. If someone checks out as a guest, there’s no customer to attach the exemption to. The VAT number entered at checkout might validate, but the tax status doesn’t stick because there’s no customer profile to save it to.
Fixes:
Shop Pay, Apple Pay, Google Pay, and other express checkout methods can skip the standard checkout flow. If your VAT validation happens in the checkout form, express checkout might bypass it entirely.
Fix: For B2B stores, the most reliable approach is to validate the VAT number before checkout, not during it. A storefront widget lets customers validate their number on the product page or cart. The exemption is applied to their customer record before they ever reach checkout, so it works regardless of which checkout method they choose.
You see “Valid” in the VIES check. The customer’s profile says tax-exempt. But the checkout still shows tax. This usually comes down to one of two configuration issues:
Before troubleshooting further, verify these settings in your Shopify admin:
If you’ve checked all of these and VAT still isn’t being removed, the Shopify VAT app comparison can help you evaluate whether your current setup is handling exemptions correctly, or whether you need a more robust solution.