One line
Purchases.proxyURL points the SDK you already ship at RevenueDot.
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.
Purchases.proxyURL points the SDK you already ship at RevenueDot.
Signed transactions are verified against Apple's root certificate, and the App Store Server API supplies history.
The unmodified RevenueCat iOS SDK 5.92 passes configure, offerings, a Test Store purchase and logIn against RevenueDot.
Buyers from a RevenueDot purchase link get access in the app with redeemWebPurchase.
Steps
Start free on Cloud and add an App Store app with your bundle ID. Copy its appl_ public key.
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.
Add your products, an entitlement such as pro, and a current offering named default.
In your app delegate or App initializer, set Purchases.proxyURL and configure with verification .disabled, as in the code below.
Call purchase(package:) and read customerInfo.entitlements["pro"]?.isActive. The purchase goes to POST /v1/receipts, and RevenueDot verifies it with Apple.
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
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.
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
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
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.
// Swift Package Manager
.package(url: "https://github.com/revenuedot/purchases-ios", exact: "<version>-revenuedot")
// CocoaPods
pod "RevenueDotPurchases" // still: import RevenueCat Notes
syncPurchases() once on the first launch of the update, so current subscribers keep access. See Migrate from RevenueCat.FAQ
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:).
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.
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.
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.
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
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