Goal: charge on the web with Stripe but keep app access seamless using RevenueCat entitlements.
Here’s the flow I’m testing:
- User signs up on the web, we set a stable app_user_id that will also exist in the app.
- Create Stripe checkout session with that id in client_reference_id and metadata.
- On payment succeeded and subscription updated webhooks, call RevenueCat’s API to grant or update the entitlement for that app_user_id.
- In the app, RevenueCat SDK checks entitlements and unlocks premium.
- On cancellation, refunds, or failed renewals from Stripe, update or revoke via the same API.
Open items:
- Best way to match the web user to the app user on first install. I’m leaning toward a magic link deep link that signs them in.
- Handling grace periods for failed renewals so we don’t lock people out too early.
- Restoring purchases in the app when the user originally paid on the web.
Anyone running this in production? What pitfalls did you hit with entitlements and identity matching?