I have a ChatGPT kind of application, which is a, which has a subscription tier and a top-up tier. And the users can basically subscribe to these plans, different plans. And it's basically an AI chat assistant. Now we have developed the app and we want to publish it to App Store and Play Store. And while we are, you know, sending it for review, they are asking us to enable in-app purchases. But we use Stripe payment gateway for our web application. So like, how will things go within this, in this kind of scenario? Will we have to manage separately Stripe in-app purchases of Apple and then the same for Google Play Store for Android? Just guide me.

Checking Date & Time
This is a very common and important situation. Let me give you a thorough breakdown.

The Core Problem

Both Apple and Google have mandatory policies that require apps distributed through their stores to use their own in-app purchase (IAP) systems for digital goods and subscriptions. This is non-negotiable if you want to get approved.
Stripe is fine for your web app. But inside an iOS/Android app, you cannot use Stripe (or any third-party payment processor) to sell subscriptions or digital credits. If reviewers catch it, they will reject the app.

What Counts as "Digital Goods"

Your two tiers almost certainly fall under this:
Your ProductMust Use IAP?
Subscription plans (monthly/annual)✅ Yes — Apple & Google mandatory
Top-up credits/tokens for AI usage✅ Yes — these are digital consumables
Physical goods❌ No — Stripe is fine
B2B invoicing (outside the app)❌ No — but you can't trigger it in-app

What You'll Need to Manage

Yes — you will need three separate payment integrations:

1. Stripe (Web)

  • Keep using Stripe for your web app as-is.
  • Users who subscribe via browser pay through Stripe.
  • You control pricing, billing, and revenue fully.
  • No platform cut.

2. Apple In-App Purchases (iOS)

  • You must use StoreKit 2 (the modern Swift API) or a cross-platform library (see below).
  • Apple takes 15–30% commission (15% for small developers / renewals after year 1).
  • You configure products in App Store Connect (subscription groups, consumable top-ups).
  • Apple handles the payment UI, receipt validation, and renewal logic.
  • You receive a server-side webhook (App Store Server Notifications) to provision entitlements.

3. Google Play Billing (Android)

  • You must use the Google Play Billing Library.
  • Google takes 15–30% commission (15% for the first $1M/year under the reduced service fee program).
  • You configure products in Google Play Console.
  • Google sends Real-time Developer Notifications (RTDN) via Pub/Sub to your backend.

Your Backend Architecture

This is the key part — you need a unified entitlement service on your backend:
[iOS App]  → StoreKit purchase → Apple validates → Apple webhook → Your Backend
[Android]  → Play Billing     → Google validates → Google webhook → Your Backend
[Web App]  → Stripe           → Stripe webhook   → Your Backend

Your Backend → grants/revokes subscription access & top-up credits
Your backend needs to:
  1. Verify receipts/tokens from all three sources (never trust the client alone).
  2. Map each platform's subscription state to your internal user entitlement.
  3. Handle renewals, cancellations, refunds, and grace periods from all three sources.
  4. Store which platform a user subscribed on (important — you can't move them across platforms).

Cross-Platform Libraries That Help

Managing three separate SDKs is complex. Most teams use a subscription management layer:
Library/ServiceWhat It Does
RevenueCatWraps StoreKit + Play Billing, sends unified webhooks to your backend, handles receipt validation. Most popular choice. Has a free tier.
AdaptySimilar to RevenueCat, also has A/B testing for paywalls.
QonversionSimilar, slightly cheaper.
Manual (StoreKit 2 + Play Billing 6)Full control, no third-party dependency, but significantly more dev work.
RevenueCat is the most widely used and reduces your integration from "3 separate systems" to "1 SDK + 1 webhook endpoint". Your Stripe web integration stays completely separate and you just sync user entitlements in your backend.

Practical Pricing Implications

Because Apple/Google take 15–30%, many apps do one of these:
  1. Charge more on mobile — e.g., $10/month on web, $13/month on iOS (to offset the cut). Apple/Google allow this.
  2. Funnel users to web — You cannot show a link inside the iOS app saying "subscribe cheaper on our website" (Apple cracked down on this). You can tell users verbally or via email, but not in-app UI. (Note: Post-Epic v. Apple ruling in the US, this is evolving — as of early 2026, Apple must allow links to external purchase options for US users. Check the current App Store guidelines.)
  3. Freemium on mobile — Only offer a limited free tier through mobile apps and push subscription to web.

Summary: Your Action Plan

  1. Keep Stripe for web — no changes needed there.
  2. Integrate Apple StoreKit 2 for iOS subscriptions + consumable top-ups.
  3. Integrate Google Play Billing for Android.
  4. Consider RevenueCat to simplify both mobile integrations.
  5. Build a unified entitlement endpoint in your backend that all three platforms post to.
  6. Configure products in App Store Connect and Google Play Console — they must match your actual product tiers.
  7. Never call Stripe from within the mobile app UI — any payment for digital goods inside the app must go through IAP.
The extra complexity is real, but it's the standard path every subscription app takes. The biggest risk teams face is trying to route mobile users through Stripe (e.g., via a WebView) — Apple and Google actively look for this and will reject or remove the app.

What is this revenuecat? Tell me more about it. And also prefer using doing web search to find information.

Checking Date & Time
Searching the Web

RevenueCat what is it features pricing 2025 2026

Searching the Web

RevenueCat how it works SDK integration iOS Android

The web search tool is hitting a rate limit right now. Let me give you a thorough answer from what I know — this is well-established information about RevenueCat that doesn't change frequently.

What is RevenueCat?

RevenueCat is a backend-as-a-service platform specifically built to handle mobile in-app purchases and subscriptions. Founded in 2017, it is now used by thousands of apps — including major consumer apps — as the standard way to manage IAP complexity across iOS, Android, and even web.
Think of it this way: instead of you building and maintaining the plumbing for StoreKit (Apple) and Play Billing (Google) separately, RevenueCat acts as a unified middleware layer between those platforms and your app.

The Problem It Solves

Without RevenueCat, here's what you'd have to build yourself:
  • Implement StoreKit 2 in Swift/Obj-C for iOS
  • Implement Google Play Billing Library in Kotlin/Java for Android
  • Build receipt validation servers for both (Apple and Google receipts are completely different formats)
  • Handle renewals, cancellations, refunds, billing retries, grace periods from both platforms
  • Build a subscriber state database — who has access, which plan, when does it expire
  • Handle edge cases like family sharing, subscription upgrades/downgrades, promo codes, free trials
  • Wire up webhooks from Apple (App Store Server Notifications) and Google (RTDN via Pub/Sub)
This is months of engineering work and an ongoing maintenance burden as Apple/Google update their billing APIs.
RevenueCat does all of the above for you.

How It Works — Architecture

Your iOS App
  └── RevenueCat SDK ──→ Apple StoreKit 2 ──→ Apple
                    ──→ RevenueCat Backend ──→ Your Backend (webhook)

Your Android App
  └── RevenueCat SDK ──→ Google Play Billing ──→ Google
                    ──→ RevenueCat Backend ──→ Your Backend (webhook)

Your Web App
  └── Stripe ──→ Your Backend (webhook)
                    ↓
            Unified Entitlement Check
Your backend (or RevenueCat's dashboard) becomes the single source of truth for a user's subscription status — regardless of which platform they subscribed on.

Key Features

1. SDK (Client-Side)

  • Available for: iOS (Swift/Obj-C), Android (Kotlin/Java), Flutter, React Native, Unity, Capacitor, Cordova
  • A few lines of code to initialize, fetch offerings, and trigger a purchase
  • The SDK talks to both the platform's billing system AND RevenueCat's backend simultaneously

2. Entitlement System

  • You define entitlements (e.g., "pro_access", "topup_credits") in the RevenueCat dashboard
  • Each product (Apple subscription, Google subscription) maps to an entitlement
  • Your app just checks: Purchases.shared.getCustomerInfo() → has entitlement "pro_access"? → show premium features
  • No platform-specific receipt parsing needed in your app code

3. Offerings & Paywalls

  • You configure your subscription packages (monthly, annual, top-up) in RevenueCat dashboard
  • RevenueCat can serve these dynamically — meaning you can change pricing/packaging without an app update
  • They also have a Paywall UI builder — you can visually build your subscription screen and it renders in-app

4. Receipt Validation (Server-Side)

  • RevenueCat validates every purchase receipt with Apple/Google servers on their backend
  • You never have to implement Apple's receipt validation API or Google's Purchase Verification API yourself

5. Webhooks to Your Backend

  • RevenueCat sends a single unified webhook format to your server for all events:
    • INITIAL_PURCHASE, RENEWAL, CANCELLATION, REFUND, BILLING_ISSUE, PRODUCT_CHANGE, etc.
  • One webhook handler in your backend handles all platforms — no separate Apple + Google handlers

6. Dashboard & Analytics

  • Built-in revenue analytics: MRR, ARR, churn rate, LTV, trial conversion, active subscriptions
  • Cohort analysis, charts, subscriber breakdown by platform/country/product
  • This is data you'd otherwise have to build yourself

7. Integrations

  • Stripe — RevenueCat has a Stripe integration so web purchases can be synced into RevenueCat's subscriber database, giving you a unified view across web + mobile
  • Also integrates with: Mixpanel, Amplitude, Braze, Slack, Airship, etc.

Pricing (as of my knowledge)

RevenueCat uses a revenue-based pricing model:
Monthly Tracked Revenue (MTR)Cost
Up to $2,500 MTRFree
$2,500 – $10,000 MTR~$99/month
$10,000+ MTR1% of MTR (roughly)
EnterpriseCustom
"MTR" = the revenue your app generates through RevenueCat-tracked purchases. So if you're early-stage, you can use it completely free until you hit $2,500/month in mobile IAP revenue. Check revenuecat.com/pricing for current rates as these can change.

What RevenueCat Does NOT Replace

  • Stripe — RevenueCat has no web payment processing. Your web subscriptions still go through Stripe. RevenueCat just has an integration to sync Stripe subscriber data so you can see everything in one dashboard.
  • App Store Connect / Google Play Console — You still need to create your products (subscription plans, consumables) there. RevenueCat just connects to them.
  • Your own backend — You still need a backend to store user data and serve your AI app. RevenueCat is complementary — it tells your backend "this user has Pro access."

For Your Specific App (AI Chat with Subscriptions + Top-ups)

Here's how it maps to your use case:
Your ProductRevenueCat TypeNotes
Monthly/Annual subscriptionAuto-renewable subscriptionFully managed — renewals, cancellations, billing retries all handled
Top-up creditsConsumable in-app purchaseRevenueCat tracks the purchase event; your backend grants the credits
RevenueCat is particularly strong for the subscription tier. For consumable top-ups, you'd still need your backend to track credit balances — RevenueCat tells you a purchase happened, but the credit ledger lives in your DB.

Should You Use It?

Yes, for most teams building a subscription app. The alternative — building and maintaining all of this yourself — is significant engineering investment. The free tier covers you until $2,500/month in mobile revenue, so the cost-benefit is very clear early on.
The main reason not to use it would be if you have very specific compliance requirements or need full control over every part of the payment flow. For a standard AI chat app, RevenueCat is the pragmatic choice.

We use React Native, so is using RevenueCat still valuable? And if you want to, I want to know like if there's something like promo codes and all that we give. So right now we manage it through Stripe only and then update subscription or, you know, manage subscriptions and all because we have different tiers. So how will that, you know, kind of play a role into this? How will that fit in this whole scenario?

Great questions — React Native and promo codes are both very relevant angles. Let me address both directly.

React Native + RevenueCat

Yes, RevenueCat is arguably even more valuable for React Native teams. Here's why:
RevenueCat has a first-class React Native SDK (react-native-purchases). It's officially maintained by RevenueCat, not a community wrapper. This means:
  • You write one JavaScript/TypeScript codebase for both iOS and Android purchases
  • No need to write native Swift or Kotlin code for billing at all
  • The SDK handles the bridge to StoreKit 2 (iOS) and Play Billing 6 (Android) under the hood
A purchase flow in React Native with RevenueCat looks roughly like this:
import Purchases from 'react-native-purchases';

// Initialize once at app start
await Purchases.configure({ apiKey: Platform.select({
  ios: 'appl_xxxx',
  android: 'goog_xxxx'
})});

// Fetch your offerings (subscription plans you configured in dashboard)
const offerings = await Purchases.getOfferings();
const monthly = offerings.current.monthly;

// Trigger purchase
const { customerInfo } = await Purchases.purchasePackage(monthly);

// Check entitlement
if (customerInfo.entitlements.active['pro_access']) {
  // unlock premium features
}
Without RevenueCat, you'd need to use separate native modules for iOS and Android, write platform-specific code, and handle receipt validation yourself. RevenueCat eliminates all of that.

The Promo Codes / Multi-Tier Scenario — This Is Where It Gets Complex

This is the most important part of your question. Your current setup (Stripe managing everything — tiers, upgrades, downgrades, promo codes) works perfectly on web. On mobile, the reality is more complicated because Apple and Google own the billing relationship, not you.
Here's how each feature maps:

Subscription Tiers (Upgrade / Downgrade)

On Web (Stripe): You fully control this — you can upgrade/downgrade a user's plan instantly, prorate charges, etc.
On Mobile (Apple/Google via RevenueCat):
  • Upgrades/downgrades are possible but the timing and proration rules are set by Apple/Google, not you
  • Apple: Downgrade takes effect at the next renewal period. Upgrade is immediate with proration credit. You can't force immediate downgrade.
  • Google: More flexible — you can specify upgrade/downgrade modes (immediate, deferred, etc.)
  • RevenueCat wraps this and gives you a simple purchasePackage() call for plan changes, but the underlying platform rules still apply
Key implication: A user who subscribes on iOS is billed by Apple. You cannot move them to Stripe, you cannot manually adjust their bill, and Apple controls the renewal. Their subscription lives in Apple's ecosystem permanently.

Promo Codes

This is where things diverge significantly between platforms:

Apple Promo Codes

  • Apple has its own promo code system in App Store Connect
  • You generate promo codes there and users redeem them in the App Store app or via a deep link
  • They work for paid subscriptions — gives a user a free trial or discounted period
  • You cannot inject a promo code from within your app UI (Apple reviews reject this)
  • RevenueCat supports reading the resulting entitlement after redemption, but the code redemption happens outside your app

Google Play Promo Codes

  • Google also has promo codes in the Play Console
  • More flexible — you can redeem them inside your app via the Play Billing flow
  • RevenueCat supports this natively

Your Stripe Promo Codes

  • These work only on your web app — no connection to mobile IAP
  • You cannot honor a Stripe promo code inside the mobile app — Apple/Google won't know about it
Practical reality: You'll end up maintaining two separate promo code systems — Stripe coupons for web, and Apple/Google promo codes for mobile. There's no way around this given platform rules.

How to Sync Entitlements Across All Three (The Right Architecture)

Since a user might subscribe via web (Stripe), iOS, or Android, your backend needs to be the central source of truth. Here's the recommended pattern:
User subscribes on iOS
  → Apple charges them
  → RevenueCat receives Apple webhook
  → RevenueCat sends unified webhook to YOUR backend
  → Your backend updates user record: { platform: 'apple', tier: 'pro', status: 'active' }

User subscribes on Web
  → Stripe charges them
  → Stripe sends webhook to YOUR backend
  → Your backend updates user record: { platform: 'stripe', tier: 'pro', status: 'active' }

Your AI app (mobile or web) checks access:
  → Calls YOUR backend: "does user X have pro access?"
  → Backend checks the record — doesn't care which platform
  → Returns yes/no
RevenueCat also has a Stripe integration that can sync web subscriber data into their dashboard, so you get unified analytics — but the entitlement logic should still live in your own backend.

The "Subscriber Origin" Problem

One thing that trips teams up: a user's subscription is locked to the platform they subscribed on.
  • If a user subscribes on iOS and then uses your web app, their entitlement comes from Apple — you must check RevenueCat/Apple to verify their status
  • If they subscribed on web, their entitlement comes from Stripe
  • You cannot "migrate" them from Apple to Stripe or vice versa without them cancelling and re-subscribing
  • You need to store subscription_platform per user in your DB and check the right source accordingly

Summary Table for Your Use Case

FeatureWeb (Stripe)iOS (RevenueCat + Apple)Android (RevenueCat + Google)
Subscription tiersFull controlPlatform rules applyMore flexible than Apple
Upgrade/downgradeInstant + prorateDeferred or prorated (Apple rules)Multiple modes available
Promo codesStripe couponsApp Store Connect codes onlyPlay Console codes, redeemable in-app
Billing controlFullApple owns itGoogle owns it
Platform cut0%15–30%15–30%
Cancellation/refundYou handleApple handlesGoogle handles

Bottom Line

  • RevenueCat is still very much worth it for React Native — it's their most popular platform and the SDK is mature.
  • Promo codes and tier management will need to be handled separately per platform — there's no unified promo code system across Stripe + Apple + Google. This is a genuine operational overhead you need to plan for.
  • Your backend entitlement logic is the glue — that's where you unify all three platforms and answer the question "does this user have access right now?"
The good news: once the integration is done, day-to-day it mostly runs itself. The complexity is in the initial setup and in your customer support processes (e.g., a user saying "I want a refund" — you need to know which platform they paid through to route that correctly).

Is this revenue cat free or paid and i dont understand it properly can you explain in simple words with example which does not include any code

Let me use a simple real-world analogy to explain this.

Think of RevenueCat as a "Billing Manager" Employee

Imagine you run a gym. You have three types of members:
  • People who signed up on your website (paid via credit card / Stripe)
  • People who signed up through Apple's App Store
  • People who signed up through Google Play Store
Now, Apple has its own cashier. Google has its own cashier. And your website has its own cashier (Stripe). Each cashier speaks a different language, uses different receipts, and has different rules.
Your problem: Every time someone walks into the gym, your front desk staff has to figure out — "Is this person a valid member? Did they pay? What plan are they on? Did they cancel? Did their payment fail?"
Checking three different cashiers every time, in three different formats, is a nightmare.

RevenueCat is the Manager Who Talks to All Three Cashiers

You hire one manager (RevenueCat) whose only job is:
  1. Talk to Apple's cashier, Google's cashier, and your website cashier
  2. Collect all the information
  3. Give your front desk one simple answer: "Yes, this person is a valid Pro member" or "No, their subscription lapsed"
Your front desk (your app) doesn't need to know which cashier was paid or how. It just asks the manager and gets a clean yes/no answer.

A Concrete Example With Your App

Let's say you have two plans:
  • Basic Plan – $9/month
  • Pro Plan – $29/month

Without RevenueCat:

  • User downloads your app on iPhone, subscribes to Pro
  • Apple charges them and sends a receipt — but the receipt is in Apple's own complex format
  • You need to build a server that reads Apple's receipt format and verifies it with Apple's servers
  • Meanwhile, an Android user subscribes — Google sends a completely different format
  • You build another verification system for Google
  • A user upgrades from Basic to Pro — you need to handle Apple's upgrade rules, which are different from Google's
  • A user's payment fails — Apple sends a notification in their format; Google sends it in their format
  • You're now maintaining two completely separate systems, both complex, both with edge cases

With RevenueCat:

  • User subscribes on iPhone → RevenueCat handles the Apple receipt automatically
  • User subscribes on Android → RevenueCat handles the Google receipt automatically
  • Both subscriptions show up in one RevenueCat dashboard
  • Your app asks RevenueCat one question: "Is this user on Pro plan?" → Gets back: Yes or No
  • If a payment fails, RevenueCat tells you in one standard format regardless of platform
  • If a user upgrades, RevenueCat handles it and just updates the answer to your question

Is It Free?

Yes, mostly free — especially when you're starting out.
Here's how the pricing works in plain English:
Your Mobile Revenue Per MonthWhat You Pay RevenueCat
Less than $2,500Completely free
$2,500 to $10,000About $99/month
More than $10,000Roughly 1% of that revenue
So if your app makes $1,000/month from mobile subscriptions — you pay RevenueCat nothing.
If your app makes $5,000/month from mobile subscriptions — you pay about $99/month, which is roughly 2% of your revenue. Very reasonable.
Important: This is only for mobile revenue (App Store + Play Store). Your Stripe / web revenue is separate and RevenueCat doesn't charge you anything on that.

What RevenueCat Does NOT Do

Just to be crystal clear:
  • ❌ It does not process payments — Apple and Google still do that
  • ❌ It does not replace Stripe on your website
  • ❌ It does not take a cut of your revenue on top of what Apple/Google already take
  • ✅ It just manages, tracks, and simplifies everything related to mobile subscriptions

One-Line Summary

RevenueCat is a middleman service that sits between your app and Apple/Google, so instead of building two complex billing systems yourself, you build one simple integration and RevenueCat handles the rest. It's free until you're making real money.
This is a shared conversation. Sign in to Orris to start your own chat.