What are refunds?

Refunds are the money returned to customers — every credit note, summed by the date the refund happened, not the date of the original order. The total is a gross figure: it counts all refund events, whether the underlying order still counts as a sale (a partial refund) or has been excluded from revenue entirely (a fully refunded order).

Formula

refunds = Σ refund_amount_base   grouped by refund_date

Worked example

In March a store refunds €3,200: €1,900 of partial refunds on orders that remain sales, and €1,300 on orders fully refunded. The €1,900 offsets margin that was booked; the €1,300 does not — those orders already dropped out of net revenue and margin when their status changed, so subtracting their refunds again would count the same loss twice. Gross-refund reporting shows all €3,200; anything that nets refunds against margin must use only the €1,900.

A refund is not always a return

Refunds split a second way, separate from partial vs full: whether the goods actually came back. A return — the customer sends the item back — frees up what it cost you along with the revenue, because that unit is no longer sold. A goodwill refund — money back for a late delivery or a damaged box, with nothing sent back — only gives back the revenue; the goods are already gone, so their cost stays charged. Getting this wrong in either direction is a real error, not a rounding one: treating every refund as a return overstates margin by writing off cost that is still sitting with the customer, and treating every return as goodwill understates it by keeping cost charged on goods that came back.

The two are told apart by quantity, not by amount, because a refund amount alone can't say whether anything shipped back. When a platform reports how many units came back, that count decides it: zero is goodwill, a positive number is a return. When a platform cannot report a count at all, the cost stays charged rather than guessed, and the refund is flagged so it can be told apart from an ordinary one.

How Saldo Metrics computes it

v_refund_detail serves one row per refund event from fact_refunds, joined to the originating order, customer country and — for line-level refunds — the product and brand. Amounts are EUR (refund_amount_base), converted at each refund's own date. The KPI sums all rows in the period; the detail widget lists them. Each row carries order_is_net_sale, the flag that separates the two refund kinds above. The cashflow forecast does not read these rows at all: it takes contribution margin over net sales, which already has refunds netted out, minus ad spend, so no refund is deducted twice and a fully refunded order is simply not in it. Refunds date by refund_date, so a January order refunded in March is March's refund.

The return-vs-goodwill split above runs on quantity_refunded, carried on the same fact_refunds row. v_refund_reversal reads it to decide whether cost comes off with the revenue, and reports back quantity_unknown for a refund whose platform gave no count — contribution margin and net operating profit both read that view to reverse cost only where it is genuinely warranted.

Why it matters

Refund volume is a quality signal wearing a finance costume: rising refunds usually mean product, sizing, delivery or expectation problems, and they show here weeks before they show in reviews. The per-product and per-country detail is what turns the total into something actionable — one SKU or one carrier lane often accounts for most of a spike.

Common mistakes

  • Subtracting total refunds from net revenue. Fully refunded orders are already out of net revenue; subtracting their refunds again double-counts.
  • Attributing a refund spike to the month's sales. Refunds lag orders; a strong sales month is often followed by a strong refund month mechanically.
  • Ignoring the product dimension. A flat refund total can hide one new SKU refunding at five times the store average.
  • Assuming a return always means the cost is fully recovered. Its cost comes off because the unit no longer counts as sold — not because it is necessarily resellable. Only Amazon tells us whether a returned item was scrapped rather than restocked; every other platform's returns are assumed sellable again.

Where you see this in the app

The Total Refunds KPI, the Credit Notes detail widget, and the 30-day refunds alert metric.