Solution

Move your existing in-app purchases to RevenueDot and keep every subscriber

If your app already sells subscriptions with its own StoreKit or Google Play Billing code, or with another tool, you can move it to RevenueDot without losing a subscriber. Import your products from App Store Connect, Google Play or Stripe, install the RevenueDot SDK, and call syncPurchases() once in the update. Each subscriber's purchases are checked with the store, and their access carries over.

Free until your app makes $10,000 a month. Switching from RevenueCat? Change one line.

The Offerings page in RevenueDot: the default offering with three packages, and a win-back offering

Products imported

One click reads App Store Connect, Google Play or Stripe and fills your catalog.

Subscribers kept

The update sends each device's purchases, and the store's notifications fill in the rest.

Your server keeps working

RevenueDot can forward every store notification to your old endpoint while you move.

Less code to maintain

Receipt checks, renewals, refunds and grace periods move out of your codebase.

What moves

RevenueDot takes over the purchase work your own code does today

  • Checking purchases with the store. RevenueDot verifies StoreKit 2 signed transactions with Apple and reads Google Play purchase tokens with the Play Developer API. Your server no longer trusts the device.
  • Renewals, cancellations, billing problems and refunds. App Store Server Notifications and Google Play real-time notifications update each customer, and webhooks tell your backend.
  • One answer to "is this user premium?" A customer who pays on iOS, Android or the web has the same access everywhere.
  • Paywalls, experiments and charts. Paywall templates, price tests and 43 charts work from the first purchase.

Steps

How to move an app that already sells in-app purchases

  1. 01

    Create a free project and add your store apps

    Start for free on RevenueDot Cloud and add your App Store, Google Play or Stripe app with its credentials. Paste RevenueDot's notification URLs into App Store Connect and Google Play. If your own server receives those notifications today, set the app's forward URL to it, so it keeps getting every notification while you move.

  2. 02

    Import your products

    Click Import products. RevenueDot reads App Store Connect, Google Play or Stripe and creates each product with its type and duration. Attach them to an entitlement such as pro (the access your app checks) and put them in the offering your paywall shows. See import products.

  3. 03

    Install the RevenueDot SDK

    Add the RevenueDot SDK for your platform and configure it with your app's key and your own user ID, so purchases land on the right customer. Replace your purchase calls with the SDK's: load the offering, buy a package, check the entitlement.

  4. 04

    Bring your subscribers over

    Call syncPurchases() once on the first launch of the update. It sends the device's purchases to RevenueDot, which checks them with the store. To also record subscribers who have not opened the update yet, turn on track_new_purchases for the app.

  5. 05

    Check access from your backend

    Read a customer's active entitlements with a secret key, or receive webhooks for every renewal, cancellation and refund. Then retire your own receipt code.

Swift

The update configures the SDK and syncs purchases once

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. Android, React Native and Flutter have the same calls; see the SDK guides.

First launch of the updateSwift
import RevenueCat   // the module name of the open-source SDK the RevenueDot SDK is built from

Purchases.configure(withAPIKey: "appl_...", appUserID: currentUser.id)

// Once, on the first launch of this update: send the device's existing App Store purchases to RevenueDot.
if !UserDefaults.standard.bool(forKey: "revenuedotSynced") {
    _ = try? await Purchases.shared.syncPurchases()
    UserDefaults.standard.set(true, forKey: "revenuedotSynced")
}
let isPro = try await Purchases.shared.customerInfo().entitlements["pro"]?.isActive == true

Other tools

Apps on Adapty, Qonversion or Stripe follow the same steps

  • Adapty or Qonversion: replace their SDK with the RevenueDot SDK. Your App Store and Google Play products stay exactly as they are, and syncPurchases() brings each subscriber over. See RevenueDot vs Adapty and RevenueDot vs Qonversion.
  • Stripe: your backend posts each Stripe subscription ID to RevenueDot with the Stripe app's key, and new web sales can use RevenueDot's web checkout on your own Stripe account. See Stripe.
  • RevenueCat: you do not need these steps. Keep your SDK and change one line; see Migrate from RevenueCat.

Honest notes

What to know before you move

  • You change code. Moving from your own code means replacing your purchase calls with the SDK's. Most apps touch the paywall screen, the purchase call and the access check.
  • RevenueDot launched in 2026. A real App Store sandbox purchase has run end to end on an iPhone. Google Play handling is tested against a copy of Google's API, so run a Play sandbox purchase before you ship.
  • Subscribers who never open the update are recorded from store notifications only when track_new_purchases is on. Without it, they come over the next time they open the app.

FAQ

Apps already selling: questions people ask

Can I move to RevenueDot if I wrote my own StoreKit or Play Billing code?

Yes. Import your products, install the RevenueDot SDK in place of your purchase code, and call syncPurchases() once on the first launch of the update. RevenueDot checks each device's purchases with Apple or Google and gives the customer the same access they had.

Will my current subscribers lose access when I move?

No, as long as the update syncs their purchases. syncPurchases() sends the device's App Store or Google Play purchases to RevenueDot, which verifies them with the store. Turn on track_new_purchases to also record subscribers from store notifications before they open the update.

Do I have to change my products in App Store Connect or Google Play?

No. Your products, prices and subscription groups stay in the stores as they are. RevenueDot imports their identifiers, types and durations, and reads prices from the stores.

Can my own server keep receiving App Store and Google Play notifications?

Yes. Each app has a forward URL. RevenueDot sends every store notification to it, byte for byte, so your old server keeps working while you move.

What does RevenueDot cost for an app that already sells?

RevenueDot Cloud is free until your app makes $10,000 a month in tracked revenue. Above that, it charges 0.5% of the revenue above $10,000, capped at $999 a month.

Get started

Start selling subscriptions in your app today.

Building and testing are free, and you can test your first purchase before you have a store account. Pro costs $0 until your apps make $10,000 a month.

Already have an account? Sign in · Switching from RevenueCat? Change one line