Shopify B2B VIES tax exemption checklist: when Shopify Tax already passes, and which Starter-plan rules in OO B2B & Wholesale knock a setup out.
2026-11-01

VIES tax exemption: the knockout list

Before a wholesale app earns a place on a shortlist, one filter matters more than the feature grid: does a foreign EU VAT number get checked, and does VAT come off only when reverse charge actually applies? This note is that filter for OO - EU B2B & Wholesale. Registration, price lists, and bulk orders are a different decision; the broader EU B2B use case covers them. Here, tax exemption either passes or it does not. A Dutch shop and a German buyer should see a VIES check and VAT removed. A domestic number can be stored and still taxed. Zeroing every number, including home-country ones, fails the rule.

Must-haves

| Must-have | Knockout | |-----------|----------| | Validation hits the EU VIES register | A text field that only saves a string | | Exemption is cross-border, not “any VAT ID” | Home-country numbers are zero-rated by default | | Checkout mode matches inclusive vs exclusive prices | The wrong mode either leaves VAT on or recomputes prices that must stay net | | Market tax display matches that mode | Included vs dynamic are not interchangeable | | The email on the VAT form is the email at checkout | Shopify matches the customer on email | | The app does not invent the tax math | Missing Shopify registrations still break it | | The paid tier that includes the module is the one you install | On this listing, VIES plus logs is Starter, not Free | | One draft-order checkout at a time | B2B price drafts and the tax-exempt draft are not merged | | A non-Plus store still has a documented place for the form | Checkout UI is a Plus constraint |

Where Shopify Tax already passes

Read on 1 November 2026: VAT validation in checkout and Manage your EU taxes.

  • Stores on Shopify Tax can show a Company VAT number field at checkout. Default is off; Optional turns it on.

  • Shopify checks the number with VIES. If VIES cannot complete the check, VAT stays on. There is no manual override.

  • Reverse charge needs the destination country to differ from the fulfillment location’s country, in the combinations Help lists (EU location to another EU country, or EU location to the UK). An active EU fulfillment location is required. UK-to-EU does not qualify.

  • That checkout validation is for guest checkout and Shop Pay. Help says it is not available on B2B-specific checkouts.

  • Basic, Grow, and Advanced manage VAT numbers on the customer profile. Plus can also use company locations. Shopify Tax itself is not a Plus-only feature.

Stay native when prices exclude VAT, one EU market is enough, Shopify Tax is on, buyers use guest checkout or Shop Pay, and you do not need a form before checkout.

Native falls short when the number belongs on the cart, checkout must wait for a pass, you want a log of checks, or prices include VAT or are fixed per market and Shopify zeroes the tax line while the product amount stays put. The OO docs call that fixed-price case a Shopify limitation, not an app defect.

Two modes that do not stack

Tax Exempt is a module inside OO - B2B & Wholesale, on Starter. Turn it on under Apps → B2B & Wholesale → Tax & prices. It does not calculate tax. Shopify’s registrations and market settings remove VAT. The separate “tax display” module only changes incl./excl. labels.

From the introduction and step 3:

| How you price | Mode | Market tax display | |---------------|------|--------------------| | Prices exclude VAT | Standard checkout. Draft order logic off. Only supported option | Dynamic pricing | | Prices include VAT | Draft order logic on (docs recommend it) | Show as included | | Several markets or fixed market prices, and prices include VAT | Draft order logic | Show as included | | You need other cart apps to behave, and prices exclude VAT | Standard checkout | Dynamic pricing |

Standard checkout marks the customer tax exempt after VIES succeeds and leaves calculation to normal checkout. Draft order logic then builds a draft order and sends the buyer to that invoice. Skip that draft when prices exclude VAT, and do not run it beside the draft checkout from custom pricing, volume pricing, or bulk forms. Those flows are not merged. B2B prices plus exemption means Tax Exempt stays on standard checkout. The email has to match.

Where the form lives

Add Tax Exempt to your theme: app embed on the published theme, plus the cart block on `/cart`. A cart drawer ignores that block. The documented fix is a snippet, `<div id="ooTaxExemption"></div>`, in the drawer Liquid file. That snippet is a theme-code edit, and only for the drawer.

The FAQ states Shopify’s checkout-customization limit: Plus can extend checkout; other plans keep this form on the cart or in the drawer. “Require VAT validation before checkout” disables the checkout button until the check succeeds, and the FAQ says that works without Plus. A custom field inside checkout is not a promise on Basic, Grow, or Advanced. Goods shipped from outside the EU are out of scope; the FAQ says you need an EU fulfillment location.

Plan gate

Listing on 1 November 2026. The app is Built for Shopify.

| Plan | Price | Exemption | |------|-------|-----------| | Free | $0 | One custom pricing rule, one registration form, Flow templates. No EU tax exemption. Development stores: no caps | | Starter | $22/month or $220/year | Unlimited custom and volume pricing, company blocks, unlimited registration forms, EU tax exemption (VIES + logs), incl./excl. tax display, login to see prices. 14-day trial | | Growth | $37/month or $370/year | Starter, plus bulk forms, draft checkout, repeat order, quote requests, AI formulas for quotes, order limits, wholesale cart. 14-day trial |

The module map puts Tax Exempt, tax display, volume pricing, and login-to-see-prices on Starter. Free fails as soon as VIES is a must-have. The old $8.95 figure is stale.

Matrix

| Requirement | Shopify Tax | OO B2B on Starter | |-------------|-------------|-------------------| | VIES on a foreign EU number | Yes, guest or Shop Pay checkout, Shopify Tax on | Yes, cart form, EU VIES API | | Home-country number forced to 0% | No | No — FAQ matches the rule | | Field in standard checkout without Plus | Yes, optional Company VAT number | Own checkout UI: FAQ says Plus. Cart or drawer: without Plus | | Company B2B checkout | Help: VAT validation not available there today | Form sits earlier, on the cart or drawer | | VAT-inclusive prices, amount must drop | Risky with fixed market prices | Draft order logic, if you are not already in the price draft | | VAT-exclusive prices | Strong fit | Standard checkout is mandatory | | A log of checks | Not described as an app log in Help | Listing: VIES + logs on Starter | | Cheapest tier | Shopify Tax is not tied to an OO plan | Free does not include the module |

Native wins the simple exclusive-VAT store on Shopify Tax. The app wins when you need the cart form, a block before checkout, logs, or the inclusive-VAT path — and you do not stack a second draft checkout.

Reviews

On 1 November 2026 the listing shows 5.0 from 34 reviews: 33 fives and one four. The four-star write-up is not in the summary that was visible; it is not invented here. A review dated 6 October 2026 from Sensorkranenwinkel.nl (Netherlands, about two years on the app) says the reverse-charge option works and support answers quickly. Recheck the live count.

Primary sources

Close

VIES by itself is not a reason to install an app. Shopify Tax already runs that check at checkout for guest and Shop Pay buyers, inside the reverse-charge rules. The knockout is the plan (Starter, not Free), the mode that matches inclusive or exclusive prices, and the ban on two draft checkouts at once. If those pass, the cart or drawer form is the documented path. Open OO - EU B2B & Wholesale when that path is the requirement, not when native checkout already does the job.

online origins logo full

The Shopify Select partner for ambitious e-commerce businesses that want to grow!

linkedin online origins iconinstagram online origins icon

Reviews

5/5

Check on Google

Mail: info@onlineorigins.nl

Tel: 073 234 0612

KVK: 89825624

BTW: NL865123639B01

Bruistensingel 500,
5232 AH 's-Hertogenbosch
Cookies

© 2026 Online Origins