RevenueCat: subscription revenue in Finance
Connecting RevenueCat gives Appwin your app's subscription figures: MRR, revenue, churn, active subscribers, trials.
It is the source of almost all of the Finance product. Without it, the page stays empty and offers to connect the account.
Read-only access. Appwin creates and modifies nothing in RevenueCat.
1. Create a secret key
In RevenueCat, on your project:
- Project settings → API keys
- Secret API keys section → + New button
- Name the key ("appwin")
- Tick at least the read permissions on
projects,apps,customersandcharts - Copy the key that is shown
The secret key is visible only when created. RevenueCat never shows it again: put it in your password manager before closing the tab.
Secret, not public
| Key | Prefix | Role |
|---|---|---|
| Secret API key | sk_… | Server to server - this is the one |
| Public SDK key iOS | appl_… | Bundled in your app |
| Public SDK key Android | goog_… | Bundled in your app |
Pasting a public key gives a 401 on every call: it does not open the reporting API.
2. Collect the Project ID
Project settings → General → "Project ID", of the form proj1a2b3c4d. It is
also the segment after /projects/ in the RevenueCat dashboard URL.
The field is optional. Left empty, Appwin calls GET /v2/projects with your
key and takes the first accessible project - which is enough in the common case
of one key for one project. Fill it in as soon as your account carries several
projects, otherwise the figures shown may be another app's.
3. Enter them in Appwin
Settings → Projects → your app → Integrations → RevenueCat.
| Field | Value |
|---|---|
| API Key (secret) | sk_AbCdEfGhIjKlMnOpQrStUvWx |
| Project ID | proj1a2b3c4d (optional) |
What it unlocks
The Finance metrics fed by RevenueCat:
| Metric | Contents |
|---|---|
| MRR | Monthly recurring revenue |
| ARR | Annual recurring revenue |
| Revenue | Revenue collected over the period |
| Churn | Attrition rate |
| Active subscribers | Active subscribers |
| Refund rate | Refund rate |
| LTV per customer | Average lifetime value |
| New trials | Trials started |
| Trial conversion rate | Trials converting to paid |
| New customers | New customers |
Each shows as a single value or as a time series, over the periods the product offers (7 days to 1 year, MTD, QTD, YTD, previous month/quarter/year).
Freshness and rate limits
RevenueCat limits the Charts API to 15 requests per minute per project. Appwin respects that with a per-project queue, and caches the responses.
| Period | Cache | Why |
|---|---|---|
| Current (the ongoing month) | 1 to 5 minutes | The number is still moving |
| Closed (a finished month) | 1 to 24 hours | The number will not move again |
Practical consequence: refreshing a page does not necessarily fire a call, and today's number can be a few minutes behind. That is deliberate - without a cache, a handful of users would consume the quota in seconds.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| 401 on every call | A public key (appl_/goog_) instead of a secret key (sk_) |
| 403 on the charts | The charts permission was not ticked when the key was created |
| Figures from another app | Several projects on the account, Project ID left empty |
| Empty Finance page | No RevenueCat data over the chosen period |
| A number frozen for a few minutes | Current-period cache - expected behaviour |