Catches a bad batch / mis-priced SKU / regression-after-deploy before the chargeback wave hits.
At a glance
Real-time alert that fires when the refund rate (Credit Memos issued per ordered unit) exceeds 2x the trailing 30-day baseline. Designed to catch a bad supplier batch (defective product), a mis-priced SKU (a £30 item rang up at £3 because of a decimal-point error), or a regression-after-deploy (a fulfillment integration is shipping wrong items). Each of these creates a refund wave that snowballs into chargebacks if not caught within hours.
Calculation
Worked example
A houseware retailer on Adobe Commerce 2.4.6 with a US Store View, a UK Store View, and a B2B portal Store View. Snapshot taken Thursday 21 Apr 26, 13:00 BST. The alert just fired. 30-day baseline (Thursdays 13:00 BST):
Current hour:
The alert fired because combined refund rate is 3.3x the 30-day baseline at this hour-of-week. The UK stream is 4.6x baseline.
What the investigation reveals:
- UK is the problem. US and B2B are within normal variance.
- Pulling the 17 UK Credit Memos: 12 of them are against the same SKU,
KETTLE-CC-1L(a 1-litre stovetop kettle). The remaining 5 are normal scattered returns. KETTLE-CC-1Lorder velocity has been climbing for a week (a TikTok video drove a viral spike). The merchant has been gleeful about the demand. But starting yesterday afternoon, the customer service inbox has had complaints: the kettle handle is loose on arrival.- Cross-checking Top Refunded SKUs:
KETTLE-CC-1Lis now the #1 refunded SKU, accounting for 22% of UK refund volume in the last 24 hours. Last week it was not in the top 20. - Root cause: the supplier shipped a defective batch. The merchant received pallets of
KETTLE-CC-1Lfrom supplier 4 days ago; everything dispatched since then has the loose-handle defect. - The fix sequence:
- Pause the
KETTLE-CC-1Lad campaign immediately (use Active Ads on OOS SKUs workflow plus manual pause). - Mark
KETTLE-CC-1Las out of stock in Adobe Commerce admin (Catalog > Products > KETTLE-CC-1L > Stock Status: Out of Stock). This stops new orders. - Email all UK customers who received
KETTLE-CC-1Lin the last 4 days with proactive replacement offers (about 320 customers per the Sales > Orders search). - Issue an RMA to the supplier for the defective batch.
- Resume sales only when verified-good replacement stock arrives.
- Pause the
- Cost-of-detection: at the moment of the alert, ~90 defective kettles were already in transit to UK customers. Without the alert, the merchant would have discovered the defect through customer service pressure on Friday (when most of the 90 had been delivered and complaint volume crested). Detecting at hour 0 means proactive comms to ~290 of the 320 customers, dramatically improving retention.
- Chargeback-risk avoidance: refund-rate spikes that go unmanaged for 14+ days correlate strongly with chargeback waves (customers who can’t get refunds from the merchant escalate to the card issuer). Catching at hour 0 means refunds processed before chargebacks are filed; merchant reputation with payment processors is preserved.
Sibling cards merchants should reference together
This alert is most actionable when paired with product-level and payment-side cards.Reconciling against the vendor’s own dashboard
Where to look in Adobe Commerce Admin: For the Credit Memo list:Sales > Credit Memos lists every memo issued, with date, amount, and the originating order. Filter by date range to see the per-hour count. Adobe Admin shows the absolute count; this card derives a ratio against orders.For per-SKU refund detail:
Reports > Sales > Refunds aggregates Credit Memo amount by date. Useful for spotting trends but does not break down by SKU; use the manual workflow Sales > Credit Memos > export to CSV > pivot in spreadsheet for SKU detail. Or use the Top Refunded SKUs card.For the underlying order side:
Sales > Orders filtered to today gives the order denominator.Other Adobe Commerce Admin views that look relevant but are not:
- Reports > Sales > Tax: tax aggregations, not refund rate.
- Reports > Sales > Coupons: coupon usage.
- Sales > Invoices: separate document; an invoice can be issued without a Credit Memo following.
- Sales > Returns (RMA module if installed): authorisations to return, separate from the actual refund issuance.
Cross-connector reconciliation (when these connectors are connected for this merchant):
Known limitations / merchant FAQs
The alert fired but my Stripe dashboard shows normal refund volume, why? Possible causes. First, store credit: a Credit Memo withrefund_to_store_credit = true issues credit but does not refund the payment processor. Adobe records the memo, Stripe sees nothing. Second, manual cash refunds (rare in ecommerce but happens for B2B and high-touch merchants): the merchant refunded via bank transfer outside Stripe, recorded the Credit Memo for accounting accuracy, but Stripe is uninvolved. Third, sync lag: Stripe webhooks land within seconds, but if the integration is queueing them, you may see a brief Adobe-leads-Stripe gap.
What’s the difference between a Credit Memo and a cancellation, and which does this card track?
A cancellation is state = canceled with no payment captured, no goods shipped, no Credit Memo. The customer abandons or the merchant cancels before fulfillment. A Credit Memo is a separate document issued after capture (typically after fulfillment, sometimes pre-shipment) that refunds money. This card tracks Credit Memos only. Cancellations are tracked by Cancellation Rate. Together they cover the “money-back” surface area; merchants tend to focus on one and miss the other, which is a mistake.
Adobe Commerce vs Magento Open Source: does this card work on the free edition?
Yes. Credit Memos exist in both editions and the document structure is identical. The only edition-specific difference: Adobe Commerce’s RMA (Returns Merchandise Authorisation) module adds a structured returns-management workflow, but Credit Memos are still the underlying record on either edition.
Why does the alert use 2x baseline rather than a fixed rate threshold?
Baseline refund rates vary enormously by category: fashion stores baseline at 15 to 30%, hardware stores at 1 to 3%, B2B accounts under 1%. A fixed 5% threshold would constantly fire on fashion and never on hardware. The 2x multiplier normalises against each merchant’s own baseline.
My multi-store Adobe Commerce, can I get per-Store-View alerts?
Yes, configure per-Store-View variants. Refund spikes are usually localised; UK consumers may refund a defective batch while US is fine because the defective batch shipped from a UK warehouse. Per-Store-View variants surface the localisation immediately.
B2B accounts have very low refund rates, will B2B variance trigger false alerts?
The card has an absolute-count gate (5 memos in the hour) to avoid noise on low-volume streams. B2B going from 0.2 memos/hour baseline to 1 memo/hour is a 5x ratio, but absolute count is below threshold so it doesn’t fire. For B2B-only stores, lower the absolute-count gate to 2 or 3 in the manifest.
Does the alert distinguish partial refunds from full refunds?
Not in the count. A partial refund (1 of 3 line items returned) counts as one memo, same as a full refund. The companion value-at-risk metric uses Credit Memo grand_total which captures the actual amount; a partial memo will show smaller. If you specifically need to monitor full-refund spikes (the worst signal: customer returned everything), filter the manifest to Credit Memo grand_total = order grand_total.
Why is the rate calculated from this hour’s orders rather than the original orders being refunded?
Two approaches are valid. (a) Refunds-this-hour / orders-this-hour: a real-time pulse, captures “are refunds suddenly elevated right now”. (b) Refunds-of-orders-from-the-last-30-days / orders-from-the-last-30-days: a quality-of-cohort view. The card uses (a) because the alert is for incident detection. Approach (b) is captured by the Refund Rate trailing card. Both views matter; this card is for “is the customer service inbox about to flood”.
The viral SKU is converting AND being refunded a lot, do I pause it?
Not necessarily. If conversion rate is healthy and refund rate is acceptable on a per-SKU basis, the volume of both rising in lockstep is just demand. The alert’s job is to flag when refund rate is rising disproportionately, signalling a quality issue. Cross-check Top Refunded SKUs and customer-feedback channels (reviews, support tickets) before acting.
Why doesn’t Google Analytics agree?
GA4 attributes purchase events; it does not natively track refunds in the standard ecommerce event model (you can custom-implement refund events via Measurement Protocol but most merchants don’t). The card uses Adobe-side server data which is the source of truth for Credit Memos.