
A French wholesaler pastes a SIRET into the order note. Checkout still charges German VAT. Staff ticks tax exempt later — or never. Shopify VAT number at B2B checkout belongs earlier: collect the number on the way to checkout, run VIES, then exemption. Without that field, “B2B tax-free” is a hope in a note.
The API check is VIES VAT number validation. What happens after Checkout (Standard vs Draft Order, Markets) is tax-exempt checkout. Intra-community versus domestic is EU reverse charge. This article is where the number is collected, which switch blocks Checkout until it is green, and why you hide the form for shoppers in your own country.
CTA stays OO - EU B2B & Wholesale. Do not pitch another Online Origins app.
Shopify Help on EU taxes covers registrations, Markets, and OSS for consumers. Native Shopify can mark a customer tax exempt. That is an account flag. It is not an input on checkout and not a call to VIES.
Without an extra flow you get:
a number in the note, VAT still on the line;
staff exempting every wholesale account by hand;
a “0% VAT” discount code that retail also finds.
None of those stores a validated number on the order. Intra-community supply usually wants a valid buyer number at purchase time — not three days later in accounting’s inbox.
A theme field labelled “VAT number”. It lands as a line-item property or cart note. Checkout still charges VAT. No VIES call.
The number only on the registration form. Fine for onboarding. An approved account can still pay 21% if the cart check is missing — or get exemption without VIES ever running.
Force exemption “because they are wholesale”. Tag `wholesale` is not VIES-green. Domestic numbers are often not exempt. That is why the setting exists to hide the validation form for visitors from the same country as the shop.
None of that is: number + email before checkout, VIES, tax-exempt only on success, number on the order for the bookkeeper.
OO - EU B2B & Wholesale is Built for Shopify (5.0, 34 reviews). Listing: Advanced B2B tax management with VAT handling and EU Tax Exemption compliance. Live pricing: Free (1 pricing rule, 1 registration form); Starter $22/month or $220/year (17% off) — that tier includes EU Tax exemption (VIES + logs); Growth $37/month or $370/year. 14-day trial on Starter and Growth. Billed in USD. Do not claim this app replaces Shopify Plus B2B catalogues.
Exemption does not invent rates. It leans on Shopify Taxes. Wrong shop settings get exempted wrongly. The app does not register you with a tax authority.
Standard Checkout Logic: the customer enters email address + VAT number. The number hits the EU VIES API. On success:
the customer is marked tax exempt in Shopify;
VAT data lands in cart attributes and order notes;
native checkout applies tax rules dynamically (Standard mode). The app does not rewrite checkout prices there.
Hard rule from the same docs: the email used at validation must exactly match the checkout email. Shopify identifies customers by email. Mismatch → not tax exempt → VAT can stay on.
Standard Checkout Logic is mandatory when you display prices excluding VAT. Draft Order Logic cannot do that job: Shopify must calculate VAT dynamically at checkout.
General Settings decide whether the number is optional copy or a gate:
Require VAT validation before checkout — the checkout button stays off until validation succeeds. EU customers only; non-EU can proceed without the check.
Hide VAT validation form for visitors from same country as your shop — domestic visitors never see the field. Domestic numbers should not be exempt.
Hide VAT validation form for visitors from non-EU countries — if you only support EU exemption.
Save validated VAT ID as order note — the number on the order for accounting.
Save VIES company address data — company name and address when VIES returns them (not every country shares that).
Tag the customer and/or order after success — for segments and reports.
Default cart attributes: `tax_exempted` and `vat_number`. Change them only if an integration requires it.
Styling (inline vs dropdown in a cart drawer) does not change validation. It only keeps the field from crowding a slide-out cart.
Even with Standard Checkout Logic: Settings → Markets → the market → Duties and import taxes → Dynamic taxes on. If that is off, exemption can “apply” while prices never recalculate. Market-specific fixed prices: Shopify may zero the tax line and leave the product amount. That is a Shopify limit, not a missing VAT field.
The shop is in Germany. Retail pays 19%. A French wholesaler must validate the number in the cart before Checkout. Starter plan, EU Tax exemption on.
Enable: Require VAT validation before checkout. Hide form for same country. Hide form for non-EU. Save VAT ID as order note.
Test in this order:
DE visitor: no validation form. Checkout with 19%.
FR number, same email as checkout: VIES green, tax-exempt, VAT off the line (if Markets are correct).
FR number, different email than checkout: VAT stays. That is the email rule, not a bug.
Valid DE number with hide-same-country briefly off: validation may succeed; exemption should not. Turn the hide switch back on.
VIES logs ship with Starter. Use them when accounting asks why order 2201 has no VAT. The number in the order note is the same evidence.
Install OO - EU B2B & Wholesale. Built for Shopify, 5.0 (34). EU Tax exemption lives on Starter ($22/month).
Pick Standard Checkout Logic if you sell ex-VAT.
General Settings: require validation, hide same country, hide non-EU, save as order note.
Markets: Dynamic taxes on. Deliberately test the email mismatch.
Place the validation block in cart or drawer (dropdown in a cart drawer). Theme app blocks per the tax docs.
One FR test order, one DE retail order. Check the tax line, the order note, the customer flag.
Registration forms with approve/reject stay a separate flow (Free: 1 form, Starter: unlimited). That is onboarding, not the checkout number.
Shopify VAT number at B2B checkout is the field before the button, not the note after it. Email plus number, VIES, tax-exempt only on success, form hidden for your own country. Native Shopify does not ship that gate.
Put it in with OO - EU B2B & Wholesale. The number then sits on the order, not in accounting’s inbox.
Services
Reviews
5/5
Mail: info@onlineorigins.nl
Tel: 073 234 0612
KVK: 89825624
BTW: NL865123639B01
Bruistensingel 500,© 2026 Online Origins