SDK

In-app purchases and subscriptions for Flutter apps

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.

One awaited call

Purchases.setProxyURL before configure is the whole change on iOS and Android.

Verification already off

EntitlementVerificationMode.disabled is the Flutter default.

Web needs the fork

The stock web plugin ignores the proxy URL. The fork makes it work.

Package name stays

The planned fork keeps package:purchases_flutter, shipped as a git dependency.

Steps

How to add subscriptions to a Flutter app with RevenueDot

  1. 01

    Create a free Cloud project

    Start free on Cloud and add an App Store app and a Google Play app, or a Test Store app for a first test.

  2. 02

    Connect the stores and create the catalog

    Add your store credentials (App Store, Google Play), then products, a pro entitlement and a current offering.

  3. 03

    Add purchases_flutter

    Add purchases_flutter from pub.dev to pubspec.yaml as you would for any RevenueCat project.

  4. 04

    Await the proxy URL before configure

    Call await Purchases.setProxyURL(...), then Purchases.configure with the appl_ or goog_ key.

  5. 05

    Buy and check the entitlement

    Call Purchases.purchase(PurchaseParams.package(package)) and check customerInfo.entitlements.active.containsKey('pro').

  6. 06

    Test with a Test Store key

    Use a test_ key in a debug build and tap Test valid purchase in the dialog.

Dart

The Flutter proxy URL change

Point the SDK at RevenueDotDart
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

Check an entitlement and make a purchase

RevenueCat's API, unchangedDart
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 RevenueDot fork package for Flutter

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:

Planned fork installpubspec.yaml
# pubspec.yaml
purchases_flutter:
  git:
    url: https://github.com/revenuedot/purchases-flutter
    ref: <version>-revenuedot

Notes

Flutter details worth knowing

  • Flutter web does not work in proxy mode with the stock package, because its web plugin ignores setProxyURL. Web calls would still go to RevenueCat. The fork fixes it.
  • Migrating from RevenueCat? Call await Purchases.syncPurchases() once on the first launch of the update.
  • Test Store keys work in debug builds only. Ship with appl_ and goog_ keys.
  • Status: the Flutter example is written but has not been analyzed or run on a device yet.

FAQ

Flutter: questions people ask

How do I add in-app purchases to a Flutter app?

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.

Does purchases_flutter work with a backend other than RevenueCat?

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.

Does RevenueDot work with Flutter web?

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.

How do I test Flutter purchases without store accounts?

Create a Test Store app, use its test_ key in a debug build and tap Test valid purchase. Test purchases are always sandbox data.

Will my Dart imports change with the fork?

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

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