Stripe + RevenueCat + Supabase
Let a user subscribe on web (Stripe) or mobile (RevenueCat), unlock both, and never get double-charged, by making one Supabase column the single source of truth.
✓ Real production code · ✓ Drop-in · ✓ Setup guide included · ✓ Single-project commercial use · ✓ 30-day money-back guarantee
Do not make Stripe and RevenueCat aware of each other. Project both onto one entitlement field you own, and have every app read only that.
profiles.subscription_tier is the truth. Both billing systems write it; every app just reads it.
checkout plus subscription.updated and deleted, projected onto the tier. The real production code.
The canonical server-side event mapping, with the CANCELLATION-is-not-a-downgrade trap explained.
Users read their own tier but never write it; only the service-role webhooks update it.
Set the RevenueCat appUserID to the Supabase user id. Documented, with the web client_reference_id handled for you.
Adds the tier column and a one-line isPlus() check used the same everywhere.
The exact, working implementation, generalised so you drop it into your own project and move on.
Get the kit — €19Instant download · single-project commercial use · ✓ 30-day money-back guarantee
Want all three Supabase kits? Get the bundle for €39 — a third off.