Skip to Content
PaymentsRevenueCat setup

RevenueCat setup

Connect your store products to RevenueCat and configure the entitlement that unlocks Pro.

Your coding agent can help with the project, products and offerings through RevenueCat’s AI toolkit.

Prerequisites

Setup

Create a RevenueCat project

Create an account at RevenueCat  and add a project. Add the iOS and Android apps to the same project if purchases should grant access on both platforms.

Connect the store apps

Add an App Store app with the bundle identifier from config.js → general.iosBundleIdentifier.

Supply the In-App Purchase Key  requested by RevenueCat. Its App Store Connect API key can also enable product imports. Follow the store connection guide  for the credentials.

Import the products

Import your subscriptions or one-time products into RevenueCat’s product catalog. Check that the identifiers match the store products.

For Google Play subscriptions, select the intended base plan. RevenueCat identifies these products as <subscription-id>:<base-plan-id>.

Create the Pro entitlement

Create an entitlement  named pro and attach every product that should unlock Pro.

If you choose another identifier, set config.js → purchases.proEntitlementId to that exact value.

Create an offering and paywall

Create an offering , add packages for your products and make it the current offering.

Configure a RevenueCat paywall for that offering. The app’s default paywall uses the current offering.

Add the public SDK keys

Copy the platform-specific public keys from your RevenueCat project’s API keys  settings:

.env.local
EXPO_PUBLIC_REVENUE_CAT_API_KEY_APPLE="<your-apple-sdk-key>" EXPO_PUBLIC_REVENUE_CAT_API_KEY_GOOGLE="<your-google-sdk-key>"

Set the key for each platform you build. Add those same values to the EAS environment used by cloud builds.

Configure the server check

Create a RevenueCat secret API key that can read the subscriber endpoint . Add it to your linked Supabase project’s function secrets:

supabase secrets set REVENUECAT_SECRET_KEY="<your-revenuecat-secret-key>" supabase secrets set PRO_ENTITLEMENT_ID="pro"

Use the same entitlement identifier as the dashboard and config.js. See Edge function secrets for secret management.

Keep REVENUECAT_SECRET_KEY on the server. Without it, paid AI requests treat every user as free even when the app shows Pro.

Verify

Restart the development server, or rebuild if testing a standalone app. Sign in and open the paywall from Profile.

Use an Apple sandbox  or Google Play test account  to check the following:

  1. The paywall displays the expected products and localized prices.
  2. A purchase grants the Pro entitlement to the RevenueCat customer whose app user ID matches the signed-in Supabase user.
  3. Profile shows Pro access and image generation succeeds.
  4. Restoring purchases recovers access for the same customer.

Run the bundled configuration check from the app directory:

node .claude/skills/setup/scripts/verify-pro.mjs

It compares the app’s entitlement identifier with the linked project’s server configuration. Read any skipped-check messages; this command alone does not verify a purchase.

Next

Use Purchases to open the paywall from another screen, or troubleshoot an empty offering or missing entitlement.

Last updated on