Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform

At a glance

Customers and B2B Companies ranked by refund value over the rolling 90-day window. Helps Operations spot serial returners, fraud-pattern customers, and damaged-shipment-cluster B2B accounts. The card sits between “this is a normal returns operation” and “this is a possible fraud or chronic dispute” depending on context, the same customer at #1 means very different things in DTC vs B2B.
What it countsFor each customer_id (and Adobe Commerce company_id where the B2B module is enabled): SUM(creditmemo.grand_total) and COUNT(creditmemo) over the 90-day window, ranked descending by sum. Top 20 returned by default. Guests aggregated by email address (customer_email on the order) since they have no customer_id.
API fieldcustomer_id, customer_email, extension_attributes.company_attributes.company_id, joined to creditmemo.grand_total and creditmemo.created_at from GET /rest/V1/creditmemos.
VAT / tax treatmentTax-inclusive (grand_total). For UK/EU merchants this is the customer-paid figure including refunded VAT. Net-of-tax view available via the breakdown column.
Shipping inclusionIncluded in grand_total. Shipping-only Credit Memos contribute their shipping value.
DiscountsAlready deducted in grand_total.
Cancelled ordersExcluded (no Credit Memo on cancel).
Guest customersAggregated by customer_email since customer_id IS NULL for guests. A guest using two different emails (intentionally or not) appears as two rows. This is the most common false-negative for fraud detection.
B2B CompaniesWhen the Adobe Commerce B2B module is enabled, the card aggregates by company_id rather than per-buyer-within-company. A janitor and a head office buyer at the same hospital roll up to “Riverside Hospital Group”.
Refund-rate columnEach top-N row shows refund_value ÷ customer_lifetime_revenue so you can distinguish “this customer refunds 80% of orders” (likely fraud or wrong-fit) from “this customer refunds 8%” (legitimate big-spender with normal return rate).
CurrencyMixed-currency grand_total for ranking; base_grand_total available for FX-neutral.
Multi-store scopeAll Store Views by default; per-Store-View slice available.
Time window90D rolling.
Alert triggerNone on this card directly; rely on watchlist rules in the Vortex IQ workspace (e.g. flag any customer whose 90D refund rate is >40% AND refund count is >3).
Rolesowner, operations

Calculation

Calculated automatically from your Adobe Commerce 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 B2B+DTC homewares merchant on Adobe Commerce 2.4.7 with B2B Companies enabled. Snapshot 13 May 26, 90-day rolling. Top 10 refunding customers/companies:
RankCustomer / CompanyTypeRefund value (90D)Refund countLTV (90D)Refund rate (% of LTV)Diagnosis
1Riverside Hospital GroupB2B$24,3004$284,0008.6%Normal for high-volume B2B
2Westfield Schools DistrictB2B$18,1003$156,00011.6%Slightly elevated; uniform-line sizing issue
3sara.h@personalemail.comGuest DTC$4,82011$5,94081%Fraud watch
4LeisureGroup PlcB2B$4,2102$74,0005.7%Normal
5mike_t@… (registered DTC)DTC$3,6407$4,18087%Fraud watch
6HotelChain UKB2B$3,1801$112,0002.8%Single high-AOV return; benign
7claire.j@… (registered)DTC$2,94012$11,20026%Serial returner, not fraud (consistent buyer)
8StateGov ProcurementB2B$2,7101$87,0003.1%Normal
9jen.k@… (registered)DTC$2,1809$3,40064%Fraud watch
10tony.r@… (registered)DTC$1,9406$7,20027%Serial; not fraud
Insight pattern:
  1. B2B-dominated top of the list (5 of top 10). This is normal for a B2B-leaning merchant; high-volume accounts produce high-value returns even at low rates.
  2. Three fraud watch flags. Customers at ranks 3, 5, and 9 have refund rates above 60% with multiple Credit Memos. That is a fraud pattern: they buy, return, repeat. Often reselling on secondary markets, sometimes “wardrobing” (wear once, return). Action: add to a watchlist and require manual approval on next order.
  3. Serial returners that are NOT fraud (ranks 7 and 10). Refund rates of 26-27% with consistent buying behaviour signal a customer who routinely buys multiple items to choose from, then returns the rest. This is “try-before-you-buy” behaviour, common in apparel. Customer service decision: keep them (they are net positive) or block them (they are net negative once handling cost is included). Compute net contribution: LTV × gross_margin − handling_cost × refund_count. For most DTC merchants, a 25% refund rate at $400+ of net LTV is still profitable.
  4. Westfield Schools at #2, refund rate 11.6%. Higher than the B2B norm of 2-5%. Drilling into Top Refunded Products by-customer view: 14 of 16 returned line items are uniform line items affected by the supplier sizing error. Not their fault; not fraud. Sales should reach out with the corrected sizing and a goodwill credit to retain the relationship.
  5. Cross-link with Refund Value: the top-10 customers here account for 67,920of67,920 of 284,600 90-day refund value, or 24%. Pareto-typical; the long tail is healthy normal-customer returns.
  6. Action queue for Operations: (a) flag the 3 fraud watches for next-order manual review, (b) Sales call to Westfield Schools with sizing correction, (c) audit Riverside Hospital’s 4 returns to ensure they were genuine damage claims (B2B fraud is rare but exists).

Sibling cards merchants should reference together

CardWhy pair it with Top Refunding Customers
Refund ValueThe aggregate. This card is the per-customer concentration view.
Refund RateOverall rate. The customers in this card are the contributors.
Refund CountPer-customer count vs value: high count + low value = small partial returns; low count + high value = whale events.
Refunds Over TimeTime pattern. A new customer appearing here usually shows up as a single-day spike there.
Return StatusPipeline; many of these customers have open RMAs in addition to closed Credit Memos.
Customer CountThe denominator. Top-10 refunding customers as % of total customers shows concentration.
B2B Account SilenceA B2B account on this list whose order cadence stops is a churn-risk red flag.
klaviyo.high_refund_segmentSuppression list candidates; remove fraud-watch customers from acquisition email flows.

Reconciling against the vendor’s own dashboard

Where to look in Adobe Commerce Admin: Adobe Commerce does not have a native “Top Refunding Customers” report. Closest equivalents:
Reports > Customers > Customers by Number of Orders is the inverse view (top buyers, not top refunders). No native top-refunders ranking.
To verify any single customer’s refund value:
Customers > All Customers > [customer] > Orders tab. Manually count Credit Memos against that customer’s orders. Tedious but exact.
For B2B Companies:
Customers > Companies > [company] > Orders tab. Same logic at the Company level.
Why our number may legitimately differ from a manual Admin count:
ReasonDirection of divergence
Guest aggregation by email. A single guest using two emails (e.g. work + personal, typo) splits across rows in this card. The merchant might mentally consolidate them as “the same person” but the data does not.Card under-aggregates per-real-person
Customer email change. If a registered customer changes their email in Adobe, historical orders retain the old customer_email; the customer record uses customer_id which is stable. The card aggregates by customer_id for registered customers (correct) but by customer_email for guests (lossy).Inconsistent across registered/guest
B2B Company aggregation. The card rolls up to company_id when present. A merchant manually checking a single buyer’s history will see only that buyer’s slice, not the Company total.Card shows higher than per-buyer
Currency. The ranking is grand_total (mixed currency). For an FX-neutral ranking switch the column to base_grand_total.Material for international
Time-zone, sync lag. Standard ±5-15 min sync lag; ±1 day at UTC vs locale boundaries.Minor
Cross-connector reconciliation (when these connectors are connected for this merchant):
CardExpected relationshipWhat divergence tells you
klaviyo.refund_segment_sizeKlaviyo profiles flagged as “high refund” should overlap with the top-N hereIf Klaviyo has a different list, the suppression flow is out of date; sync the segment.
google_analytics.refund_attributionGA4 sees only refund events fired by the storefront, not the per-customer aggregationDo not directly reconcile; GA4 customer identity is unreliable.

Known limitations / merchant FAQs

A guest customer is at #1, can I see their order history? Click through on the row to the customer email’s order list. Adobe Commerce stores guest orders by customer_email and customer_is_guest=1. The Vortex IQ workspace renders an aggregated profile by email, including all guest orders matched. Why is my B2B Company at #1, isn’t that bad? Not necessarily. High-volume B2B accounts have high absolute refund value because they have high absolute order value. The refund-rate column normalises: an account with 284kLTVand284k LTV and 24k of refunds is at 8.6%, well within B2B norms. The customers to worry about are the ones with refund rate >40%. A customer’s customer_id changed, why is their history split? Customer ID is stable in Adobe Commerce; it doesn’t change. What can change is customer_email. Registered customers are aggregated by customer_id, so an email change doesn’t split them. Guests are aggregated by email, so a guest changing emails does split. There is no clean way to merge guest profiles in Adobe. Should I block fraud-watch customers from buying? Use a graduated response: (1) flag for manual review on next order; (2) require pre-payment via wire transfer (no chargeback risk); (3) blacklist if the pattern repeats. Adobe Commerce supports per-customer blocking via Customers > All Customers > [customer] > Account Information > “Disable account”. Use it sparingly; false positives create CS load. A wholesale account showed up here for one bulk return, isn’t that misleading? The card is a snapshot. A single 24kCreditMemoona24k Credit Memo on a 284k LTV account is not a problem. The diagnostic column (refund rate) gives context. Look at it together with the count column; one whale return at 8% rate is benign, four returns at the same rate suggest a pattern. Why isn’t fraud detection automatic? Because the false-positive rate of pure-statistical fraud detection in B2B and certain DTC verticals is too high. A fashion DTC merchant who accepts try-before-you-buy will see legitimate 25-40% refund rates for repeat customers; flagging those automatically would alienate good buyers. The card surfaces the data; the merchant applies context. My multi-store, can I see top refunders per Store View? Yes. Apply the Store View filter to the card. Useful when, e.g., the US site has different refund norms than the UK site (US allows 90-day returns vs UK statutory 14-day; rates structurally differ). Can I export this list to Klaviyo as a suppression segment? Yes via the connector to Klaviyo. The fraud-watch flag becomes a Klaviyo profile property; you can build a segment “exclude where vortex_fraud_watch = true” and use it on acquisition flows. Why does the same customer appear in two rows? Three causes: (1) guest using two emails; (2) one email registered, the other not; (3) data quality issue (typo in customer_email). The Vortex IQ workspace supports merge-by-email for cases (2) and (3); case (1) cannot be resolved without manual intervention.

Tracked live in Vortex IQ Nerve Centre

Top Refunding Customers is one of hundreds of KPI pulses Vortex IQ tracks across Adobe Commerce 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 or book a demo to see this metric running on your own data.