Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform

At a glance

A stacked breakdown of gross revenue into its four economic components: subtotal (line items), discounts applied, shipping charged, and tax collected. The card decomposes totalPrice into the customer-paid bucket each pound went into.
What it countsSUM(subtotalPrice) + SUM(totalShippingPrice) + SUM(totalTax) - SUM(totalDiscounts) rendered as four stacked components. The arithmetic identity should equal SUM(totalPrice) to within rounding.
VAT / tax treatmentThe Tax slice is SUM(totalTax) regardless of taxesIncluded mode; for VAT-inclusive UK stores, this slice is the embedded VAT extracted server-side, not an add-on.
ShippingThe Shipping slice is SUM(totalShippingPrice). Free-shipping orders contribute zero to this slice but still affect the discount slice if a shipping discount code was applied.
DiscountsThe Discount slice is SUM(totalDiscounts) and is shown as a negative component visually; mathematically it sits between subtotal and net total.
RefundsNOT deducted. The card shows gross customer-paid amounts. For the post-refund view, pair with Refund Value.
Cancelled / voided ordersIncluded if Shopify indexed them. VOIDED orders still contribute their original components to all four slices.
CurrencyMulti-currency arithmetic without FX. Each component aggregates raw amounts; for stores transacting in mixed currencies the slice ratios remain coherent (each currency’s tax slice is proportional to its sub) but absolute totals are nonsense. Use the currency-filtered view.
Channels / sourcesAll channels contribute. POS sales contribute to subtotal and tax; shipping is typically zero on POS. B2B sales often have discount-heavy structures that distort the discount slice.
Time window30D (default 30D rolling)
Alert triggerNone, the card is descriptive, not alerting.
Rolesowner

Calculation

Calculated automatically from your Shopify data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

A US homeware DTC brand on Shopify, sales-tax-exclusive pricing, free shipping over $75, 30D window 12 Apr 26 to 12 May 26.
ComponentAmountShare of grossNote
Subtotal (line items, pre-discount)$412,30091.2%The economic engine
Discounts applied-$28,400-6.3%Welcome10, FRIENDS25, EOSALE codes
Shipping charged$19,6504.3%Many orders qualified for free shipping
Tax collected$48,20010.7%Roughly the blended state-tax across customer ZIPs
Customer-paid total (totalPrice)$451,750100%The reconciliation bottom line
451,750 = 412,300 - 28,400 + 19,650 + 48,200   identity holds
Five things to notice:
  1. The discount slice is the lever. -6.3% means the brand gave back ~28kagainstgross.Ifmarginis3028k against gross. If margin is 30%, that discount cost roughly 9k of gross profit. Pair with Total Discount Used and Top Discount Codes to see which codes drove the cost.
  2. Shipping is revenue, not cost. The 4.3% shipping share is the customer-paid amount. Actual carrier cost may run higher; that gap is the shipping subsidy. Pair with carrier invoices to compute net.
  3. Tax is pass-through. The 10.7% tax slice is owed to the relevant tax authorities; it’s not yours to spend. UK / EU stores running VAT-inclusive will see a smaller “Tax” slice because the customer-paid total is gross-inclusive; the slice is the embedded VAT.
  4. The slice ratios are stable in healthy periods. Big swings flag mix-shifts: a sudden drop in shipping share usually means a free-shipping promo went hot; a jump in discount share means a sale or coupon-stuffing event.
  5. Cross-reconcile against your accounting. Add up the four slices in your bookkeeping system (Xero, QuickBooks). They should match this card’s four numbers within rounding. Mismatches usually trace to currency-conversion or refund-timing differences.

Sibling cards merchants should reference together

Revenue Breakdown is a viewfinder. The cards that explain each slice:
CardWhy pair it with Revenue Breakdown
Total RevenueThe reconciliation total. The four slices should sum to total revenue.
Total Discount UsedThe single-number version of the Discount slice. Use to track week-over-week discount cost.
Total Shipping RevenueSingle-number Shipping slice. Pair with carrier invoices for shipping P&L.
Total Tax CollectedSingle-number Tax slice. Pair with your accounting to confirm liability matches what you’ll remit.
Discount % of RevenueDiscount slice expressed as a ratio. The benchmark version of the breakdown.
Shipping % of RevenueShipping slice as a ratio. Watch for upward drift, indicates carrier-rate hikes pass-through.
Top Discount CodesWhich codes drove the discount slice. The drill-down for the cost-of-promotion question.
Refund ValueThe “missing” fifth slice, what came back out. Subtract from total revenue for the net view.

Reconciling against the vendor’s own dashboard

Where to look in Shopify Admin:
Shopify Admin → Analytics → Reports → “Total sales” (under the Sales category)
Shopify’s Total sales report exposes the same four columns: gross sales, discounts, shipping, taxes, returns, net sales. Pick the same date range and the four slices should match this card to within rounding. Other Shopify Admin views that look similar:
  • Reports → Sales by sales channel: same components, broken by channel. Useful when you suspect one channel is distorting the breakdown.
  • Reports → Discounts: drills the Discount slice. Use when discount share spikes.
  • Reports → Sales by billing location: useful for tax reconciliation, ties the Tax slice to states/regions.
Why our number may legitimately differ from Shopify’s:
ReasonDirectionWhy
Refund handlingShopify Net Sales lowerShopify’s Total Sales is gross (matches our card). Net Sales subtracts returns; we don’t. Use Refund Value to bridge.
Time zoneBoundary daysShopify Admin uses store time zone; Vortex IQ uses UTC. The 30D window can drift by a day either side.
Tax-inclusive vs exclusive modeSlice mix differsUK / EU VAT-inclusive stores see Tax extracted from gross; US sales-tax-exclusive stores see Tax added on top. The math identity holds in both, but the slice ratios visually differ.
Multi-currencySlice totals nonsensicalWe don’t FX-normalise. Slices look correct shape-wise per currency, but absolute totals across currencies are not meaningful. Filter by currency.
Sync lagOurs lower for “today”The most recent 5 to 15 minutes of orders may not be in the index yet.
Test ordersOurs slightly higherShopify Admin can hide test orders. Vortex IQ does not yet filter Order.test.
Cross-connector reconciliation: The four slices have indirect parallels in payment connectors:
CardExpected relationshipWhat causes legitimate divergence
stripe.stripe_gross_volumeTracks the customer-paid total slice for Stripe-only ordersStripe excludes Shopify Payments orders that route via the native Shopify gateway. PayPal / Apple Pay etc are routed differently. Expect significant numerical gaps.
paypal.paypal_gross_revenueSame logic, PayPal gateway onlyUse as a slice-by-gateway check; not a same-number reconciliation.

Known limitations / merchant FAQs

Why is my discount slice growing? Three usual causes:
  1. Heavier promo cadence. More codes live, more aggressive depths. Pair with Top Discount Codes to see which codes are driving cost.
  2. Stacking enabled. If you’ve turned on discount stacking (Shopify Functions, app-level), customers combine codes and the depth-per-order rises sharply.
  3. Affiliate / influencer codes leakage. If creator codes are being shared on coupon sites, discount share rises with no marketing intent.
Action: audit code expiry dates and usage caps. Shopify Functions can enforce one-code-per-order or once-per-customer limits. Why is the shipping slice so small? Common in DTC, especially after free-shipping thresholds are introduced. Customers route to the threshold to avoid paying shipping; charged shipping shrinks. The flip-side: subtotal usually rises (filler items added). Net effect on margin depends on margin-per-filler-item and your free-shipping cost. Why does my tax slice look unstable month to month? Tax depends on the geographic mix of customers. A month with disproportionate California or NYC orders pushes US tax higher; a month with more Texas (no state income tax, lower retail tax) lowers it. UK / EU brands selling to multiple VAT regions see a similar effect, especially around VAT registration thresholds. My VAT-inclusive store, is this card useful for HMRC reporting? Partially. The Tax slice is SUM(totalTax) and tracks the embedded VAT for VAT-inclusive stores. For HMRC VAT returns, you want the same period and the same number; cross-check against Shopify Admin Reports Taxes and your accounting record. Don’t rely on this card alone for tax filings; treat it as a sanity check. Why is the discount slice negative? By accounting convention, discounts reduce revenue. The card displays it as a negative figure to make the identity subtotal - discount + shipping + tax = total visible. Some BI tools render it as a positive bar pointing left; same number, different orientation. Does this card include subscription billings? Yes. Each Shopify Subscriptions billing creates a new order with its own subtotal, discount (if a subscription discount was applied), shipping, and tax. Subscription-heavy brands see a steady, predictable breakdown shape; one-time-purchase brands see more volatility tied to promo events. My multi-store setup, can I aggregate across stores? Not on this card. Each Shopify store maps to a separate connector instance in Vortex IQ. Aggregation is on the cross-store roadmap. For now, pair multiple instances of this card on a single dashboard for a multi-store view. Action playbook when slice ratios drift:
  1. If discount share rises sharply: open Top Discount Codes. Find the code(s) responsible. Decide whether to cap usage, expire early, or accept the cost as planned.
  2. If shipping share falls sharply: check whether you’ve recently enabled free-shipping thresholds or expanded a free-shipping zone. Pair with Total Shipping Revenue for the absolute impact.
  3. If tax share drifts: confirm tax-engine (Shopify Tax / Avalara / TaxJar) is current. A misconfiguration after a new state nexus or VAT registration can throw the calculation off.
  4. If the identity doesn’t hold (slices don’t sum to total): a sync-lag artefact, raise with Vortex IQ support; persistent breakage indicates an indexing bug.

Tracked live in Vortex IQ Nerve Centre

Revenue Breakdown is one of hundreds of KPI pulses Vortex IQ tracks across Shopify and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.