Stripe + RevenueCat + Supabase

One Subscription, Web + Mobile

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.

Get the kit — €19 Instant download

✓ Real production code  ·  ✓ Drop-in  ·  ✓ Setup guide included  ·  ✓ Single-project commercial use  ·  ✓ 30-day money-back guarantee

One Subscription, Web + Mobile cover

Stop reconciling two billing systems.

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.

What you get

One source of truth

profiles.subscription_tier is the truth. Both billing systems write it; every app just reads it.

Stripe webhook (web)

checkout plus subscription.updated and deleted, projected onto the tier. The real production code.

RevenueCat webhook (mobile)

The canonical server-side event mapping, with the CANCELLATION-is-not-a-downgrade trap explained.

RLS that cannot be faked

Users read their own tier but never write it; only the service-role webhooks update it.

The one rule that lines it up

Set the RevenueCat appUserID to the Supabase user id. Documented, with the web client_reference_id handled for you.

Migration + client helper

Adds the tier column and a one-line isPlus() check used the same everywhere.

From the writeup, packaged · just €19

Skip the rabbit hole. Ship it.

The exact, working implementation, generalised so you drop it into your own project and move on.

Get the kit — €19

Instant download · single-project commercial use  ·  ✓ 30-day money-back guarantee

Want all three Supabase kits? Get the bundle for €39 — a third off.