Your B2B customer has a valid VAT number. Shopify still charged them VAT.
A cross-border business buyer expects the reverse charge — 0% VAT, they self-account at home. Their VAT number is on file. Checkout charges full local VAT anyway, and nothing in your admin says why.
Measured on real Shopify checkouts · August 2026 · Irish store → German company buyer
§ 1 · What is actually happening
The VAT number and the exemption are two separate facts — and only one of them changes the charge.
Shopify records a company's VAT number in one place and the buyer's tax exemption in another. Saving the number does not assign the exemption. In our measurements, the tax engine priced the order from the exemption alone: the same company, with the same VIES-valid VAT number on file, was charged €19.00 or €0.00 depending only on whether someone had also assigned the reverse-charge exemption to the company's location.
| Company record | Checkout charged | ✓ |
|---|---|---|
| VAT number on file + exemption assigned | €0.00 | ✓ |
| VAT number on file, no exemption assigned | €19.00 | ✗ |
Amounts and tax lines read from the settled checkout summary. In these measurements no automatic validation stepped in for the company account: the number sat on file, the exemption stayed unassigned, and checkout charged full German VAT. The buyer overpays by the whole VAT amount, and the admin shows no warning.
The path that does validate automatically is the guest one: a buyer who types a valid VAT number into checkout itself gets zero-rated (we measured that too — see reverse charge not applied). B2B company accounts don't pass through that flow, so the burden quietly moves to whoever set up the company record.
§ 2 · Check it yourself
Ten minutes, no app required.
-
Open the company record
Admin → Customers → Companies → the company → its location → Tax settings. A VAT number in the "Tax ID" field is not the exemption — look for an assigned tax exemption on the location itself.
-
Price a test order
Create a draft order for the company's purchasing entity with a cross-border shipping address and watch the tax line. This is a calculation — nothing needs to be ordered or paid.
-
Read it carefully
Checkout totals render asynchronously — wait for the tax row to settle before believing it. And if you just changed a setting, re-check an hour or more later before concluding anything: tax changes propagate on a delay.
-
Repeat for every company
Each company location carries its own tax settings. One fixed record says nothing about the next one.
§ 3 · The continuous version
VATparity prices these scenarios on every scan.
The app asks Shopify's own tax engine what it would charge business buyers with and without reverse-charge exemptions — in each country you sell to — then compares every answer against a versioned EU/UK rate table and shows the evidence. A surprising reading becomes a finding only when a re-check an hour or more later still shows it. The paid plan re-runs the scan weekly and alerts you when an answer changes.
§ 4 · Related problems