Shopify B2B prices incl or excl VAT: Tax display is a storefront label. Tax Exempt removes VAT. Starter $22. Listing + docs checked 10 Nov 2026.
2026-11-10
Floris-jan de Vries

Shopify B2B prices incl or excl VAT: a label is not a reverse charge

The buyer reads “€48.00 excl. VAT” on the product card. Checkout still adds 21%. Shopify B2B prices incl or excl VAT is that split: a caption versus an actual exemption. Checked 10 November 2026 on the OO - B2B & Wholesale listing, docs Show prices including and excluding VAT and Tax Exempt introduction, and Shopify Help Taxes. If the listing moves Tax display off Starter, or Shopify renames market tax display, re-read those three before you quote “excl. on the PDP means 0% at checkout”.

The earlier note on prices including and excluding VAT is the label module alone. This one is the Starter bundle the listing prints in one line: Tax display + EU Tax exemption + login to see prices.

Shopify Markets already picked one display

Shopify Help Taxes (checked 10 Nov 2026): the shop calculates VAT. Each market has its own Tax display — show as included versus dynamic. That switch is Shopify’s. It is not the app’s Tax display tile. An EU market set to included shows a consumer €48 in. A wholesaler often wants the same SKU as €39.67 out — and 0% after a valid VIES check. Native Shopify does not give you two modules for those two jobs. You get one market display, plus tax-exempt on a customer record if you click it by hand.

Theme Liquid that prints “excl. VAT” next to the price is a string. Checkout follows Markets, not your string.

Three mix-ups that look like “VAT settings”

Turn on the app label, skip VIES: the PDP is polite, checkout still taxes.

Turn on Tax Exempt, skip the label: a German buyer sees €48 as if it were in, validates the VAT number, and only understands 0% on the last step. Trust is already gone.

Shopify Markets on Dynamic while Tax Exempt draft order logic is on (the mode for VAT-inclusive catalogues). Docs: that mismatch almost always wrecks totals. The inverse is worse: draft order logic with VAT-exclusive prices is unsupported — draft orders and exclusive prices.

None of those is reverse charge. They are a caption, a checkout mode, and a market switch. Three sliders.

Same Starter card, two different tiles

On 10 November 2026 the OO - B2B & Wholesale listing shows Built for Shopify, 5.0 from 34 reviews. Hero: *EU B2B Tax Exemption, prices incl./excl. VAT and login to see price rules.* Starter $22/month (or $220/year): unlimited custom + volume pricing, EU Tax exemption (VIES + logs), Tax display (incl. / excl. VAT), Login to see prices. Free: one pricing rule; Tax display is not on that card. Growth $37: bulk forms, RFQ, wholesale cart — not required for the caption.

Tax display docs, first paragraph: *It only changes the label customers see. It does not remove VAT at checkout.* Use Tax Exempt when a validated VAT number should exempt the order. Path: Apps → B2B & Wholesale → Tax & prices. Enable the module (Starter/Growth). App embed on the live theme. Rule: which products or collections, who sees the label, which copy. Settings: rates, product page, collection card. Rule status On.

Tax Exempt is the neighbouring tile. VIES, logs, checkout mode. Covered in EU VAT exemption and VIES logs. Login to see prices is a third control: hide the B2B number until sign-in, login to see B2B prices.

What the buyer sees / pays

App module (listing 10 Nov 2026)

Plan

Removes VAT at checkout?

“incl. VAT” / “excl. VAT” next to the price

Tax display

Starter $22+

No — label only

0% after a valid cross-border EU VAT number

Tax Exempt (VIES + logs)

Starter $22+

Yes — Shopify tax + chosen mode

B2B price only after login

Login to see prices

Starter $22+

No — hides the rate

One price for everyone

Native Markets tax display

Shopify setting

Only if the customer record is exempt

Sources under the table: listing 10 Nov 2026; Tax display docs; Tax Exempt introduction. If Tax display moves to Growth, or Help renames market tax display, re-check before you tell a merchant “excl. label equals reverse charge”.

Zero VAT after validation: B2B tax-exempt checkout. The number itself: VIES validation.

Tax display rule showing excl. VAT on a product card while Tax Exempt is off — caption without 0% at checkout — checked 10 Nov 2026

Worked case: Dutch catalogue incl. 21%, German GmbH

Sensor tap shop. Consumer prices include 21%. A German GmbH needs to *see* exclusive and *pay* 0% after VIES. Native path: Germany market on dynamic, tick tax-exempt on each customer. Every new GmbH is an admin click. There is no “excl.” caption.

What I would ship on 10 Nov 2026. Starter, not Free — Free does not list those tax tiles. Tax display rule: visible to tag `wholesale` or a logged-in company, copy “excl. VAT” and “incl. VAT”, 21% in the module settings so the second figure is real. App embed on the published theme; docs: no embed, no label.

Then Tax Exempt on. Catalogue is inclusive, so draft order logic is *allowed* by the Tax Exempt docs — unless Custom Pricing, volume pricing or bulk forms already use a draft checkout. Those two draft flows are not merged. Docs: B2B prices plus exemption → standard checkout for Tax Exempt. EU market Shopify tax display: Dynamic in that pairing. Do not confuse that Shopify switch with the app module that happens to share the English name.

Three sessions. (1) Logged-out consumer: no excl. caption, 21% at checkout. (2) Logged-in wholesale, no VIES: caption present, 21% still at the till — the label did not lie, the exemption was missing. (3) Same account, valid DE VAT, different email than checkout: exemption fails; docs require the same email. Read the log: VIES logs.

A domestic VAT number (NL on an NL shop) can validate and still not exempt. Docs FAQ: reverse charge is cross-border. Put that in the registration copy, not in the Tax display string.

Ship it without a surprise invoice

Decide whether the catalogue is incl. or excl. first. Then set three sliders: app Tax display (who sees which caption), Tax Exempt mode (draft only when prices are incl. and no other draft pricing is on), Shopify Markets tax display (included vs dynamic). Run the three sessions before you invite the German buyer.

Listing 10 Nov 2026: Starter $22, 14-day trial, USD. Tax display and Tax Exempt sit on that card, not on Free. Growth is bulk/RFQ/cart fields, not this caption.

Bottom line

For the sensor shop I would turn the caption on for tag `wholesale`, leave Tax Exempt on standard checkout because B2B prices already draft, and keep session 2 as a screenshot: excl. on the card, 21% at checkout, until VIES is green. Shopify B2B prices incl or excl VAT is not a fourth native market mode. It is a Starter caption plus a Starter exemption. The listing names them in one hero line; the docs split them. Mix them up and the PDP says excl. while the till still charges 21%. If either source moves, this advice expires.

Turn both modules on from the OO - B2B & Wholesale listing and open Tax display plus Tax Exempt in the docs before you sell “excl. VAT” as reverse charge.

This blog is presented to you by

team member foto

Floris-jan de Vries

Co-owner / Back-end developer / Shopify Expert

As a full-stack developer, Floris-Jan ensures the technical logic behind the design. He also uses his extensive knowledge of Shopify every day to provide our clients with the best possible support.

social icon

You may also like:

Combine Shopify shipping rates into one checkout line when the extra fee always rides along. Carrier prices still need Advanced.

shopify

2026-11-10
Floris-jan de Vries

When should you combine Shopify shipping rates into one checkout line?

A Shopify us vs them table fits brand claims with ticks and a CTA. Live product rows belong in the compare tray instead.

shopify

2026-11-10
Floris-jan de Vries

When is a Shopify us vs them comparison table the right use case?

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