Headline revenue with VAT removed. Useful for finance reconciliation.
At a glance
Headline gross revenue across every Shopify order in the period, with VAT (or sales tax) stripped out. This is the net-of-tax sales figure finance teams reconcile against the management accounts, because tax collected is a liability owed to the tax authority, not the store’s revenue. It is gross of refunds, the same as the main Total Revenue card, but ex-tax instead of inclusive.
| What it counts | Gross order value across the window with the tax portion removed. In practice the card sums each order’s totalPrice and subtracts the order’s totalTax, leaving the ex-tax sales value. |
| VAT / tax treatment | This is the whole point of the card. Whatever VAT or sales tax Shopify recorded on the order is removed. For a UK store with taxesIncluded = true, the customer paid a VAT-inclusive total and this card backs the VAT out. For a US store with taxesIncluded = false, sales tax already sat separately in totalTax, so this card simply omits it. Either way you get the ex-tax sales figure. |
| Shipping | Included (the ex-tax portion of it). Shipping is part of totalPrice; any VAT on shipping is removed along with the rest. |
| Discounts | Already deducted. The card works from the post-discount order total before stripping tax. |
| Refunds | NOT deducted. A refunded order still contributes its ex-VAT value. For the post-refund picture pair with Refund Value and Refund Rate. |
| Cancelled / voided orders | Included if Shopify indexed them (the same behaviour as the gross Total Revenue card). |
| Currency | Multi-currency arithmetic sum WITHOUT FX conversion. A store taking GBP and EUR orders in the same window gets a single, blended number. Filter by currency for stores transacting in more than one currency. |
| Channels / sources | Not filtered. Online Store, POS, Buy Button, social channels, B2B and marketplace-app orders all contribute. |
| Time window | 30D vsP (default 30D vs the prior 30D) |
| Alert trigger | Configurable. Typically mirrors the gross revenue card, a sustained drop vs the prior period. |
| Roles | owner, marketing, finance |
Calculation
Worked example
A UK homewares store running on Shopify Plus withtaxesIncluded = true (prices shown to customers include 20% VAT). The 30-day window covers 14 Mar 26 to 12 Apr 26.
| Line | Amount | Note |
|---|---|---|
| Gross revenue (Total Revenue card, VAT-inclusive) | £2,100,000 | What customers were billed across the window |
VAT collected (totalTax summed) | £281,000 | The 20% sitting inside those inclusive prices, slightly under one-sixth because zero-rated and reduced-rate lines exist |
| Total Revenue (ex-VAT), this card | £1,819,000 | Gross minus tax |
- The VAT removed is not exactly one-sixth of the gross. A pure 20% inclusive basket would back out £350,000 of VAT from a £2.1M gross. This store only removes £281,000 because part of the catalogue is zero-rated or reduced-rate (children’s clothing, books, some food). The card uses the actual
totalTaxShopify recorded per order, so mixed tax treatment is handled correctly. - This is the figure that ties to the P&L. Finance teams report revenue net of VAT because VAT is a liability owed to HMRC, not income. When the founder quotes £2.1M and the accountant quotes £1.82M, this card is why, and it is the accountant’s number that lands in the management accounts.
- It is still gross of refunds. A refunded order’s ex-VAT value remains in this figure until you net it off. For a true net-of-everything view, subtract refunds (also ex-VAT) using the refund cards. The 30-day prior window was £1,756,000, so ex-VAT revenue is up 3.6% vsP.
Sibling cards merchants should reference together
| Card | Why pair it with Total Revenue (ex-VAT) |
|---|---|
| Total Revenue | The VAT-inclusive headline. The gap between the two cards is your VAT collected for the period. |
| Total Tax Collected | The exact amount this card removed. Total Revenue minus Total Tax Collected should equal this card. |
| Tax Collected Over Time | The trend version of the deduction, useful when the VAT removed jumps period to period. |
| Refund Value | This card is still gross of refunds. Net it off for the true bankable ex-tax figure. |
| AOV (ex-VAT) | The per-order version of the same ex-tax basis. |
| Revenue Over Time | The daily shape behind the headline; helps spot which days drove the move. |
Reconciling against Shopify Admin
Where to look in Shopify Admin: Reports → Sales over time. Set the same window. Shopify’s Net sales column is not the right comparison (it deducts discounts and returns but its tax handling depends on your settings). The cleaner reconciliation is Total sales minus Taxes, both of which appear as columns in the sales finance reports. That combination should land within a few pounds of this card. Other Shopify Admin views and why they differ:- Reports → Total sales over time: VAT-inclusive for inclusive-tax stores, so it will read higher than this card by the VAT amount.
- Reports → Taxes: shows the tax this card removed. Total sales minus this report is the closest manual reconstruction of the card.
- Finance → Summary: the finance summary breaks out gross sales, taxes, and net. Use the gross-minus-tax line.
| Reason | Direction | Why |
|---|---|---|
| Time zone | Boundary days | Shopify reports run on shop time zone; Vortex IQ runs on UTC by default. Orders near midnight on the boundary days fall on different sides. |
| Refund treatment | Ours higher | This card is gross of refunds; Shopify’s Net sales deducts returns. A refund-heavy period widens the gap. |
| Multi-currency | Ours blended | Shopify reports in shop currency at FX; this card sums order currency without FX. |
| Mixed tax rates | Should still match | Both this card and Shopify use the per-order tax actually recorded, so zero-rated and reduced-rate lines are handled the same way. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
stripe.stripe_total_revenue | Stripe charge volume includes tax; this card excludes it | Stripe captures the full inclusive amount the customer paid. To compare, add the VAT back, or compare Stripe against the gross Total Revenue card instead. |
google_analytics.ga_revenue_trend | GA4 revenue config-dependent | GA4 purchase revenue may be sent inclusive or exclusive of tax depending on your tag setup; align the tax basis before comparing. |
Known limitations / merchant FAQs
Why is this lower than my Total Revenue card? Because VAT (or sales tax) has been removed. The difference between Total Revenue and Total Revenue (ex-VAT) is exactly the tax Shopify recorded for the period. Tax is money you collect on behalf of the tax authority, not income, which is why finance reports the ex-VAT figure. My US store doesn’t charge VAT. Is this card useful? Yes. For a US store withtaxesIncluded = false, sales tax already sits separately from the product price, so this card simply reports sales excluding that tax. It is the same ex-tax sales figure your accountant uses, just labelled VAT for the UK / EU majority of stores.
Why isn’t the VAT removed exactly 20% (or one-sixth) of gross?
Because not every line carries the standard rate. Zero-rated and reduced-rate items (children’s clothing, books, some food, exports) carry less VAT or none. The card removes the actual totalTax recorded per order, so a mixed catalogue removes less than a flat 20% would imply.
Does it deduct refunds?
No. Like the gross Total Revenue card, this figure is before refunds. Pair with the refund cards for the net-of-everything view.
My multi-currency store shows a blended number, why?
The card sums order values without FX conversion, so a store taking GBP and EUR produces a single mixed figure. Filter by currency (by presentmentCurrency) for a clean per-currency ex-VAT total.
Which number should I quote to investors or the board?
Use ex-VAT for anything that feeds the P&L, valuation multiples, or like-for-like comparison with other businesses, because revenue multiples are quoted on net-of-tax revenue. Use the gross figure only when you specifically mean cash collected including tax.