Shape
A series by cohort date; recent cohorts are still maturing
Chart · Churn and refunds
Refund rate is the share of the paid transactions of each period that has been refunded since. Paid transactions are purchases, renewals and one-time purchases. RevenueDot divides the refunded ones by all of them, groups them by purchase date, and ignores refunds that were later reversed.
Formula
Refund rate = paid transactions of the period that have been refunded since / paid transactions of the period
Shape
A series by cohort date; recent cohorts are still maturing
API name
refund_rate
Measures
Refund Rate (Percent)
Filter and segment by
App, Store, Product, Product duration, Offering, Country, Platform, App version
Definition
Each paid transaction, meaning a purchase, a renewal or a one-time purchase, is placed in the period of its purchase date. A transaction counts as refunded when the ledger holds a refund for it that was not reversed. The refund can have happened on any later date, up to now.
That is different from the Refunds chart, which places a refund on the day it happened. Here the refund goes back to the period of the purchase it belongs to. So the rate for a recent period can still rise as refunds arrive, and old periods settle. Free trial starts are not paid transactions and are excluded, and so are sandbox transactions, granted access and Family Sharing.
Filters and segments: app, store, product, product duration, offering, country, platform and app version. You can open it in the dashboard under Charts or fetch it with GET /v2/projects/{project_id}/charts/refund_rate. The response has the same shape as RevenueCat's Charts API, so scripts written for that API keep working. The secret key needs the charts_metrics:charts:read permission. The Charts guide lists every parameter.
Worked example
The paid transactions of June, checked in September.
| Measure | Transactions |
|---|---|
| Paid transactions in June | 2,000 |
| Refunded since | 40 |
June's refund rate is 40 / 2,000 = 2.0%. If 6 more June purchases are refunded in October, the same period will read 2.3%.
Why it matters
A rising refund rate means revenue you already counted is going back to customers. It is also a quality signal. Refunds cluster around a bad release, a misleading paywall, a confusing price after a trial, or a plan sold in a market where the price surprised people.
Segment by product and offering to find which plan or paywall produces refunds, and by store to compare Apple and Google. A refund rate that is high for annual plans and low for monthly plans usually means customers noticed the charge too late.
API
Same path and response shape as RevenueCat's Charts API, so existing scripts keep working.
curl "https://api.revenuedot.app/v2/projects/$PROJECT_ID/charts/refund_rate?resolution=day" \
-H "Authorization: Bearer $SECRET_KEY" # sk_... with charts_metrics:charts:read Reference: Charts guide · REST API v2
FAQ
It is the refunded paid transactions divided by all paid transactions in the same purchase period. Reversed refunds are not counted.
Refund rate puts each refund back in the period of its purchase and shows a share. Refunds shows money and count on the day the refund happened.
Refunds arrive after the purchase, sometimes weeks later. The rate for a period settles once most refunds have come in.
Yes. Refunds recorded in the ledger count for any store. Refund Request Outcomes covers Apple only.
Get started
Connect your app to RevenueDot Cloud, free up to $10,000 a month in tracked revenue, and all 43 charts fill from your store history after import.
Already have an account? Sign in · Prefer your own servers? Self-host free