At a glance
Count of orders where displayFinancialStatus = REFUNDED in the period. The order-count view of refund activity (the dollar view lives on Refund Value). On Shopify, refund is the financial event (money returned to the cardholder); return is the physical-goods event (item received back into the warehouse). They live on different APIs and rarely match 1:1.
| What it counts | COUNT(orders WHERE displayFinancialStatus = REFUNDED) over the period. Each fully-refunded order contributes one count. PARTIALLY_REFUNDED orders do NOT count here, they sit in a separate split surfaced in Refund Value which captures the dollar regardless of full vs partial. |
| API endpoint | Admin GraphQL. Order.displayFinancialStatus. The underlying refund objects live on Order.refunds (a separate, line-item-level entity), but this card uses the rolled-up financial status field for the count. |
| What “REFUNDED” means in Shopify | The order’s full gross amount has been refunded back to the customer’s payment method. Distinct from PARTIALLY_REFUNDED (some line items refunded), VOIDED (authorisation cancelled before capture), EXPIRED (auth lapsed), and PAID (current normal state). Refunded is a terminal state for the financial lifecycle. |
| Refund vs Return | Two separate Shopify entities. A Refund is the financial event, captured against the order. A Return (separate API, introduced 2022) is the physical-goods event, with line-item RMA tracking. A merchant can refund without a return (defective-keep-it goodwill), and receive a return without refunding (store credit, exchange). The card counts refunds, not returns. |
| VAT / tax treatment | n/a (count metric). The dollar twin sums totalRefunded, which inherits the tax-inclusivity of the original order. |
| Shipping | n/a for the count. Refunded shipping is captured in the dollar twin via Refund.totalRefundedSet, which can include or exclude shipping depending on how the merchant processed the refund. |
| Discounts | n/a for the count. The card asks “did the order fully refund?”, not “what was the original price”. |
| Cancelled / voided orders | Excluded. VOIDED orders never captured payment; nothing to refund. They sit in their own bucket. |
| Currency | Multi-currency-safe (count, not money). The dollar twin has the per-currency caveat. |
| Channels / sources | All channels aggregate. POS refunds, Online Store refunds, marketplace refunds all contribute. POS refunds are operationally distinct (issued at the till), but the financial event is identical from Shopify’s perspective. |
| Disputes / chargebacks | Distinct from refunds. A chargeback that wins (customer refunded by Visa) does not necessarily flip the order’s displayFinancialStatus to REFUNDED unless the merchant also processes a refund through Shopify. Chargebacks live separately at Order.disputes. |
| Subscription cancellations | Most subscription apps issue pro-rated refunds for unused periods, which appear here. A simple cancellation with no refund does not. |
| Time window | 30D (default rolling 30 days). |
| Alert trigger | None on the count itself; sudden spikes usually map to (1) a SKU quality failure, (2) a fraud wave, (3) a delivery / fulfillment incident. The dedicated alert lives on Refund Rate. |
| Roles | owner, operations |
Calculation
Worked example
A US apparel brand on Shopify Plus, online + 4 POS retail outlets + TikTok Shop. Reporting period 14 Apr 26 to 13 May 26.| Channel | Orders placed | Orders fully refunded (REFUNDED) | Refund count rate |
|---|---|---|---|
| Online Store | 5,120 | 184 | 3.59% |
| Shop POS (4 outlets) | 1,240 | 38 | 3.06% |
| TikTok Shop | 391 | 42 | 10.74% |
| Buy Button (3rd-party site) | 89 | 2 | 2.25% |
| Total | 6,840 | 266 | 3.89% |
PARTIALLY_REFUNDED orders (not counted in this card; surfaced in Refund Value).
Five things to notice:
- TikTok Shop refund rate at 10.74% is structurally high. TikTok-driven impulse purchases get more buyer’s-remorse refunds than considered DTC purchases; 8 to 14% is normal for fashion on TikTok Shop. Compared to Online Store’s 3.59%, TikTok refunds eat into the channel’s contribution margin sharply. Pair with TikTok Shop Refund Rate (planned) for the channel-specific trend.
- POS refunds are 3.06%, lower than online. POS shoppers physically inspect goods at the till before paying, so post-purchase regret is rarer. A POS refund is usually a true defect or a sizing mistake (apparel) rather than impulse remorse. Conversely, POS refunds are operationally faster (cash or card-back at the till in minutes), so they don’t accumulate as a backlog.
- The 142 partially-refunded orders are invisible here. A multi-item order where one item refunded contributes 0 to this card. On a store where partial refunds are common (multi-line apparel orders, ship-the-rest scenarios), this card materially undercounts the operational refund workload. Pair with Refund Value, which captures partial-refund dollars regardless of the order’s overall financial status.
- 266 refunds is the customer-service workload number. Each refund typically takes a CS rep 4 to 10 minutes (longer for marketplace, shorter for self-serve via Shopify’s customer accounts). At a 300 to $750 in CS labour for the period before any restocking, return-shipping, or inspection time.
- The refund-without-return gap is structural. Of the 266 fully-refunded orders, the warehouse RMA log might show only 180 returns received. The 86 refund-without-return cases break down as: TikTok / marketplace policy (“keep it” goodwill on low-value items), defective products refunded without a return, and customer-service judgment calls. This gap is normal but worth tracking; if it grows beyond 40% of refunds, inventory recovery is leaking and either the policy needs tightening or the data flow needs auditing.
Sibling cards merchants should reference together
| Card | Why pair it with Refund Count |
|---|---|
| Refund Value | The dollar twin. Count is operational; value is finance. Flat count + rising value = refunds getting more expensive (higher-AOV orders refunding); rising count + flat value = more low-value goodwill. |
| Refund Rate | The denominator-aware version (count ÷ orders). Rate tells you whether refund volume is structurally rising or just tracking sales growth. |
| Refunds Over Time | The time series. Distinguishes “always was like this” from “this is new”. |
| Top Refunded Products (planned) | SKU concentration. Refunds cluster on a few SKUs in most stores; top-3 typically explains 30 to 50% of refund volume. |
| Total Orders | The denominator. Refund count alone is unanchored; count vs orders gives the rate. |
| Cancellation Rate | Sibling negative metric. Cancellations + refunds = “revenue that didn’t stick”. |
| Returns Status (planned) | The physical-goods counterpart. Reconciling refund count to return count surfaces leakage. |
stripe.stripe_refund_count | Cross-connector. Stripe counts refund transactions (one order can have multiple partials = multiple Stripe events). Within ±5% on the Stripe-paid subset. |
paypal.pp_refund_count | PayPal-paid refunds only; should equal the PayPal subset of this card. |
bigcommerce.refund_count | Same definition. Documentation cross-link. |
adobe_commerce.refund_count | Adobe uses Credit Memos for the financial event; cross-link only. |
Reconciling against the vendor’s own dashboard
Where to look in Shopify Admin:Orders → All orders → filter by Payment status: Refunded + a date range matching this cardThe count of matching rows is the directly-comparable figure. For a charted view: Analytics → Reports → “Refunds over time” shows the daily breakdown. Other Shopify Admin views similar but not the same:
- Reports → Refunded sales over time: revenue, not count. The dollar twin’s reconciliation source.
- Orders → Returns: the Returns tab (separate from refunds) shows physical-goods RMA tracking. Different lifecycle, different number.
- Analytics → Dashboards → Overview: tile shows refund $ for last 30 days; not the count and not directly comparable.
| Reason | Direction | Why |
|---|---|---|
| Time zone | Boundary days | Shopify Admin runs in store time zone; Vortex IQ uses UTC. For 30-day windows the gap averages out; for “today” or “yesterday” it can shift the count. |
| Partial refunds | Theirs may be higher | Shopify’s “Refunded” filter sometimes catches PARTIALLY_REFUNDED if you’ve toggled the inclusive view; this card counts only fully REFUNDED. |
| Multi-currency rounding | Tiny gap | Each refund’s displayFinancialStatus flips when the full amount is refunded; multi-currency rounding sometimes leaves a 1-cent residue, leaving the order in PARTIALLY_REFUNDED rather than REFUNDED. Stores using Shopify Markets see this occasionally. |
| Shopify Plus vs basic | Minor | Plus stores may use Shopify Functions to customise refund flows; bespoke flows can flip the financial status differently. Most stores don’t run custom refund logic. |
| Test orders | Ours slightly higher | Order.test = true not yet filtered; refunded test orders count. |
| Sync lag | Ours lower for last 5 to 15 minutes | Webhook-driven indexing. Refunds processed within the last sync interval are not yet indexed. |
| Channel Manager lag | Ours lower for marketplace | Marketplace-side refunds (TikTok Shop, Amazon-via-Shopify) take 24 to 72 hours to flow through. |
| Card | Expected relationship | Notes |
|---|---|---|
stripe.stripe_refund_count | Within ±5% on the Stripe-paid subset | Stripe counts refund transactions; Shopify counts refund orders. A single order with three partial refunds = 3 Stripe events but 0 to 1 Shopify count (depending on whether the totals fully refund). Gap of 5 to 15% normal. |
paypal.pp_refund_count | Equals PayPal-paid refunds | Useful for stores splitting traffic between Stripe and PayPal. |
Known limitations / merchant FAQs
Why doesn’t this card include partial refunds? Operationally, partial and full refunds drive different decisions. A full refund means the order failed for the customer (defective, didn’t arrive, returned-and-refunded). A partial usually means a small adjustment (one item of three, missing accessory, shipping refund for delay). Mixing them dilutes both signals. For the combined dollar view, use Refund Value which captures impact regardless of full vs partial. My Shopify Admin shows 280 refunded orders but this card shows 266, where are the missing 14? Almost always a time-zone gap or sync lag. Shopify Admin uses store time zone; Vortex IQ uses UTC. For a 30-day window the boundary can shift by up to 24 hours of orders. Check the Shopify Orders list on a 31-day or 32-day window centred on the card period and the figures usually reconcile to within 1 to 2 orders. A customer was refunded but the order still showsPAID, why?
Two usual causes. (1) The merchant issued the refund through the gateway directly (Stripe Dashboard, PayPal Resolution Centre) without using Shopify’s refund flow. The financial event happened, but Shopify doesn’t know the order should flip. Always issue refunds through Shopify’s Order → Refund flow, not gateway-side, otherwise this card under-counts. (2) An app issued a partial refund that doesn’t add up to the full total; the order sits in PARTIALLY_REFUNDED.
How does this differ from the Returns count?
Returns tracks physical goods coming back; this tracks money going out. A merchant can have 50 returns approved and 30 refunds processed; only the 30 are on this card. Returns and refunds are separate lifecycles on Shopify; refund is the financial outcome, return is the physical-goods outcome.
Does this include chargebacks?
Generally no, unless the merchant explicitly processes a Shopify-side refund in response to the chargeback. Chargebacks live at Order.disputes with their own status (OPEN, WON, LOST, ACCEPTED). For a clean dispute view use the gateway card (stripe.stripe_dispute_count, paypal.pp_dispute_count).
My Shopify Subscriptions cancellation shows up here, why?
Most subscription apps issue a pro-rated refund of the unused period when a customer cancels mid-cycle, which flips the order to REFUNDED. If you don’t want subscription cancellations counted, filter by tag (most subscription apps tag the order subscription_cancelled or similar).
Why is my TikTok Shop refund count so much higher than Online Store?
Structurally normal. Impulse-purchase channels have higher buyer’s-remorse rates than considered-purchase channels. TikTok Shop, Instagram Shop, and live-shopping events typically run 2 to 4x the DTC refund rate. Above 15% on TikTok Shop is the warning line for Account Health; below 5% your listings are above-average accurate.
Multi-currency stores, does this card aggregate or split?
The count aggregates (currency-agnostic). The dollar twin Refund Value has the multi-currency-without-FX caveat.
Shopify Plus vs basic plan, behavioural differences?
Largely none. Plus stores can customise refund flows via Shopify Functions; the financial-status flip behaves the same. Plus B2B Edition refunds use the same flow with company-customer attribution.
B2B vs DTC, do they differ?
Yes meaningfully. B2B refund counts are typically much lower (1 to 2% rates) but each refund is much larger in dollar terms. The card under-represents B2B impact; pair with Refund Value for the dollar view, which surfaces the size of B2B refunds.
Refresh cadence?
Webhook-driven, 5 to 15 minute index lag. Marketplace-channel refunds (TikTok Shop, Amazon) lag 24 to 72 hours via Channel Manager sync.
The number jumped from 60 to 230 last week, what should I check first?
Three usual causes ranked by likelihood: (1) a fraud wave (one fraudulent gift-card-resale or stolen-card operation can refund hundreds of orders quickly), (2) a SKU quality failure (a bad batch with manufacturing defect), (3) a Channel Manager sync catch-up (marketplace-side refunds backlog flushing through). Pull Top Refunded Products and look at SKU concentration. One or two SKUs = quality issue. Even distribution across many SKUs = fraud or sync.
Action playbook when this card spikes:
- Pull Top Refunded Products. SKU concentration tells you quality vs fraud.
- Cross-reference Refunds Over Time. A single-day spike vs sustained rise behaves differently.
- Check fulfillment incidents in
datadog.dd_incident_count. A 3PL outage 5 to 14 days earlier often shows up as refund volume now. - For marketplace channels, log into the channel admin and review the Voice-of-the-Customer reports. They surface complaint types Shopify doesn’t.
- Audit fraud rules. Sustained fraud waves require gateway-level rule changes (Stripe Radar, PayPal Risk).