At a glance
The top SKUs by refund volume over the last 90 days, ranked by either count of refunded units or refunded dollar value. The single highest-leverage merchandising signal on a BigCommerce store, the SKUs that customers are returning are telling you exactly which products have a quality, sizing, description, or expectation problem.
| What it counts | SUM(refunded_quantity) GROUP BY product_id over a rolling 90-day window. Each refund line is attributed to the parent product (variants roll up to product unless the merchant explicitly splits the view). Default ranking is by refunded units; toggle to refunded value for a dollar view. |
| VAT / tax treatment | n/a for the unit count. For the dollar view the refund total uses BigCommerce’s total_inc_tax refund amount (matches the customer-refunded total exactly). |
| Shipping | Shipping refunds are excluded from the per-product attribution (shipping refunds attach to the order, not a SKU). |
| Discounts | The refund amount reflects what the customer paid, post-discount. A 50% off SKU that gets refunded shows the discounted refund value, not the list price. |
| Refunds | This card is the refund view, so all refund line items contribute regardless of refund reason (defective, damaged in transit, “didn’t fit”, “changed my mind”). |
| Cancelled / voided orders | Excluded. Cancellations before fulfilment are tracked separately on BC Cancelled Over Time; this card cares about goods-shipped-and-returned. |
| Currency | Multi-currency without FX conversion. If your store takes USD and EUR, the refund-dollar view sums them naively. Filter the card by currency for a clean view. The unit-count view is currency-agnostic and always correct. |
| Channels / sources | All BC channels contribute, web, POS, Amazon Channel Manager, eBay, Facebook Shop, B2B portal. Marketplace returns flow through the same Channel Manager refund path; POS returns hit the same refund webhook. The card does NOT split per channel by default; pair with BC Channel Refund Rate for that view. |
| B2B Edition note | B2B portal refunds (Enterprise plan) are included. B2B return rates are typically lower (5-12%) than B2C (20-35% for fashion); a sudden B2B refund spike is unusual and usually signals a fulfilment defect rather than a customer preference issue. |
| Time window | 90D (rolling 90 days, refreshed daily) |
| Alert trigger | None on this card directly; pair with BC Alert Refund Rate Spike for movement alerts. |
| Roles | owner, operations |
Calculation
Calculated automatically from your BigCommerce 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 fashion brand on BigCommerce Pro, 90-day window 14 Feb 26 to 14 May 26.| Rank | SKU | Product | Units sold | Units refunded | Refund rate | Refund value | Diagnosis |
|---|---|---|---|---|---|---|---|
| 1 | WS-LIN-01-M | ”Linen midi dress, size M” | 412 | 178 | 43.2% | $9,790 | Sizing problem |
| 2 | MS-CHI-01-32 | ”Chino trousers, 32W” | 380 | 96 | 25.3% | $4,800 | Sizing borderline |
| 3 | WS-CAR-04-S | ”Cardigan, size S” | 220 | 41 | 18.6% | $2,255 | Acceptable |
| 4 | WS-BAG-LTH-22 | ”Leather tote, large” | 145 | 38 | 26.2% | $3,420 | Quality complaint |
| 5 | MS-TEE-03-L | ”Cotton tee, size L” | 690 | 52 | 7.5% | $1,040 | Healthy |
- The linen midi dress at 43.2% refund rate is a five-alarm event. Four out of every ten units shipped come back. The unit-count ranking puts it at #1 with 178 refund units, the dollar-value view at $9,790 makes it the single most expensive SKU in the catalogue. This SKU should be paused immediately, returned-units inspected, and the product page reviewed.
- Sizing is the dominant root cause for fashion. Look at refund reasons in the Order tab: if “didn’t fit” or “too small” / “too large” make up >60% of the reasons, the size chart is wrong. Re-shoot the model with explicit measurements; add a “fits true to size” or “runs small” note. Brands that update their size chart typically see refund rates fall by 10-15 percentage points within 30 days.
- The leather tote at 26% refund rate is a different pattern: refund reasons probably cluster around “quality not as expected” or “different colour”. This is a photography or description failure, not a sizing one. Action: re-shoot in natural light, add macro shots of the leather grain, add a paragraph describing the actual texture.
- A 7.5% refund rate on the cotton tee is healthy for fashion. Don’t waste effort optimising the tail; the leverage is at the top.
- Compounding effect. The top-5 refunded SKUs in this example account for 7,100/month of avoidable cost. Halving that with size-chart and photography fixes adds $42k of profit annually. This card is the highest-ROI single dashboard on most fashion BC stores.
- Pause or fix the top-2 SKUs by refund rate (anything above 30% gets paused; 20-30% gets a product-page audit; under 20% gets monitored).
- Read the actual refund reasons in BC’s Refund tab for the top-5. The pattern (sizing / colour / quality / damage) tells you the exact fix.
- Cross-reference with BC Top SKUs Revenue to identify SKUs that are both top-sellers AND top-refunded. These are urgent: high volume × high refund rate = the largest pool of avoidable cost.
- Look at variant-level data. A product with 43% refund rate often has one bad variant (the M size) and four healthy ones; the fix is a size-specific adjustment, not a full SKU pull.
- Tag the fixed SKUs in BC with
refund_audit_v1_completeso you can measure the effect of the fix in 30 days. Did the refund rate fall? If yes, replicate the playbook on the next bottom-5.
Sibling cards merchants should reference together
| Card | Why pair it with Most Refunded Products |
|---|---|
| Refund Rate | The store-wide refund-rate headline. Tells you whether the SKU concentration here is anomalous (low store rate, high SKU rate = real outlier) or representative (high store rate, high SKU rate = systemic). |
| Refund Value | The dollar denominator. The same SKU at #1 by units and #5 by value tells you it’s a high-volume, low-price item; the inverse signals a premium return problem. |
| BC Top SKUs Revenue | Cross-reference for “top sellers AND top refunded” SKUs, the highest-leverage SKUs to fix. |
| Refunds Over Time | The trend view. A SKU at #1 today may be improving (refund count falling week over week) or worsening (rising); this card hides the trajectory. |
| BC Alert Refund Rate Spike | The movement alert. Fires when refund rate jumps suddenly, often signalling a defective batch shipped from the warehouse. |
| BC Channel Refund Rate | The per-channel split. A SKU refunded heavily on Amazon but not on web suggests an Amazon-specific issue (listing image, fulfilment partner, marketplace customer expectation gap). |
| Top Refunded | The store-wide refund leaderboard regardless of product breakdown. Useful to confirm that your top refunded products aren’t drowning in noise. |
shopify.top_refunded | Cross-platform peer for agencies running both Shopify and BC stores. |
Reconciling against the vendor’s own dashboard
Where to look in BigCommerce Control Panel: Orders → All orders, filter by statusRefunded or Partially Refunded, then sort by date descending. There is no native BC report that ranks refunded products directly; the closest is Analytics → Reports → Returns (Plus / Pro / Enterprise plans only) which lists refund counts but not by product. The per-product breakdown requires either an export of refund data or a third-party app, this card does that aggregation natively.
For diagnosis on a specific SKU: click into the order, the refund line items show the per-SKU refund quantity and reason. Aggregating reasons across orders by hand is tedious; this card surfaces the pattern.
Why our number may legitimately differ from BC:
| Reason | Direction |
|---|---|
| Variant rollup. We aggregate refund units to the parent product by default. If you compare against a SKU-by-SKU export, our numbers look higher per row. Toggle the variant view in the card for a per-variant breakdown. | Vortex IQ HIGHER per-product number than per-variant export |
| Partial refunds. A partial refund (one item of a multi-item order) counts the one item. BC’s order-level “Refunded” status filter shows the whole order, so the order count appears higher than the per-product unit count. | Different cardinality (orders vs. units) |
| Refund reason category gaps. BC’s refund reason field is free text in some legacy stores; we normalise into 6 standard buckets (defective, damaged in transit, sizing, colour mismatch, customer changed mind, other). The bucketed counts may not match raw BC text exactly. | Cosmetic only |
| Time-zone. BC orders use store-time-zone timestamps; this card uses UTC for the rolling 90-day window. Boundary refunds at the start/end of the window may differ by 1 day. | Boundary-day shifts |
| Cancelled-then-refunded orders. Some merchants cancel an order and trigger a refund through the cancellation flow. BC may surface this in cancellation reports rather than refund reports; we count the refund line. | Vortex IQ may be HIGHER if cancellations get refunded |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_ads.ga_top_refunded_skus_paid | SKUs in this card that also appear in your top ad-driven SKUs are double-burn: you’re paying to acquire customers who then return. | Ads attribution may differ from BC’s referrer tracking; expect ±15% overlap noise. |
klaviyo.kl_post_purchase_flow_top_refunded | A SKU heavily refunded here should trigger your Klaviyo “did you get the right size?” or “tell us why” post-purchase flow. | Klaviyo flows are opt-in; coverage is rarely 100%. |
google_analytics.ga_returns_by_product | If GA4 has a refund event configured, the per-product refund count there should track this card. | GA4 misses refunds where the customer never visited the post-purchase page; coverage is typically 60-75%. |
top_refunded) and Adobe Commerce (adobe_top_refunded); product attribution semantics are equivalent across platforms.
Known limitations / merchant FAQs
My #1 SKU has only 12 refunds, is the ranking meaningful? For low-volume stores (<200 orders/month), the top of this leaderboard is noisier than the tail. Twelve refunds on a SKU that sold 30 units is genuinely a 40% refund rate problem; twelve refunds on a SKU that sold 800 units is 1.5% and probably noise. Always look at refund rate, not just refund count. The card supports a min-units-sold filter; set it to 30-50 to suppress small-sample false positives. Why are some of my refunded SKUs not in this card? Three common causes: (1) the refund happened outside the 90-day window; (2) the refund was processed as a “cancellation” rather than a “refund” in BC’s order workflow (these surface on BC Cancelled Over Time instead); (3) the refund was a shipping-only refund (the customer kept the goods but got the shipping cost back), which doesn’t attribute to a SKU. To see the full picture, cross-reference with Refund Value and BC Cancelled Over Time. My fashion store always has high refund rates, what’s normal? Fashion industry benchmark refund rate is 20-35%. Anything below 15% is exceptional (often signals a “no-returns” policy or a non-fashion catalogue mislabelled). 35-45% is high but recoverable; 45%+ is a structural problem (sizing, photography, expectations, or customer-segment mismatch). Homewares typically run 8-15%; consumer electronics 5-10%; consumables under 3%. Compare your store’s headline refund rate against your category, not against an absolute number. Can I exclude “customer changed their mind” refunds from this view? Not directly, the card aggregates by SKU regardless of refund reason. However, if you click into a high-rank SKU’s refund detail, you’ll see the reason breakdown. SKUs where >70% of refunds are “changed mind” are not a product-quality problem; they’re a marketing-promise problem (the product page promised something the product didn’t deliver). Different fix. Why does the same SKU appear at #1 on the unit-count view but #5 on the dollar-value view? High-volume, low-price items rank high by units; low-volume, high-price items rank high by value. Use both views. Unit count tells you which SKU is causing operational pain (the warehouse processes more returns); dollar value tells you which SKU is causing financial pain. Premium fashion brands often see hero items at #1 by value despite a moderate refund count. My multi-currency store, the dollar values look weird, why? The card sums refund amounts naively across currencies; without FX conversion, $100 USD and £100 GBP both contribute “100”. Filter the card by currency for accurate dollar comparisons. The unit-count view is currency-agnostic and always correct. Can I see refund reasons aggregated across all my refunds? Yes, click “Reason breakdown” at the top of the card for a store-wide reason histogram (defective, sizing, colour, damaged, changed mind, other). This is more useful than per-SKU reasons for spotting systemic problems (e.g. 40% of all refunds being “damaged in transit” points to a fulfilment partner problem, not a product problem). My B2B portal refunds, do they show up here? Yes if you’re on BC Enterprise with B2B Edition enabled. B2B refund rates are typically much lower (5-12%) than B2C; if you see a B2B SKU at the top of this card, investigate immediately, B2B customers tend to refund only for genuine defects, not preference reasons. A specific SKU jumped from rank 50 to rank 3 over two weeks, what happened? Almost certainly a defective batch shipped from the warehouse. Cross-check with BC Alert Refund Rate Spike. Check fulfilment dates of the refunded units, if they cluster on a specific 1-2 day window, that batch had a quality issue. Action: pull remaining inventory of that batch, replace, contact customers proactively. Should I auto-pause SKUs above a threshold? Strongly recommended for SKUs above 40% refund rate, with min 50 units sold. The unit-economics are negative at that rate (refund processing, shipping back, restocking, customer service all cost real money). Vortex Mind can configure this auto-pause via a workflow rule, the SKU is set toavailability = disabled until a human reviews the product page.