What Is RevenueCat?
RevenueCat is a subscription management platform that sits between your app and the Apple/Google billing systems. It handles receipt validation, entitlement management, analytics, and cross-platform subscription state synchronization. Instead of building and maintaining your own server-side billing infrastructure, you delegate that complexity to RevenueCat.
As of 2026, RevenueCat processes over $5 billion in annual subscription revenue across thousands of apps. It supports iOS, Android, web, React Native, Flutter, Unity, and other platforms.
Why Use RevenueCat?
Building subscription infrastructure from scratch is harder than most developers expect:
- Receipt validation: Both Apple and Google have complex and evolving server APIs for verifying purchases
- State management: Tracking active, expired, grace period, billing retry, and refunded states across platforms
- Cross-platform sync: A user who subscribes on iOS should have access on Android (and vice versa)
- Edge cases: Family sharing, subscription transfers, refunds, promotional offers, sandbox testing
- Analytics: Calculating MRR, churn, LTV, trial conversion, and cohort retention
RevenueCat handles all of this with a few lines of SDK code.
Pricing
RevenueCat offers a generous free tier:
| Plan | Monthly Tracked Revenue | Price |
|---|---|---|
| Free | Up to $2,500 MTR | $0 |
| Starter | Up to $10,000 MTR | $35/month |
| Pro | Up to $100,000 MTR | $100/month |
| Scale | Custom | Custom pricing |
MTR (Monthly Tracked Revenue) is the total revenue processed through RevenueCat, not your profit. For apps just starting out, the free tier is sufficient.
SDK Setup
Configuration is a single line on each platform. Pass your platform-specific API key (prefixed appl_ for iOS, goog_ for Android) to Purchases.configure(). An optional appUserID can be provided, but RevenueCat generates anonymous IDs by default. SDKs are available for Swift, Kotlin, React Native, Flutter, and Unity.
Core Concepts
Products
Products are created in App Store Connect and Google Play Console. RevenueCat fetches product details (price, description, eligibility) from the stores automatically.
Entitlements
Entitlements represent what the user has access to. Instead of checking specific product IDs, you check if the user has an entitlement. For example, a "premium" entitlement could be granted by a monthly subscription, annual subscription, or lifetime purchase.
let customerInfo = try await Purchases.shared.customerInfo()
if customerInfo.entitlements["premium"]?.isActive == true {
// User has premium access
}
Offerings
Offerings are the set of products displayed to the user. They allow you to change what products are shown (and at what price) without an app update. You configure offerings in the RevenueCat dashboard.
let offerings = try await Purchases.shared.offerings()
if let current = offerings.current {
let monthly = current.monthly?.storeProduct
let annual = current.annual?.storeProduct
}
Purchases
Making a purchase through RevenueCat:
let result = try await Purchases.shared.purchase(package: package)
if result.customerInfo.entitlements["premium"]?.isActive == true {
// Unlock premium
}
RevenueCat handles receipt validation, transaction finishing, and entitlement updates automatically.
Webhooks
RevenueCat sends webhooks for key events: INITIAL_PURCHASE, RENEWAL, CANCELLATION, BILLING_ISSUE, EXPIRATION, and PRODUCT_CHANGE. These enable you to sync subscription state with your database, trigger emails, and perform server-side actions.
Analytics Dashboard
RevenueCat provides real-time analytics including:
- MRR (Monthly Recurring Revenue): Current subscription revenue run rate
- Active Subscribers: Total paying subscribers
- Active Trials: Users currently in free trial
- Churn Rate: Monthly and annual churn percentages
- Trial Conversion: Percentage of trials converting to paid
- Refund Rate: Percentage of purchases refunded
- LTV (Lifetime Value): Projected revenue per subscriber
- Cohort Charts: Retention by install week/month
These metrics update in near-real-time and do not require any additional analytics SDK.
Paywalls (RevenueCat Paywalls)
RevenueCat offers a native paywall builder with template-based design, built-in A/B testing, localization, and analytics. Paywalls are configured in the dashboard and rendered natively, allowing you to experiment without app updates.
Best Practices
- Use entitlements, not product IDs: Decouples access logic from specific products
- Configure offerings remotely: Change pricing without app updates
- Set up webhooks early: Having event data flowing is valuable even before you need it
- Test thoroughly in sandbox: RevenueCat works with both Apple and Google sandbox environments
Related Topics
- StoreKit 2 and Play Billing Guide - Understanding the native APIs that RevenueCat wraps
- IAP Sandbox Testing - Testing purchases in development environments
- Auto-Renewable Subscriptions - Subscription lifecycle concepts