The server
A TypeScript (Hono) API that answers every endpoint the RevenueDot and RevenueCat SDKs call, the REST API and store notifications.
Self-host
This page is for teams whose rules require their own server. One Docker image serves the RevenueCat-compatible API and the dashboard, next to your own Postgres.
git clone https://github.com/revenuedot/revenuedot && cd revenuedot
cp .env.example .env # set POSTGRES_PASSWORD
docker compose up -d # API, dashboard and Postgres on http://localhost:8787 Open http://localhost:8787, create your account and project, and add your App Store and Google Play credentials. Then install the RevenueDot SDK in your app and set its proxy URL to your server before configure:
Purchases.proxyURL = URL(string: "https://iap.example.com")! Set entitlement verification to disabled on iOS and Android, because a self-hosted server signs responses with its own key. An app that already ships the RevenueCat SDK sets the same line. Set REVENUEDOT_PORT to change the host port. The line for every SDK.
What you run
A TypeScript (Hono) API that answers every endpoint the RevenueDot and RevenueCat SDKs call, the REST API and store notifications.
Customers, catalog, apps, API keys, webhooks with a delivery log, and setup health, served by the same image.
Every purchase, customer and receipt, in tables you can query with SQL. Migrations run on start.
Cloud or your own server
RevenueDot Cloud and a self-hosted server share the code, API and schema, so a project moves either way with an export and import.
| RevenueDot Cloud | Your own server | |
|---|---|---|
| License | Not needed: RevenueDot runs it | AGPL-3.0 for the open-source server; enterprise features need an Enterprise license |
| Who runs it | RevenueDot | You: server, Postgres, backups, upgrades |
| Data location | The US, on Cloudflare's network | Any cloud and region you choose |
| Extras | Point-in-time recovery, edge caching, monitoring, support | Everything in the open-source server |
| Enterprise features | Organizations, custom roles and SSO with Pro; SCIM and compliance exports with Enterprise | Organizations, custom roles, SSO, SCIM and compliance exports with an Enterprise license |
Before production
01
Put the server behind a load balancer or reverse proxy with TLS. The SDKs and the stores need an HTTPS URL.
02
Point DATABASE_URL at a managed Postgres 16 with point-in-time recovery, and keep a strong password.
03
Add your App Store In-App Purchase key and Google Play service account, then set the notification URLs the dashboard shows.
04
The dashboard shows when each app last received a store notification and flags missing keys before purchases fail.
Self-host runs as one Docker image next to your Postgres, and upgrades apply database migrations on start. Source on GitHub.
FAQ
No. RevenueCat itself is closed source and runs only in RevenueCat's cloud. The open-source option that works with the RevenueCat SDK is RevenueDot. RevenueDot Cloud runs it for you and is free until your apps make $10,000 a month. Its server is open source under AGPL-3.0, so you can also run it with Docker and Postgres.
A machine that runs Docker, plus Postgres 16, which docker compose starts for you. For production, use a managed Postgres with backups and put the server behind HTTPS.
No. The self-hosted server has no telemetry and never calls RevenueDot's servers. It talks only to Apple, Google, your webhook endpoints and any forwarding URL you set.
Pull the new image and restart. Database migrations run automatically when the server starts, and there is one config file.
RevenueDot Cloud runs on Cloudflare's network and stores your data in the US. Enterprise adds data location settings and a license to run RevenueDot in your own cloud. You can export everything a project owns at any time.
The server and dashboard are AGPL-3.0. The SDK forks, CLI, MCP server and agent skills are MIT. The ee/ folder (enterprise features such as organizations, custom roles, single sign-on, SCIM and compliance exports) is under the RevenueDot Enterprise License. On RevenueDot Cloud, Pro includes organizations, custom roles and single sign-on.
A real App Store sandbox purchase has run end to end on an iPhone, from Apple's purchase sheet to the webhook. The RevenueDot web, Flutter web and React Native web SDKs, installed from their registries, bought Test Store subscriptions against RevenueDot, and the unmodified RevenueCat iOS and Android SDKs pass a Test Store purchase on a simulator and an emulator. Webhooks are delivered live to 23 example backends. Moving from RevenueCat, you can run both side by side, because RevenueDot forwards every store notification to RevenueCat.
Get started
Start for free on RevenueDot Cloud and import your RevenueCat project with one command. There are no servers to run.
Already have an account? Sign in · Switching from RevenueCat? Change one line