# RevenueCat

[RevenueCat](https://www.revenuecat.com/) simplifies implementing in-app purchases and subscriptions by handling all purchase validation operations.

Pub.Dev package and Limitations

The [**underlying package for RevenueCat**](https://pub.dev/packages/purchases_flutter) does not support web. Any functionality related to in-app purchases or subscriptions managed through RevenueCat will not be available on web platforms.

## Setup RevenueCat[​](/integrations/payments/revenuecat.md#setup-revenuecat "Direct link to Setup RevenueCat")

To set up the RevenueCat, follow these steps carefully:

1. Sign up for a new RevenueCat account [here](https://app.revenuecat.com/).

2. [Create a project](https://www.revenuecat.com/docs/getting-started/quickstart#%EF%B8%8F-create-a-project), [add your app](https://www.revenuecat.com/docs/getting-started/quickstart#%EF%B8%8F-add-an-app--platform), and ensure that you [add service credentials](https://www.revenuecat.com/docs/getting-started/quickstart#%EF%B8%8F-service-credentials) to help RevenueCat communicate with the app stores on your behalf.

3. [Create subscriptions](https://www.revenuecat.com/docs/getting-started/quickstart#%EF%B8%8F-store-setup) in the respective stores.

   1. While creating subscriptions in Google Play Console, if you see a message saying '***Your app doesn't have any in-app products yet**'* like in this picture, follow the steps below:

   ![error-while-creating-sub-in-play-console.avif](/assets/images/error-while-creating-sub-in-play-console-602d9fd2b8458217070b1dc3ad49b334.avif)

   1. Return to FlutterFlow and navigate to **Settings & Integrations >** **In App Purchases & Subscriptions >** **RevenueCat**.

   2. Switch on the **Enable RevenueCat**. For now, just enter any random string as your API Key (eg. `testkey`). We’ll update this later.

   3. Now, from the toolbar menu, click **Download APK**

   4. In the Play Console, create a [Closed testing](https://play.google.com/console/about/closed-testing/) track and create a new release.

   5. Upload your **App Bundle** or **APK**, enter the release name, and create the release.

   6. Open the **Subscriptions** tab again. It should let you manage subscriptions now.

4. [Create Products and Entitlements in RevenueCat](https://www.revenuecat.com/docs/getting-started/quickstart#%EF%B8%8F-configure-products-and-entitlements-in-revenuecat).

### Enable RevenueCat in FlutterFlow[​](/integrations/payments/revenuecat.md#enable-revenuecat-in-flutterflow "Direct link to Enable RevenueCat in FlutterFlow")

To enable RevenueCat in FlutterFlow, follow the steps below:

## Displaying Subscription Details in Your App[​](/integrations/payments/revenuecat.md#displaying-subscription-details-in-your-app "Direct link to Displaying Subscription Details in Your App")

To show in-app purchase and subscription information — such as pricing, product name, and description — within your app’s UI, you'll need to fetch these details from RevenueCat using the appropriate API or method.

Here is an example of retrieving monthly subscription details:

## RevenueCat Actions[​](/integrations/payments/revenuecat.md#revenuecat-actions "Direct link to RevenueCat Actions")

To manage in-app purchases and subscriptions inside your FlutterFlow app, you have to use the RevenueCat Actions. Below are the types of RevenueCat actions:

* **Paywall**
* **Purchase**
* **Restore Purchases**

### Paywall \[Action][​](/integrations/payments/revenuecat.md#paywall-action "Direct link to Paywall \[Action]")

This action checks whether a user has purchased an item. If not, you can open the Paywall (asking to buy an item or purchase a subscription).

Follow the steps below to see if a user is subscribed and take action accordingly.

### Purchase \[Action][​](/integrations/payments/revenuecat.md#purchase-action "Direct link to Purchase \[Action]")

This action allows you to purchase the item. Here’s how you add it:

### Restore Purchases \[Action][​](/integrations/payments/revenuecat.md#restore-purchases-action "Direct link to Restore Purchases \[Action]")

Using this action, you can allow users to re-activate the subscription they have already paid for. This is helpful when a user has reinstalled the app or logged in to a new device.

info

* A good practice is to allow users to manually restore the purchase by showing a button or text (maybe on a paywall/settings page).
* If you provide this option, please check [**How RevenueCat should respond to restore behavior**](https://www.revenuecat.com/docs/restoring-purchases#restore-behavior).

Android apps without login

If your Android app doesn't use authentication, users can only get back a one-time purchase through **Restore Purchases** if the product is non-consumable. Before you rebuild the app, check in the RevenueCat dashboard that each permanent one-time product is set up as non-consumable. Apps built with FlutterFlow use RevenueCat SDK version 10, which no longer restores consumed purchases. For details, see [Restoring consumable purchases](https://www.revenuecat.com/docs/known-store-issues/play-billing-library/restore-consumable-purchases-bc8).

![adding-restore-purchase-action.avif](/assets/images/adding-restore-purchase-action-59390e74c4e0be5f07c417cfa440c923.avif)

Adding action to restore purchase

## Testing Subscriptions[​](/integrations/payments/revenuecat.md#testing-subscriptions "Direct link to Testing Subscriptions")

You can test your subscriptions using sandbox environments, which simulate real store behavior without incurring costs. Check out the full **[Sandbox Testing Guide](https://www.revenuecat.com/docs/test-and-launch/sandbox)** for more details.

Before going live, make sure to review **[RevenueCat’s Launch Checklist](https://docs.revenuecat.com/docs/launch-checklist)** to ensure everything is properly set up for production.

## FAQs[​](/integrations/payments/revenuecat.md#faqs "Direct link to FAQs")

I don't see offerings or products

If you're testing in the sandbox and the products are not retrieved from Apple/Google, it's likely a configuration issue. To resolve this, ensure the following:

1. The product identifier set in RevenueCat matches exactly with the store.
2. You're testing on a physical device and not a simulator.
3. The bundle ID in Xcode \[iOS] or package name \[Google] matches what's in App Store Connect or Google Play Developer console.

For iOS only, ensure that products are in the 'Ready To Submit' or 'Approved' state, you've signed your 'Paid Applications Agreement', and you're not using a StoreKit Configuration file.

For Google only, ensure that the subscription product is in the Active state, your app is published on a closed track, and you've added a tester.

See more details [here](https://community.revenuecat.com/sdks-51/why-are-offerings-or-products-empty-124).

## Looking for other options?[​](/integrations/payments/revenuecat.md#looking-for-other-options "Direct link to Looking for other options?")

If you're looking for other tools to manage in-app subscriptions, [**Adapty**](https://adapty.io/) is a solid alternative to RevenueCat — it offers advanced analytics, paywall A/B testing, and seamless integration with iOS and Android apps. You can explore the [**Adapty Library on our Marketplace**](https://marketplace.flutterflow.io/item/Mf1oFJcqngHzERZSPNA8) — it's actively maintained by the Adapty team and always kept up to date.
