What is RevenueDot?

RevenueDot is an open-source backend for in-app purchases and subscriptions on the App Store, Google Play, Amazon, Stripe and the web. You install the RevenueDot SDK in your app. RevenueDot then checks every purchase with the store, keeps each customer's access in sync and tells your backend what happened. The quickest start is RevenueDot Cloud: start for free. Building and testing are free, no card needed. Add a card when you go live; Pro costs $0 until your apps make $10,000 a month.

Swift
// iOS: install the RevenueDot SDK, then pass your app's key. On RevenueDot Cloud that is all the setup.
import RevenueCat

Purchases.configure(withAPIKey: "appl_...")

The RevenueDot SDK is built from RevenueCat's open-source SDK (MIT license), so your code imports RevenueCat and calls Purchases. It sends every request to RevenueDot and needs no RevenueCat account. The install line for every platform is in Which SDKs does RevenueDot have?.

Watch the 2:32 walkthrough, or on YouTube. Watch page.

Every page states what exists today and what is planned. Current limits are listed in Known issues.

RevenueDot checks purchases, keeps access in sync and runs your paywalls#

  • It checks every purchase with the store. App Store purchases are verified against Apple's signed transactions and the App Store Server API. Google Play purchases are verified with the Google Play Developer API. Nothing is trusted from the device alone.
  • It keeps each customer's access up to date. It turns store events (renewals, cancellations, billing problems, refunds, pauses) into entitlements. An entitlement is the access your app checks, such as pro.
  • It serves your paywall's contents. An offering is the set of products your paywall shows, grouped into packages. You build paywalls from templates in a visual editor and compare them with experiments.
  • It tells your backend what happened. Webhooks carry an HMAC signature, and integrations send the same events to analytics and marketing tools.
  • It shows your numbers. Charts cover revenue, subscribers, trials and churn.
  • It sells beyond the app stores. Web checkout runs on your own Stripe account, and in-app currencies let you sell credits.
  • It gives you APIs and a dashboard. REST APIs (v1 and v2) and a web dashboard manage the catalog, customers, apps, API keys and webhooks.

RevenueDot is open source, and Cloud Pro is free until your apps make $10,000 a month#

RevenueDot
Source code Open source: the server and dashboard are AGPL-3.0 (repository), and the SDKs are MIT
Where it runs RevenueDot Cloud at https://api.revenuedot.app
Price RevenueDot Cloud Pro is free until your apps make $10,000 a month, then 0.5% of revenue above that, never more than $999 a month; Enterprise is custom. See Cloud billing
App changes Install the RevenueDot SDK and pass your app's key.
Data RevenueDot runs the database for you

Your app talks to RevenueDot, and RevenueDot talks to the stores#

Text
 Your app (RevenueDot SDK)
      │  GET /v1/subscribers/{id}, GET .../offerings, POST /v1/receipts
      ▼
 RevenueDot server ◀──── App Store Server Notifications v2, Google Play real-time notifications
      │  Postgres (customers, purchases, events)
      ├──▶ Webhooks to your backend (INITIAL_PURCHASE, RENEWAL, EXPIRATION ...)
      └──▶ Dashboard and REST API (catalog, customers, keys)
  1. The app asks RevenueDot for offerings and customer info.
  2. The user buys through the App Store, Google Play or the built-in Test Store. The Test Store lets you buy before you have an App Store or Google Play account.
  3. The SDK posts the purchase to POST /v1/receipts. RevenueDot verifies it with the store and answers with updated customer info, including active entitlements.
  4. Later changes, such as renewals and refunds, arrive as store notifications. RevenueDot updates the customer and sends webhooks.

Switching from RevenueCat? Keep your SDK and change one line#

An app that already ships the RevenueCat SDK can keep it. Set the SDK's proxy URL to RevenueDot before configure, turn off its response-signature check, and keep your purchase code. RevenueDot implements the API that the RevenueCat SDKs call, its REST APIs are RevenueCat-compatible, and its webhooks use RevenueCat's payload shape.

Swift
// Switching from RevenueCat: keep the RevenueCat SDK and point it at RevenueDot Cloud, or at your own server.
Purchases.proxyURL = URL(string: "https://api.revenuedot.app")!
Purchases.configure(with: Configuration.Builder(withAPIKey: "appl_...").with(entitlementVerificationMode: .disabled).build())

The full order of steps, with the importer and a side-by-side run, is in Migrate from RevenueCat.

RevenueDot is not affiliated with, endorsed by or sponsored by RevenueCat, Inc. "RevenueCat" is a trademark of RevenueCat, Inc. and is used here only to describe compatibility.

Where to go next#

Edit this page on GitHub ↗ View as Markdown Last updated