RevenueCat is the layer between your app and the App Store and Play Store billing systems. You ship subscriptions and in-app purchases without having to write receipt validation, server-side entitlement logic, or cross-platform purchase restoration. All the hard parts are handled.

Every app I've shipped that charges money uses RevenueCat. I've tried rolling my own IAP twice. Both times I regretted it by week two. Receipt validation is fiddly, grace periods are tricky, family sharing and refunds are full of edge cases. RevenueCat handles every one of them.

For the full reference, the RevenueCat docs.

Three concepts

These three pieces show up in every RevenueCat guide. Understand them and everything else is just method calls.

  • Products are the SKUs you create in App Store Connect and Play Console. Things like pro_monthly, pro_yearly, lifetime.
  • Offerings are the bundles shown on your paywall. A single offering called "Pro" might contain monthly + yearly + lifetime.
  • Entitlements are permission flags checked in your app. You gate features on entitlements, not product IDs.

The rule that saves you the most pain: gate features on entitlements. If you check customerInfo.entitlements.active['pro'], you can add a yearly plan or lifetime unlock later without touching any Dart code. If you gate on product IDs, you've bought yourself a rewrite.

Why I use it

  • Free up to $2.5k/mo of tracked revenue. That covers most indie apps before you'd need to rebuild it.
  • Every edge case handled. Receipt validation, restoration, grace periods, family sharing, refunds. None of that lives in your code.
  • One dashboard across iOS and Android. Real-time revenue numbers without wiring up analytics.

Where to start