VATparity · Common problems

VAT-inclusive prices on Shopify: what cross-border buyers actually pay — and who quietly overpays.

On a tax-inclusive store the sticker price is the contract: €100 means €100. Cross-border, Shopify keeps that promise by changing the VAT inside the price — which is correct, looks wrong in two specific ways, and genuinely is wrong for one kind of buyer.

§ 1 · What is actually happening

The total holds still; the tax inside it moves.

With tax-inclusive pricing, Shopify backs the destination country's VAT out of the gross: sell €100 from Ireland to a German consumer and the checkout shows €15.97 of German VAT inside €100.00 — 19% of the €84.03 net, not 19% added on top. Different destination, same total, different tax line. That much we measured agreeing with the tax engine's own arithmetic:

Real checkout measurements · August 2026 · inclusive store, €100 gross, IE → DE, standard-rate product
Buyer Tax line Buyer pays ✓
Guest consumer€15.97 included€100.00✓
Reverse-charge-exempt business buyer€0.00€100.00✗

The second row is the quiet overpayment: the exempt buyer's tax line is correctly €0.00 — and they still pay the same €100.00 gross as a taxed consumer, so the VAT amount stays in the price they were never supposed to bear.

That second row is Shopify working as configured, not a bug: whether a zero-rated buyer pays the net or the gross is a per-market setting (Shopify calls it dynamic tax inclusion — the API name is inclusiveTaxPricingStrategy). Left unset, everyone pays the sticker price, exemption or not. For a store with business buyers, that means every reverse-charge customer overpays by exactly the VAT amount, with a checkout that looks perfectly correct.

§ 2 · The false alarm

Before the address is complete, the estimate lies to everyone.

One more measured behaviour, because it produces most of the panic: with only a country selected, checkout's tax estimate uses the standard rate for every product in the cart. It survives a page reload. Only when a full delivery address is entered does the line settle to the product's actual rate. If you've been debugging a "wrong VAT rate" from the estimate line, you may have been reading a placeholder.

§ 3 · Check it yourself

Three readings, in the right order.

  1. Check the market setting first

    If you sell to businesses: is dynamic tax inclusion configured for the markets where they buy? If not, zero-rated buyers are paying the gross sticker price today.

  2. Walk a checkout with a full address

    Enter the complete delivery address before reading the tax line — the pre-address estimate shows the standard rate for everything. Then wait for the totals to settle; they render asynchronously.

  3. Re-check after any change

    Price and tax setting changes propagate to checkout on a delay — up to an hour in our measurements. A reading taken right after a change proves nothing in either direction.

§ 4 · The continuous version

VATparity prices inclusive scenarios on every scan.

The scan asks Shopify's own tax engine what each kind of buyer would pay on your store — inclusive or exclusive, guest or business — and compares every answer against a versioned EU/UK rate table, with the evidence attached. Nothing is ordered, paid for, or changed. The paid plan re-scans weekly and alerts you when an answer moves.

Get VATparity for Shopify Free scan on every store

§ 5 · Related problems

The same silence, elsewhere.