SDK

iOS in-app subscriptions backend (StoreKit 2) that works with the RevenueCat SDK

To run iOS in-app subscriptions on RevenueDot, keep the RevenueCat Swift SDK and set Purchases.proxyURL to https://api.revenuedot.app before Purchases.configure. Turn entitlement verification off. RevenueDot verifies StoreKit 2 transactions with Apple, tracks entitlements and sends webhooks. It covers iOS, iPadOS, macOS, tvOS, watchOS and visionOS on SDK 5.x.

Free up to $10,000 a month in tracked revenue. Works with the RevenueCat SDK you already ship.

A RevenueDot paywall rendered by the RevenueCat SDK on an iPhone simulator
A RevenueDot paywall rendered on an iPhone simulator.

One line

Purchases.proxyURL points the SDK you already ship at RevenueDot.

StoreKit 2

Signed transactions are verified against Apple's root certificate, and the App Store Server API supplies history.

Tested on a simulator

The unmodified RevenueCat iOS SDK 5.92 passes configure, offerings, a Test Store purchase and logIn against RevenueDot.

Web purchases too

Buyers from a RevenueDot purchase link get access in the app with redeemWebPurchase.

Steps

How to add subscriptions to an iOS app with RevenueDot

  1. 01

    Create a free Cloud project and an App Store app

    Start free on Cloud and add an App Store app with your bundle ID. Copy its appl_ public key.

  2. 02

    Connect Apple

    Add an In-App Purchase key and paste the notification URL into App Store Connect as a Version 2 server notification URL. See App Store setup.

  3. 03

    Create your catalog

    Add your products, an entitlement such as pro, and a current offering named default.

  4. 04

    Set the proxy URL before configure

    In your app delegate or App initializer, set Purchases.proxyURL and configure with verification .disabled, as in the code below.

  5. 05

    Buy and check the entitlement

    Call purchase(package:) and read customerInfo.entitlements["pro"]?.isActive. The purchase goes to POST /v1/receipts, and RevenueDot verifies it with Apple.

  6. 06

    Test with a Test Store key or the sandbox

    Use a test_ key in a debug build to buy with no App Store account, or use a sandbox tester. See the Test Store.

Swift

The iOS proxy URL change

Self-hosting? Use your own server's HTTPS URL instead of https://api.revenuedot.app. Never use .enforced with the stock SDK: RevenueDot cannot sign with RevenueCat's key, so every request would fail.

Point the SDK at RevenueDotSwift
import RevenueCat

// Before Purchases.configure
Purchases.proxyURL = URL(string: "https://api.revenuedot.app")!
Purchases.configure(
    with: Configuration.Builder(withAPIKey: "appl_...")
        // Default is .informational, which logs every RevenueDot response as a failed check.
        .with(entitlementVerificationMode: .disabled)
        .build()
)

Swift

Check an entitlement and make a purchase

RevenueCat's API, unchangedSwift
let customerInfo = try await Purchases.shared.customerInfo()
let isPro = customerInfo.entitlements["pro"]?.isActive == true

let offerings = try await Purchases.shared.offerings()
if let package = offerings.current?.availablePackages.first {
    let result = try await Purchases.shared.purchase(package: package)
    if !result.userCancelled, result.customerInfo.entitlements["pro"]?.isActive == true {
        // Show pro features.
    }
}

Fork

The RevenueDot fork package for iOS

RevenueDot keeps a fork of the iOS SDK at github.com/revenuedot/purchases-ios. It keeps the modules RevenueCat and RevenueCatUI, trusts RevenueDot's signing key and defaults to https://api.revenuedot.app. The packages are not published yet (checked October 2026). The planned install lines are below. Today you can use the fork from its revenuedot/main-patches branch with Swift Package Manager.

Planned fork installSwift and CocoaPods
// Swift Package Manager
.package(url: "https://github.com/revenuedot/purchases-ios", exact: "<version>-revenuedot")
// CocoaPods
pod "RevenueDotPurchases"   // still: import RevenueCat

Notes

iOS details worth knowing before you ship

  • Migrating from RevenueCat? Call syncPurchases() once on the first launch of the update, so current subscribers keep access. See Migrate from RevenueCat.
  • Test Store keys work in Debug builds only. A Release build shows a Wrong API Key alert and stops on purpose.
  • Web checkout: a RevenueCatUI paywall's web checkout button opens Stripe Checkout on your own Stripe account for the current user. See web to app.
  • Before you ship: run a purchase with a sandbox tester and check it on the customer page.

FAQ

iOS: questions people ask

How do I add in-app subscriptions to an iOS app with StoreKit 2?

Use the RevenueCat Swift SDK for the purchase UI and entitlements, and a backend that verifies StoreKit 2 transactions. With RevenueDot you set Purchases.proxyURL to the server, add your App Store In-App Purchase key and notification URL, and call purchase(package:).

Does the RevenueCat iOS SDK work with a different backend?

Yes, with a server that implements the API the SDK calls. RevenueDot does, so you set Purchases.proxyURL before configure and turn entitlement verification off. Offerings, purchases, restores and customer info work as before.

Why do I turn off entitlement verification?

The stock SDK checks response signatures against RevenueCat's key. RevenueDot cannot sign with that key, so the default informational mode logs every response as failed. Access is still granted, but .disabled stops the noise.

Does RevenueDot support StoreKit 2?

Yes. It verifies signed transactions against Apple's root certificate and, with an In-App Purchase key, reads history and renewal state from the App Store Server API. StoreKit 1 receipts also work once the key is added.

How do I test iOS purchases without an App Store account?

Create a Test Store app in RevenueDot, pass its test_ key to configure in a Debug build and buy through the SDK's alert. For real sandbox purchases, use a sandbox tester or an Xcode StoreKit file with its test certificate saved on the app.

Get started

Run subscriptions without the revenue share.

Start free on RevenueDot Cloud, free up to $10,000 a month in tracked revenue, or move an existing RevenueCat app with one line of code.

Already have an account? Sign in · Prefer your own servers? Self-host free