One line
Purchases.proxyURL points the SDK at RevenueDot. Kotlin packages stay com.revenuecat.purchases.*.
SDK
To run Android in-app subscriptions on RevenueDot, keep the RevenueCat Kotlin SDK and set Purchases.proxyURL to https://api.revenuedot.app before Purchases.configure, with EntitlementVerificationMode.DISABLED. RevenueDot reads each purchase from the Google Play Developer API and receives real-time developer notifications. The stock SDK still sends diagnostics to RevenueCat.
Free up to $10,000 a month in tracked revenue. Works with the RevenueCat SDK you already ship.
Purchases.proxyURL points the SDK at RevenueDot. Kotlin packages stay com.revenuecat.purchases.*.
Purchase tokens are read from the Play Developer API and acknowledged.
The unmodified Android SDK 10.24.0 passes a Test Store purchase on an Android 15 emulator.
The fork sends diagnostics, paywall events and ad events to your proxy URL too.
Steps
Start free on Cloud and add a Google Play app with your package name. Copy its goog_ public key.
Upload a service account key and add a Pub/Sub push subscription for real-time developer notifications. See Google Play setup.
Add products with store_identifier as subscriptionId:basePlanId, an entitlement such as pro and a current offering.
In Application.onCreate, set Purchases.proxyURL and configure with verification DISABLED, as in the code below.
Call awaitPurchase and read customerInfo.entitlements["pro"]?.isActive. The purchase token goes to POST /v1/receipts.
Use a test_ key in a debug build, or a Play license tester on an internal test track.
Kotlin
The Android emulator reaches your computer at http://10.0.2.2:8787 when you self-host locally. Plain http needs a network security config that allows cleartext traffic to that host.
// Before Purchases.configure
Purchases.proxyURL = URL("https://api.revenuedot.app")
Purchases.configure(
PurchasesConfiguration.Builder(this, "goog_...")
// Default is INFORMATIONAL, which logs every response as a failed signature check.
.entitlementVerificationMode(EntitlementVerificationMode.DISABLED)
.build()
) Kotlin
val customerInfo = Purchases.sharedInstance.awaitCustomerInfo()
val isPro = customerInfo.entitlements["pro"]?.isActive == true
val offerings = Purchases.sharedInstance.awaitOfferings()
val pkg = offerings.current?.availablePackages?.firstOrNull() ?: return
try {
val result = Purchases.sharedInstance.awaitPurchase(PurchaseParams.Builder(activity, pkg).build())
val nowPro = result.customerInfo.entitlements["pro"]?.isActive == true
} catch (e: PurchasesTransactionException) {
if (e.userCancelled) return
} Fork
The fork lives at github.com/revenuedot/purchases-android. Imports do not change. It also routes diagnostics, paywall events and ad events to your proxy URL, which the stock SDK still sends to RevenueCat. It is not published to Maven Central yet (checked October 2026). The planned coordinates:
// build.gradle.kts
implementation("app.revenuedot.purchases:purchases:<version>")
// still: import com.revenuecat.purchases.* Notes
syncPurchases() once on the first launch of the update. It also gives RevenueDot any Google purchase token the importer could not find.AmazonConfiguration. See Amazon Appstore setup.redeemWebPurchase gives buyers from a RevenueDot purchase link access in the app.FAQ
Use the RevenueCat Kotlin SDK on the device and a server that checks Google Play purchases. With RevenueDot you set Purchases.proxyURL, add a Play service account and a Pub/Sub push subscription, create products as subscriptionId:basePlanId and call awaitPurchase.
Purchases, customer info and offerings go to your proxy URL. Diagnostics, paywall events and ad events still go to RevenueCat's hosts in the stock SDK. The RevenueDot fork sends them to your server.
No. RevenueDot acknowledges each purchase after reading it from the Play Developer API, because Google refunds purchases left unacknowledged for 3 days.
Set the product's store_identifier to subscriptionId:basePlanId, for example pro:monthly. Use the product ID for one-time products.
Create a Test Store app, use its test_ key in a debug build and tap the successful purchase in the SDK's dialog. For real Google test purchases, add license testers and use an internal test track.
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