Why RevenueCat instead of raw in_app_purchase
The native in_app_purchase plugin gives you the primitives: fetch products, buy them, listen to purchase updates. It does not give you restore-purchases logic, receipt validation, entitlement checks, cross-platform user identity, or analytics. RevenueCat gives you all of those, and is free below a revenue threshold.
The integration in five steps
(1) Create an app in RevenueCat, add your App Store Connect and Play Console credentials. (2) Create products (subscriptions or one-time) in both stores. (3) Group them into offerings. (4) Install purchases_flutter, configure with your public SDK key, identify the user. (5) Present the paywall, call Purchases.purchasePackage(), check entitlement on app launch.
Restore purchases: the required flow
Every subscription app is required by App Store Review Guideline 3.1.1 to offer a Restore Purchases button. RevenueCat exposes Purchases.restorePurchases() — call it, then re-check the customer's entitlement. If the user has an active subscription, unlock the paywall.
Entitlements vs products
A product is what the user buys (monthly_pro). An entitlement is what unlocks (pro_features). Products can change; entitlements should not. Always gate features on entitlements, not on product IDs.
Server-side receipt validation
RevenueCat validates receipts for you. If you also need server-side validation (e.g., to grant server-side entitlements), use RevenueCat webhooks — they fire on every purchase, renewal, cancellation, and refund.
Analytics and cohort tracking
RevenueCat Charts gives you MRR, ARPU, LTV, churn, and cohorted retention out of the box. Send events to PostHog by piping RevenueCat webhooks through your backend.
Frequently asked
- Is RevenueCat free?
- Free up to $2,500 in monthly tracked revenue. Above that, it is 1% of MTR on the standard plan.
- Can I use RevenueCat with Supabase?
- Yes. Use RevenueCat webhooks to update a "subscriptions" table in Supabase, then let RLS gate premium data on that table.
- Does RevenueCat handle refunds?
- It logs them via webhook. The actual refund is issued by Apple or Google; RevenueCat records the entitlement change.
Primary sources
Official documentation this page is grounded in. Verified to resolve.