Payment troubleshooting
Check these settings when a paywall is empty, a purchase fails or Pro access does not unlock.
No products or offerings come back from RevenueCat
Check that RevenueCat has a current offering with packages attached, and that the product identifiers match App Store Connect or Play Console.
Then check the store setup:
- On iOS, complete the Paid Applications Agreement, tax and banking requirements. Fill in the product’s required metadata and confirm its availability.
- On Android, activate the intended base plans and use an eligible license tester with your Play Console test release.
- Confirm that the app’s bundle identifier or package name matches the store app, and that its RevenueCat SDK key belongs to that platform.
RevenueCat’s empty-offering guide covers the platform-specific checks.
StoreKit reports “No active account”
Confirm that the device or simulator is configured for your chosen test method. Use an Apple sandbox account or an Xcode StoreKit configuration, following RevenueCat’s iOS testing guide .
This log message alone does not identify a RevenueCat entitlement problem.
The purchase succeeds, but Pro stays locked
Open the customer in RevenueCat and check that the purchased product grants the
entitlement named in config.js → purchases.proEntitlementId. Its default is
pro.
The RevenueCat app user ID should match the signed-in Supabase user’s ID. Check that the entitlement is active for that customer, then reopen the app and inspect Profile.
Profile shows Pro, but AI still asks for an upgrade
The app and the AI functions check access separately. Confirm that:
REVENUECAT_SECRET_KEYis set in the linked Supabase project’s function secrets.- The key can read the RevenueCat subscriber record.
PRO_ENTITLEMENT_IDmatchesconfig.js → purchases.proEntitlementId.- The active entitlement belongs to the same Supabase user ID.
Run the entitlement configuration check. An unavailable RevenueCat response also causes the server to treat a user as free; inspect the function logs and RevenueCat service status if the configuration matches.
Payments work locally but fail in a cloud build
Check the EAS environment selected by the build profile. Local .env.local
values are not uploaded with the project.
Set the matching EXPO_PUBLIC_REVENUE_CAT_API_KEY_APPLE or
EXPO_PUBLIC_REVENUE_CAT_API_KEY_GOOGLE there and rebuild. See
Production builds.
A Superwall paywall appears, but the purchase does not unlock Pro
Displaying a Superwall campaign does not connect its purchases to RevenueCat. Complete the RevenueCat integration, including subscription status and user identity synchronization.
Repeat a sandbox purchase and check both the RevenueCat entitlement and a paid AI action.
No Superwall paywall appears
Check the exact placement name, attached paywall and audience rules in the
campaign. Confirm the platform’s EXPO_PUBLIC_SUPERWALL_API_KEY_APPLE or
EXPO_PUBLIC_SUPERWALL_API_KEY_GOOGLE is available to the app.
Restart the development server after changing a local key, or rebuild after changing an EAS environment value. See Superwall setup.