> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Refunded Orders, Shopify

> Refunded Orders for Shopify stores. Tracked live in Vortex IQ Nerve Centre. How to read it, why it matters, and how to act on it.

**Metrics type:** [Supporting Metrics](/nerve-centre/overview#metrics-types-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

## 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](/nerve-centre/kpi-cards/shopify/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](/nerve-centre/kpi-cards/shopify/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](/nerve-centre/kpi-cards/shopify/refund-rate).                                                                                                                                            |
| **Roles**                            | owner, operations                                                                                                                                                                                                                                                                                                                                                              |

## Calculation

```
COUNT(displayFinancialStatus=REFUNDED)
  WHERE date BETWEEN [period_start, period_end]
```

## 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%**         |

Plus 142 `PARTIALLY_REFUNDED` orders (not counted in this card; surfaced in [Refund Value](/nerve-centre/kpi-cards/shopify/refund-value)).

Five things to notice:

1. **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](/nerve-centre/shopify/tiktok_refund_rate) (planned) for the channel-specific trend.
2. **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.
3. **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](/nerve-centre/kpi-cards/shopify/refund-value), which captures partial-refund dollars regardless of the order's overall financial status.
4. **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 $25/hour loaded cost, this is ~$300 to \$750 in CS labour for the period before any restocking, return-shipping, or inspection time.
5. **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](/nerve-centre/kpi-cards/shopify/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](/nerve-centre/kpi-cards/shopify/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](/nerve-centre/kpi-cards/shopify/refunds-over-time)                     | The time series. Distinguishes "always was like this" from "this is new".                                                                                                                               |
| [Top Refunded Products](/nerve-centre/kpi-cards/shopify/top-refunding-customers) (planned) | SKU concentration. Refunds cluster on a few SKUs in most stores; top-3 typically explains 30 to 50% of refund volume.                                                                                   |
| [Total Orders](/nerve-centre/kpi-cards/shopify/total-orders)                               | The denominator. Refund count alone is unanchored; count vs orders gives the rate.                                                                                                                      |
| [Cancellation Rate](/nerve-centre/kpi-cards/shopify/cancellation-rate)                     | Sibling negative metric. Cancellations + refunds = "revenue that didn't stick".                                                                                                                         |
| [Returns Status](/nerve-centre/shopify/returns_status) (planned)                           | The physical-goods counterpart. Reconciling refund count to return count surfaces leakage.                                                                                                              |
| [`stripe.stripe_refund_count`](/nerve-centre/kpi-cards/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`](/nerve-centre/kpi-cards/paypal/refund-count)                    | PayPal-paid refunds only; should equal the PayPal subset of this card.                                                                                                                                  |
| [`bigcommerce.refund_count`](/nerve-centre/kpi-cards/bigcommerce/refunded-orders)          | Same definition. Documentation cross-link.                                                                                                                                                              |
| [`adobe_commerce.refund_count`](/nerve-centre/kpi-cards/adobe-commerce/refunded-orders)    | 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](https://admin.shopify.com/orders) → filter by **Payment status: Refunded** + a date range matching this card

The count of matching rows is the directly-comparable figure. For a charted view: [Analytics → Reports → "Refunds over time"](https://admin.shopify.com/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.

**Why our number may legitimately differ from Shopify Admin:**

| 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.                                                                                                                                                                   |

**Cross-connector reconciliation:**

| Card                                                                        | Expected relationship                | Notes                                                                                                                                                                                                                             |
| --------------------------------------------------------------------------- | ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`stripe.stripe_refund_count`](/nerve-centre/kpi-cards/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`](/nerve-centre/kpi-cards/paypal/refund-count)     | Equals PayPal-paid refunds           | Useful for stores splitting traffic between Stripe and PayPal.                                                                                                                                                                    |

***

<details>
  <summary><em>Documentation cross-reference (for agencies running multiple platforms)</em></summary>

  The refund-count metric exists on other commerce platforms with different financial-vs-physical semantics. BigCommerce overloads `status = Refunded` for the financial event; Adobe Commerce uses Credit Memos; Shopify uses `displayFinancialStatus = REFUNDED`. The intent (count of fully-refunded orders) is similar; the underlying entities differ.

  * [`bigcommerce.refund_count`](/nerve-centre/kpi-cards/bigcommerce/refunded-orders)
  * [`adobe_commerce.refund_count`](/nerve-centre/kpi-cards/adobe-commerce/refunded-orders)
</details>

## 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](/nerve-centre/kpi-cards/shopify/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 shows `PAID`, 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`](/nerve-centre/stripe/stripe_dispute_count), [`paypal.pp_dispute_count`](/nerve-centre/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](/nerve-centre/kpi-cards/shopify/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](/nerve-centre/kpi-cards/shopify/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](/nerve-centre/kpi-cards/shopify/top-refunding-customers) 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:**

1. Pull [Top Refunded Products](/nerve-centre/kpi-cards/shopify/top-refunding-customers). SKU concentration tells you quality vs fraud.
2. Cross-reference [Refunds Over Time](/nerve-centre/kpi-cards/shopify/refunds-over-time). A single-day spike vs sustained rise behaves differently.
3. Check fulfillment incidents in [`datadog.dd_incident_count`](/nerve-centre/datadog/dd_incident_count). A 3PL outage 5 to 14 days earlier often shows up as refund volume now.
4. For marketplace channels, log into the channel admin and review the Voice-of-the-Customer reports. They surface complaint types Shopify doesn't.
5. Audit fraud rules. Sustained fraud waves require gateway-level rule changes (Stripe Radar, PayPal Risk).

***

### Tracked live in Vortex IQ Nerve Centre

*Refunded Orders* 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](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
