One awaited call
Purchases.setProxyURL before configure is the whole change on iOS and Android.
SDK
To add in-app subscriptions to a Flutter app with RevenueDot, keep purchases_flutter and await Purchases.setProxyURL('https://api.revenuedot.app') before Purchases.configure. Verification is already disabled by default, so iOS and Android need nothing else. The stock package ignores the proxy URL on Flutter web, which the RevenueDot fork fixes.
Free up to $10,000 a month in tracked revenue. Works with the RevenueCat SDK you already ship.
Purchases.setProxyURL before configure is the whole change on iOS and Android.
EntitlementVerificationMode.disabled is the Flutter default.
The stock web plugin ignores the proxy URL. The fork makes it work.
The planned fork keeps package:purchases_flutter, shipped as a git dependency.
Steps
Start free on Cloud and add an App Store app and a Google Play app, or a Test Store app for a first test.
Add your store credentials (App Store, Google Play), then products, a pro entitlement and a current offering.
Add purchases_flutter from pub.dev to pubspec.yaml as you would for any RevenueCat project.
Call await Purchases.setProxyURL(...), then Purchases.configure with the appl_ or goog_ key.
Call Purchases.purchase(PurchaseParams.package(package)) and check customerInfo.entitlements.active.containsKey('pro').
Use a test_ key in a debug build and tap Test valid purchase in the dialog.
Dart
import 'dart:io' show Platform;
import 'package:purchases_flutter/purchases_flutter.dart';
Future<void> initPurchases() async {
await Purchases.setProxyURL("https://api.revenuedot.app");
await Purchases.configure(
PurchasesConfiguration(Platform.isIOS ? 'appl_...' : 'goog_...'),
// entitlementVerificationMode stays at its default, disabled.
);
} Dart
final customerInfo = await Purchases.getCustomerInfo();
final isPro = customerInfo.entitlements.active.containsKey('pro');
final offerings = await Purchases.getOfferings();
final package = offerings.current?.availablePackages.first;
if (package != null) {
try {
final result = await Purchases.purchase(PurchaseParams.package(package));
final nowPro = result.customerInfo.entitlements.active.containsKey('pro');
} on PlatformException catch (e) {
if (PurchasesErrorHelper.getErrorCode(e) != PurchasesErrorCode.purchaseCancelledError) rethrow;
}
} Fork
The fork lives at github.com/revenuedot/purchases-flutter. pub.dev names belong to RevenueCat, so it will ship as a git dependency with -revenuedot tags. It is not published yet (checked October 2026), and its iOS and Android builds need native packages that are not published either. Use proxy mode today. The planned install:
# pubspec.yaml
purchases_flutter:
git:
url: https://github.com/revenuedot/purchases-flutter
ref: <version>-revenuedot Notes
setProxyURL. Web calls would still go to RevenueCat. The fork fixes it.await Purchases.syncPurchases() once on the first launch of the update.appl_ and goog_ keys.FAQ
Add purchases_flutter, configure it with your store key, fetch offerings and call Purchases.purchase. A backend verifies the store receipt. With RevenueDot you await Purchases.setProxyURL before configure and connect your App Store and Google Play apps.
Yes, on iOS and Android, when the server implements the API the SDK calls. RevenueDot does. You call Purchases.setProxyURL before configure. Verification is already disabled by default in Flutter.
Not with the stock package: its web plugin ignores setProxyURL. The RevenueDot fork fixes that, but it is not published yet. For web sales today, use a RevenueDot purchase link and Stripe Checkout.
Create a Test Store app, use its test_ key in a debug build and tap Test valid purchase. Test purchases are always sandbox data.
No. The package names stay purchases_flutter and purchases_ui_flutter. Only the dependency source in pubspec.yaml changes, and the fork is not published yet.
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