Build With RevenueCat

Build a customized mobile subscription business with RevenueCat. We do the heavy lifting of normalizing subscribers from any source and maintain a single source of truth for subscription status, so you can get back to building your app.

RevenueCat is a powerful, secure, reliable, and free to use in-app purchase server with global support. All you need to get started is an API key.

Get Started    REST API Endpoints

Stripe Web Payments

Allow your users to subscribe to your app via Stripe

RevenueCat currently supports web payments through Stripe. This allows you to let users subscribe on your own website, and automatically unlock access to the same subscription content through the Purchases SDK.

Remember that it is against Apple's App Store terms to provide a different system than in-app purchases for digital goods. Make sure you don't promote your web subscriptions from inside your app. Your app may get rejected, or banned.

Before launching your Stripe integration, be sure to read the limitations that apply to working with web payments.

1. Connect with Stripe

Log into RevenueCat and click the Connect with Stripe button in your account settings. Follow the instructions to either create a new account with Stripe, or sign in with your existing one. RevenueCat only requests read permissions from Stripe. We will not be able to issue charges on your behalf. You will still maintain full control through the Stripe dashboard.


App owner must connect with Stripe

Only the app owner can connect a Stripe account for their apps - no collaborators will be able to add or remove a Stripe connection.

2. Create products and plans on Stripe

Create your Stripe product(s) using their billing dashboard. In Stripe, a product can have multiple pricing plans. These are useful if you want to offer different price points for the same product and work similar to offerings and products in RevenueCat.

You can read more about products and plans in their official documentation.



RevenueCat only supports per unit and recurring quantity subscription plans. Metered usage and tiers are currently not supported.

3. Create subscriptions on Stripe

The typical setup consists of a website that uses Stripe checkout to tokenize the customer payment information, and send this information to your server. After that, your server will be able to subscribe your customer to a product.

On the server-side, you can use Stripe's REST API or their library for your favorite programming language. An example can be found here.

Alternatively, you can also use the Stripe dashboard for manually creating the subscriptions for testing.


Subscriptions only

Currently, the Stripe integration only supports subscription products.

4. Add your Stripe products to your app's entitlements

Add your Stripe products to your app's entitlements to easily group your products. RevenueCat will send Stripe subscriptions to your app the same way we do for the other App Stores.


Product Identifier should be a Stripe product Id

In order for Stripe subscriptions to unlock entitlements, you must set a Product Identifier in the desired Offering to match a Stripe product id exactly.

5. Send Stripe tokens to RevenueCat

You can send your Stripe subscriptions to RevenueCat through the POST receipt endpoint.

The only required fields are:

  • fetch_token: Your Stripe subscription ID
  • app_user_id: The App User ID that the subscription should be applied to


  • X-Platform: Should be set to stripe.
  • Authorization: It should be Bearer YOUR_REVENUECAT_API_KEY

Stripe subscriptions are automatically refreshed by RevenueCat the same way as subscriptions from the app stores. This means that it may take up to two hours for a Stripe cancellation to be reflected in the RevenueCat backend. Alternatively, you can re-post the same subscription to RevenueCat after a user has cancelled, and it will be updated right away.

curl -X POST \ \
  -H 'X-Platform: stripe' \
  -H 'Authorization: Bearer YOUR_REVENUECAT_API_KEY' \
  -d '{ "app_user_id": "my_app_user_id",
  "fetch_token": "sub_xxxxxxxxxx"


App User ID is required

In order for a Stripe subscription to be honored within an app, the Purchases SDK needs to be configured with the same App User ID associated with the Stripe subscription.

6. Test your Stripe subscriptions

You can test your implementation for Stripe and RevenueCat by using Stripe's test mode.

The subscriptions you create using this environment will be considered sandbox transactions in RevenueCat.

Working with web payments

Subscription payments through the web are processed with the same logic as subscriptions through the app stores. This means there are currently some limitations that must be considered for web payments to work properly.

Supported plans

Only Package Pricing and Standard Pricing subscription plans with per unit pricing are supported. Metered usage and tiers are currently not supported. This is currently how the app stores behave.

Upgrading and downgrading

Prorated amounts are not factored into MRR or Revenue calculations. If someone changes plans, the default behavior in Stripe is to give the user credit for any unused portion and bill them for the remainder of the new plan cost. You need to disable this behavior manually, or by passing the prorate=false flag through the Stripe API for accurate revenue calculations in RevenueCat.


When a subscription is cancelled in Stripe, you have two options:

  1. Immediate cancellation: The subscription is cancelled immediately, with the option to pro-rate or not.
  2. Cancellation at the end of the period: The subscription is cancelled at the end of the current billing period (this is how the app stores behave).

Both options are supported by RevenueCat, but the MRR and Revenue calculations will only be accurate in the first case if you choose not to prorate. Also, refunds in Stripe are not accounted for in RevenueCat.

Cancellations in Stripe are automatically detected by RevenueCat the same way as subscriptions from the app stores. This means there may be up to a two-hour delay between when the subscription is cancelled in Stripe and when the cancellation is reflected in the RevenueCat backend.


Subscription status will still be tracked correctly if Stripe coupons are applied, but pricing in RevenueCat does not take into account any coupons.


That's it!

You can now allow user's to subscribe from the web or within your app, and let them access their subscription anywhere.

Updated about a year ago

Stripe Web Payments

Allow your users to subscribe to your app via Stripe

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.