RevenueCat payments
Activate live subscriptions, entitlements, restore, management, and webhooks.
The demo includes three paywall presentations and mock monthly/annual plans. The production adapter uses RevenueCat and reads real products, localized prices, trials, and entitlement state from the stores.
Prompt
Read agent-skills/wire-payments.md and PRODUCTION-SETUP.md. Connect my App Store
and Google Play subscriptions to RevenueCat using the included adapter. Configure
the entitlement and monthly/annual packages, live prices, trial, purchase,
restore, management URL, webhook, and account identity. Keep secrets server-side
and test both store sandboxes before switching the adapter.Setup shape
- Create matching subscriptions in App Store Connect and Play Console.
- Attach them to the configured RevenueCat entitlement and current offering.
- Add only the platform public SDK keys to the app environment.
- Keep RevenueCat secret and webhook auth/signing values in Supabase secrets.
- Deploy the included idempotent webhook and entitlement mirror.
- Run
pnpm verify:revenuecat, switch the adapter, rebuild, and test sandbox purchases.
The promotional offer sheet needs a real second RevenueCat offering. Production hides that sheet when no promotional offering ID is configured.
Product rules
- Never unlock premium because a button callback said “success”.
- The current RevenueCat
CustomerInfoentitlement is client truth. - A cancellation normally means “will not renew”, not “expired now”.
- Display the live localized store price and real trial eligibility.
- Restore and manage-subscription paths must remain available.
- Deleting an app account is separate from canceling a store subscription.
Test purchase cancel/failure/success, restore, renewal, grace period, billing issue, expiration, account switch, listener updates, and out-of-order/replayed webhooks before calling payments complete.