In-app purchases and subscriptions with RevenueCat

Subscriptions, credit packs and paywalls on the App Store and Google Play: we built Rigel’s and LydiaVault’s revenue on RevenueCat.

We add subscriptions, in-app purchases and paywalls to your mobile app with RevenueCat. Rigel and LydiaVault run this setup in both stores.

Last updated:

What we have built with it

All of them are live; store pages and details are on the Products page.

Rigel

AI video app

Subscriptions and credit packs; the paywall runs on RevenueCat Paywalls, and purchase and renewal events reach the server by webhook and update credits.

See the product

LydiaVault

AI budgeting coach

A premium subscription; the paywall opens through separate placements for moments such as linking a bank, using the AI chat or creating a savings goal.

See the product

What RevenueCat does for in-app purchases

If you sell something digital in a mobile app (a premium feature, a subscription, credits), you have to take the payment through the App Store’s and Google Play’s own billing. The two stores differ in their APIs, receipt validation and subscription states. RevenueCat is a layer on top of both: it validates the purchase, keeps what each user is entitled to in one place, and tells your server about events such as renewals, cancellations and refunds.

Where RevenueCat fits well

  • You sell a digital product such as a subscription or credits in your app
  • You want the same user to have the same entitlements on iOS and Android
  • You want to change the paywall’s design and offers without shipping a new release
  • You want to track renewals, cancellations and revenue on your own server too

Where you do not need RevenueCat

  • The app sells physical goods or a service delivered outside the app: store billing is not required, and a payment provider such as iyzico can be used
  • There is no paid content in the app, or revenue comes only from ads
  • You sell one simple product on one platform and the store’s own tools are enough

How we set it up in Rigel and LydiaVault

The two apps earn money differently, so they use RevenueCat differently. In Rigel, making a video takes credits; subscriptions and one-off credit packs are sold side by side, and the server keeps the credit balance. LydiaVault has a single premium entitlement, and the app reads whether the user has it straight from RevenueCat.

RigelLydiaVault
What is soldSubscriptions and credit packsA premium subscription
PaywallRevenueCat Paywalls; close-button settings come from Firebase Remote ConfigRevenueCat Paywalls; access hangs on a single premium entitlement
Account linkPurchases are tied to the user’s account at sign-inThe RevenueCat user switches on sign-in and sign-out
Server sideRevenueCat webhooks update credits and subscription statusPremium status is read from RevenueCat in the app

The right paywall, at the right moment

In both apps we use placements instead of a single paywall: depending on what the user is doing at that moment, a separate offer is requested from RevenueCat. In LydiaVault, linking a bank account, using the AI chat, creating a savings goal and signing up are separate placements; in Rigel, a user without enough credits, adding credits and the profile screen are separate placements. Which offer shows in which placement is changed from the RevenueCat dashboard, and if no offer is set for a placement, the app falls back to the default one.

  • Restoring purchases: when users change phones or reinstall the app, they can get their subscription back. Apple expects apps to offer this.
  • Telling “changed my mind” from an error: when users close the payment sheet themselves, no error message appears; cases such as purchases not being allowed on the device or a store problem get their own message.
  • Webhook delay: in Rigel, credits are applied from the event RevenueCat sends to the server. After a purchase, the app polls the server until the new balance shows up there.
  • Repeated and late events: Rigel’s server records each event under a unique key; if the same event arrives twice it is not processed, and an event older than the subscription’s latest state is ignored.
  • Revenue records: net revenue is worked out from the price, tax and store commission in the event, and the offer the purchase came from is recorded as well.

What we use alongside RevenueCat

react-native-purchases

RevenueCat’s React Native SDK: to fetch offers, purchase, restore and read the user’s entitlements.

RevenueCat Paywalls

The paywall that ships with react-native-purchases-ui. Its design and copy are edited in the RevenueCat dashboard.

Firebase Remote Config

In Rigel, settings such as the paywall close button’s visibility, delay and size change without a new release.

AWS Lambda

In Rigel, the server functions that receive RevenueCat webhooks and update credits and subscription status.

Measurement integrations

In LydiaVault, Firebase and Facebook identifiers are passed to RevenueCat, so purchases are tied to the right user in analytics and ad tools.

How an in-app purchase project runs

  1. 01

    Free scoping call

    30 min

    We talk about what you will sell (subscription, credits, a one-time unlock), which features will be paid and where your store accounts stand.

  2. 02

    Written scope and quote

    We write down the products, the entitlements, the moments the paywall opens and the events the server will react to.

  3. 03

    Weekly releases

    Every week you get a build you can buy from and restore in the stores’ test environments, without paying real money.

  4. 04

    Testing and store review

    A senior QA tests the purchase, restore and cancellation flows before release. In-app products are checked separately in store review; we have been through this with Rigel and LydiaVault.

  5. 05

    The 30 days after launch

    30 days

    We fix the bugs that surface in this period free of charge; after that you can continue with monthly maintenance.

Timelines and budget ranges are on our mobile app development and pricing pages. The store commission is deducted from each sale and RevenueCat bills its fee separately; neither is part of the development fee.

Questions about in-app purchases and RevenueCat

Can I use my own checkout page in the app?

If you sell digital content and subscriptions inside the app, Apple and Google require their own billing as a general rule. Some countries have exceptions that allow linking out to an external payment page, and these rules change often; we check the current rule before release. Physical goods and services delivered outside the app are not bound by this.

What if a user buys on iOS and signs in on Android?

If the purchase is tied to the user’s account, the same entitlements show up on the other platform; that is why Rigel and LydiaVault identify the signed-in user to RevenueCat. Without an account this match cannot be made, so in apps with paid content we plan sign-in from the start.

Does RevenueCat cost money?

It is free up to a certain monthly revenue and then charges a fee based on revenue. The current terms are on RevenueCat’s pricing page, and we estimate the cost together during discovery.

Can I change the paywall later?

Yes. If it is built with RevenueCat Paywalls, the design, copy and offers change from the RevenueCat dashboard with no new app release. Adding a new moment for the paywall to open (a new placement) needs a small change in the app.

Related services

Mobile appMVPProduct design
Contact

Let’s talk about your app’s revenue model

In a free 30-minute scoping call we work out together what you will sell, where the paywall opens and how subscriptions will be tracked.