At a glance
Top customers ranked by total refund value over the 90-day window. Surfaces the chronic-refunder tier, fraud risk, and customers whose net economic value to the business may be negative.
| What it counts | SUM(refund.amount) GROUP BY customerId ORDER BY sum DESC LIMIT 25. Refund records linked to the customer; gross refund value (not net of original spend). |
| VAT / tax treatment | Refund amounts inherit store’s tax treatment. |
| Shipping | Refunded shipping included in refund amount if Shopify refunded shipping line. |
| Discounts | Reflected; refunds for discounted-orders carry the discounted amount. |
| Refunds | This is the metric. |
| Cancelled / voided orders | Excluded; cancellations don’t create refund records. |
| Currency | Multi-currency arithmetic without FX. Per-currency totals are accurate; cross-currency aggregate is not. |
| Channels / sources | All channels. POS-till refunds count if Shopify creates refund records (most do). |
| Time window | 90D (default 90D rolling) |
| Alert trigger | None directly; pair with refund-value thresholds for fraud-detection rules. |
| Roles | owner, operations |
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 UK womenswear DTC brand on Shopify Plus. 90D window 12 Feb 26 to 12 May 26.| Rank | Customer | 90D refunds | 90D spend | Refund rate (per customer) | Note |
|---|---|---|---|---|---|
| 1 | Customer A | £1,840 | £2,520 | 73% | Try-on-and-return pattern |
| 2 | Customer B | £1,420 | £2,860 | 50% | Multi-size order with returns |
| 3 | Customer C | £1,180 | £1,290 | 91% | Fraud red flag |
| 4 | Customer D | £980 | £3,640 | 27% | Healthy buyer, occasional returns |
| 5 | Customer E | £820 | £1,440 | 57% | Try-and-return |
| … | |||||
| 25 | Customer Y | £190 | £640 | 30% | Threshold |
| Top-25 total | £14,200 | ~22% of all refunds |
- Customer C is a fraud signal. £1,180 refund on £1,290 spend = 91% refund rate. This is either chronic try-and-return (intentional zero-cost wardrobing) or outright fraud (returning empty boxes, returning different items). Investigate the support history.
- Customer A is high-risk-but-legitimate. 73% refund rate is excessive but consistent with apparel-shopping behaviour. Some customers buy 4 sizes intending to return 3. Operationally costly for the brand (return-shipping + restock time + write-offs from damage); flag for “single-size order” policy or requested-size confirmation.
- Customer D is normal. 27% refund rate at £3,640 spend = a regular shopper who refunds occasionally. Healthy customer; the refunds are part of the service experience.
- Top-25 = 22% of refund value. Power-law concentration. The top-5 do most of the damage; addressing them addresses most of the cost.
- The list reveals systematic issues. If 8 of top-25 have similar refund-reason patterns (“size too small”, “fit too tight”), the brand has a sizing problem on a specific product family, not a customer problem.
- POS in-store returns may be missing. If a customer brings 3 dresses to the London showroom for in-store returns, those don’t always create native Refund records (depends on POS-API config). The list under-counts hybrid-channel refunders.
Sibling cards merchants should reference together
Top Refunders is the chronic-refunder list. Companions:| Card | Why pair it with Top Refunding Customers |
|---|---|
| Top Customers (by spend) | The flip-side; cross-reference to find apparent VIPs who are net-loss. |
| Refund Rate | Aggregate refund rate; this card surfaces who drives it. |
| Refund Value | Aggregate £ refunded; this card breaks down by customer. |
| Refund Count | Order-count companion. |
| Return Status | Process-state of the return cohort. |
| Refund-Rate Spike Alert | Acute event detection; this card is for chronic-pattern detection. |
| Customer Segments | Cohort context; some segments inherently refund more. |
Reconciling against the vendor’s own dashboard
Where to look in Shopify Admin: Shopify doesn’t expose a top-refunder ranking directly. Reconstruct from:- Customers → Filter by number of refunds or refund total: not directly available; use Shopify customer-segment builder with custom criteria.
- Reports → Returns: aggregate; doesn’t rank by customer.
- Apps like Loop Returns / Returnly / AfterShip Returns: their dashboards expose chronic-refunder rankings.
| Reason | Direction | Why |
|---|---|---|
| Customer linking | Either | Identity-resolution edge cases (typo’d email, phone-only) sometimes resolve in Shopify Admin and not in our index. |
| Time zone | Boundary | UTC vs store time zone. |
| Refund definition | Either | We count all refund records; some apps filter to specific reason codes. |
| POS in-store | Either | Till-time refunds may not always create refund records. |
| Sync lag | Ours lower for “today” | Most-recent 5-15 min may not be in. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
stripe.stripe_disputes | Indirect | Customers who dispute on Stripe overlap with chronic refunders; not all top-refunders dispute, not all disputers refund. |
zendesk.zd_complaint_volume (when connected) | Indirect | Chronic refunders may also be heavy support-ticket users. |
klaviyo.kl_unsubscribe_rate | Lagging | After bulk refunds, customers often unsubscribe. |
Known limitations / merchant FAQs
How do I tell the difference between “fraud” and “fashion”? Fraud signatures:- Refund rate >85%: nearly every order returned. Legitimate customers don’t behave this way.
- High-velocity short-window orders: 5-10 orders in 2 weeks then bulk return.
- Multiple addresses or payment cards: same customer using different details to avoid detection.
- Returned-empty-box pattern: if your warehouse flags items “received but missing”, that’s deliberate fraud.
- Refund rate 30-60%: chronic try-and-return; common in apparel.
- Single-customer cluster: same shipping address, same name, normal payment patterns.
- Multi-size orders: customer ordered 3 sizes intending to return 2.
- Maintain the relationship if margin on the £1,000 net is acceptable.
- Restocking fee policy for orders with >X% return rate; signals the cost.
- Direct conversation via account manager: “we love your business, but we need to align on returns expectations.”
- Weekly review: scan top-10 for new entrants. Compare to last week’s top-10; new arrivals deserve immediate attention.
- Investigate top-3: pull their order history, refund reasons, and customer-service interactions. Identify pattern.
- For fraud-signature: blacklist via Shopify customer-tagging or block-list, escalate to fraud team if multiple cards involved.
- For fashion-signature: implement policy (restocking fee on >X% return-rate, single-size order suggestion) or proactive communication.
- For VIP-conflict: route to account-management; the spend often justifies the cost, but the conversation matters.
- Quarterly category audit: if top-10 reveals systematic issue (sizing on a specific product family), fix the product / merchandising rather than the customer.