- Goal: unify Stripe payment intents (web) and RevenueCat (mobile IAP) so subscribers are stored, verified, and fulfilled through the same payment service entry point at
packages/api/src/services/payment/stripe.service.ts. - Scope: backend service layer, webhook handling, Supabase persistence, env/config wiring. Client changes (Expo/Next) are limited to calling the new API contracts that this plan introduces.
- Out of scope: pricing strategy, UI redesign, or migrating historical transactions (capture them via a one-time sync instead).
stripe.service.tsexposes a typedcreatePaymentSheet+confirmPaymentflow that tags PaymentIntents with the RevenueCat product/entitlement metadata.- New RevenueCat service + webhook keeps Supabase
subscriptions(or an equivalent table) in sync for Apple/Google receipts and Stripe payments.