How to read MRR and revenue from the RevenueCat Charts API

Notch Metrics2 min read

Part of RevenueCat MRR and trials on your Mac

Where does RevenueCat expose its dashboard numbers?

Under v2 project metrics. The Overview endpoint returns the figures the dashboard header shows, and the Charts API gives you the series behind the dashboard's graphs.

For a headline number, Overview is one call and no paging:

curl -s 'https://api.revenuecat.com/v2/projects/{project_id}/metrics/overview' \ -H 'Authorization: Bearer sk_...'

Read metrics by id

The response is an array, and an array's order is not a contract. A new metric appearing in the middle would silently shift every positional read after it.

const by = (body, id) => body.metrics?.find((m) => m.id === id)?.value ?? null; const mrr = by(body, "mrr"); const revenue = by(body, "revenue"); const subs = by(body, "active_subscriptions"); const trials = by(body, "active_trials");

What MRR means here

RevenueCat's own figure: active paid subscriptions normalised to a month, as shown on the Overview. It is a snapshot of the book right now.

Read RevenueCat's rather than computing your own. Mobile subscriptions have more edges than card subscriptions do, with introductory offers, promotional offers, family sharing, billing grace periods and two stores reporting differently, and RevenueCat has already decided what to do with each. A second opinion is a second number to defend.

Revenue is gross, and the gap is large

This catches everybody once. RevenueCat revenue is gross across every app in the project for the days in the window, before store commission and before taxes.

Apple and Google take a commission that depends on the programme you are in and on how long the subscriber has been subscribed. Tax comes off separately and varies by country. The money that reaches your bank is well below the revenue figure, and the difference is not a constant you can multiply by.

If you want proceeds rather than revenue, that is a different question and RevenueCat exposes it separately. Label your chart for whichever one you chose, because a revenue figure presented as income is the kind of mistake that reaches a board deck.

Today is partial

The newest day in any window is still filling. Transactions arrive from the stores with a lag, so today's figure reads low and settles over the following hours. A daily chart droops at the right-hand end on every refresh.

Read trends from the settled part. If you need to know whether today was good, you will find out tomorrow.

The 28-day metrics

new_customers and active_customers on the Overview are computed over a fixed 28-day window. That window is RevenueCat's and it is not a parameter: asking the endpoint for a different range does not change them.

Any interface that offers a range selector next to those two numbers is either ignoring the selector or inventing the answer. Say which.

In the notch

Notch Metrics reads this endpoint and reports RevenueCat MRR, revenue, active subscriptions, trials, new customers and active customers in the MacBook notch.

The two 28-day metrics say on their own pages that the window is fixed and ignores the widget's range, because a control that does nothing is worse than no control at all.

Everything RevenueCat reports, or download Notch Metrics.

  • revenuecat
  • revenue
  • api

Questions

Which RevenueCat endpoint returns MRR?
GET /v2/projects/{project_id}/metrics/overview. It returns the dashboard header figures, including MRR, revenue, active subscriptions and active trials, in a metrics array that should be read by id rather than by position.
Is RevenueCat revenue before or after Apple's commission?
Before. The revenue figure is gross across every app in the project, before store commission and before taxes. The commission depends on the programme and on how long the subscriber has been subscribed, so the gap is not a constant you can multiply by.
Why does today's RevenueCat revenue look low?
Because it is still filling. Transactions arrive from the stores with a lag, so the newest day reads low and settles over the following hours. A daily chart droops at the right-hand end on every refresh.
Can I change the window on RevenueCat new customers?
No. new_customers and active_customers are computed over a fixed 28-day window that is not a parameter. Asking the endpoint for a different range does not change them.
Should I compute my own MRR instead of using RevenueCat's?
Usually not. Mobile subscriptions have introductory offers, promotional offers, family sharing, grace periods and two stores reporting differently, and RevenueCat has already decided what to do with each. A second opinion is a second number to defend.