Sales reporting
How to calculate your WooCommerce refund rate
To calculate your WooCommerce refund rate, open Analytics › Revenue, choose a period, and divide Returns by Gross sales. That's your refund rate by value. For a rate by order count, filter Analytics › Orders to refunded orders with the Refund advanced filter and divide by all orders in the same period.
Below: both methods step by step, why the two can disagree, how to find which products are refunded most, and what to do about a high rate.
Refund rate by value: Analytics › Revenue
- In WordPress admin, go to Analytics › Revenue.
- Choose a date range. Use at least a month, or a quarter for a smaller store, then click Update.
- Note Gross sales and Returns from the figures at the top.
- Divide: refund rate = returns ÷ gross sales.
For example, if last quarter's gross sales were $18,400 and returns were $736, your refund rate by value is 736 ÷ 18,400 = 4.0%.
Some people divide by net sales instead. Gross sales is the cleaner base, because net sales already has the refunds taken out. Pick one and stick to it.
Returns is WooCommerce's name for refunded money, including partial refunds. See returns for how it's counted.
Refund rate by order count: Analytics › Orders
The value rate tells you how much money goes back. The count rate tells you how many customers have a problem.
- Go to Analytics › Orders and set the same date range.
- Note the Orders figure at the top. That's all orders.
- Click the Show menu, choose Advanced filters, and add Refund. Choose Partially refunded, Fully refunded or All (refunded orders of either kind).
- Note the new Orders figure.
- Divide the refunded orders by all orders.
Say 412 orders in the quarter, and 21 had a refund: 21 ÷ 412 = 5.1%.
One thing to check: under Analytics › Settings › Excluded statuses, see whether Refunded is excluded. If it is, fully refunded orders drop out of the report altogether, and your count rate will look lower than it is.
Why the two methods disagree
They measure different things, on different dates.
- Value vs count. A store with many small partial refunds (a missing item, a shipping credit) has a high count rate and a low value rate. A store that occasionally refunds a large order has the opposite.
- Refund date vs order date. In the Revenue report, a refund is dated on the day you issued it. In the Orders report, a refunded order is listed by its order date. A September order refunded in October counts toward October's returns but September's refunded orders.
Over a long enough period (a quarter or more) these timing effects mostly even out. Over a single week, they can swing the figure a lot. Why WooCommerce Analytics numbers don't match your orders covers this and the other reasons totals differ.
Which products get refunded most?
Analytics doesn't have a refunds-by-product report. Two ways to get there:
- From the Orders report. With the Refund filter on, the table lists each refunded order with its products. Download it as a CSV and count how often each product appears.
- With SQL. When you refund specific line items (by entering quantities in the refund form), Analytics records negative rows against those products. That lets you rank products by refunded units:
SELECT p.post_title AS product,
-SUM(l.product_qty) AS units_refunded,
ROUND(-SUM(l.product_net_revenue), 2) AS net_refunded
FROM wp_wc_order_product_lookup l
JOIN wp_posts p ON p.ID = l.product_id
WHERE l.product_qty < 0
AND l.date_created >= '2026-07-01' AND l.date_created < '2026-10-01'
GROUP BY l.product_id
ORDER BY units_refunded DESC
LIMIT 15;
Refunds entered as an amount only, without line-item quantities, don't create these rows, so they won't show up here. The query doesn't apply your excluded statuses. Change wp_ if your table prefix differs.
Then compare each product's refunded units with its units sold from Analytics › Products for the same period. A product with 6 refunds out of 40 sold (15%) is a bigger worry than one with 10 out of 900.
The quick way: ask Askshelf
Askshelf adds Analytics › Askshelf to WordPress admin. Its sales summary includes refunds alongside gross and net sales, so you can get both halves of the value-based rate in one question:
What were our refunds last quarter as a share of gross sales, compared with the quarter before?
It reads the same Analytics data, so refunds are taken out on the refund date, as in the Revenue report. It doesn't know why something was refunded (refund reasons aren't among its lookups), and it doesn't break refunds down by product or customer. For those, use the methods above. See AI sales reports for WooCommerce for more.
What to do about a high refund rate
There's no universal "good" refund rate: it depends heavily on what you sell. Clothing that customers try on is refunded far more than consumables. Track your own rate over time and watch for changes.
When it rises:
- Find the products. Usually one or two account for most of the increase.
- Read the refund notes on those orders. Even without a report, the reasons you typed tell a story: wrong size, damaged in transit, not as pictured.
- Fix the cause. Clearer size guides, better photos, sturdier packaging, a more accurate description.
- Check the timing. A cluster of refunds after a sale or a new supplier batch points at that event.
Refunds also cost more than the refunded amount: you've often paid shipping both ways, and many payment providers don't return their fee on a refund. See profit after refunds and discounts for how to account for that, and the net sales vs gross sales guide for how refunds flow through your sales figures. For every sales report WooCommerce offers, see the WooCommerce sales reports guide.
Common questions
Does WooCommerce show refund reasons in a report?
No. You can type a reason when you issue a refund, and it's shown on that order, but Analytics doesn't group or total refund reasons. To analyze them you'd need to collect them from orders yourself, by export or SQL.
Are partial refunds counted in the refund rate?
In the value-based rate, yes: the Returns figure includes every refunded amount, partial or full. In the order-count rate, it depends on how you filter. The Orders report's Refund filter can show partially refunded, fully refunded or both.
Do refunds lower my net sales in WooCommerce?
Yes. Net sales is gross sales minus returns (refunds) minus coupons. The refund is taken off the period in which you issued it, not the period of the original order.
See how Askshelf handles this: AI sales reports for WooCommerce