Can You Use Stripe for In-App Purchases?
Learn about when you can use Stripe and opportunities to save money on fees.
In-app purchases are a huge driver of revenue for app developers. Hundreds of millions of users are ready and willing to pay to unlock additional value from their favorite apps – whether that’s to activate premium features, acquire currency in a game, or to subscribe to a streaming service.
Each platform offers its own framework for implementing and managing in-app purchases. Apple’s App Store uses its StoreKit framework, and Google Play uses its Billing Library. These frameworks are designed to make it easy to implement in-app purchases, but they can be difficult to integrate and maintain – especially for subscriptions. They also take a cut of purchase revenue, usually 15% or 30%, and their functionality is limited.
Given the high commissions imposed by Apple and Google, you may wonder if you can use another payment provider like Stripe for in-app purchases. After all, Stripe has lower fees, and it’s famously easy to integrate. Plus, if you’ve been taking payments on the web, you may already have an account set up with them.
Unfortunately, in most cases Google and Apple require that developers use their native frameworks to facilitate purchases. However, there are a few exceptions. In this post, we’ll explore when you can use Stripe and highlight opportunities to save money on fees.
When You Can Stripe for In-App Purchases
As a general rule, any features or content that are purchased in your app and that are meant to be used within your app (aka “digital goods”), must be done using native frameworks. For example, if you’re selling a subscription to a premium version of your app, that must be done via Apple or Google’s native framework.
However, the iOS App Store Guidelines define a few categories of in-app purchases that don’t have to use their StoreKit framework . These include:
- Goods and Services Outside the App: Physical goods and services offered in the real world fall under this exemption. For instance, if your app sells clothing or offers a ride-hailing service, you could use Stripe to process these in-app purchases.
- Person-to-Person Services: Another exemption applies to apps that offer real-time services between two people, such as virtual tutoring or medical consultations. However, services that are offered to more than one person at once, e.g., a group fitness class, must use IAP instead of Stripe.
The Google Play Store’s terms are mostly similar. One difference from the App Store is that Google Play allows you to use Stripe for in-app purchases if you’re selling digital goods that are meant to be used outside of your app. For example, if you’re selling a subscription to a magazine, you could use Stripe to process these in-app purchases.
Some products and services may fall into a gray area, at which point, it’s up to Apple or Google’s discretion. Unfortunately, you may not get a clear answer until they review your app.
Using Stripe AND Native In-App Purchase
In a lot of cases, developers are not selling digital goods exclusively on their app. For example, you might also sell a subscription to your service on the web. In this case, you can use Stripe to process payments on the web and then unlock access to the subscription or digital product on every device where the user is logged in. RevenueCat provides an SDK and backend which acts as a source of truth for customer subscription status across platforms.
Offering a web based check out is a great way to save on fees and opens up a lot of opportunities for growing your app. You can email offers and discounts to users and point them to your website to avoid the 15% or 30% platform fees. You can also test sending your ad campaigns to web based checkouts instead of to the App Store to see if users convert better on the web with Stripe than in-app.
Advantages of Stripe
You might be asking, ‘why hassle with Stripe at all?’ There are a few reasons why Stripe (or similar tools) are a good alternative when allowed by the app stores’ guidelines.
Stripe Is Cheaper
This is the biggest one for most developers – Stripe’s transaction fees are 2.9% + $0.30 per credit card charge versus Apple and Google’s 15% or 30% cut of revenue from in-app purchases.
Stripe Is Powerful
Using Stripe allows you to manage pricing, subscriptions, and the user experience in ways that Apple and Google’s frameworks don’t support. With this flexibility, you can set up features like dynamic pricing for items, such as adjusting prices depending on the user’s history or what else is in their cart. You can also have more control over the UX by building custom components.
Stripe also gives you deeper access to payment analytics than Apple or Google provide. Through Stripe, you can view more data about payments and your users. The Stripe SDK also offers integrations with other tools you might be using, so you can make sense of data in context. (One example is RevenueCat, where we provide one view for all your subscription data—with deep analytics that consolidates data across platforms.)
Stripe Is Convenient for Users
Stripe’s iOS SDK allows apps to accept payments through Apple Pay, so it’s just as convenient for users as using Apple’s native flow.
Technical Benefits of Stripe
When developing your app, Stripe also offers several technical advantages over native in-app purchases.
Subscription Management and Webhooks
Stripe offers more robust webhooks to manage user accounts and track subscription status. Your application can receive and then handle events from across the user’s lifecycle, including getting notified when a user subscribes or deactivates, when a payment fails, and more.
The App Store and Play Store also offer webhooks, but they don’t cover as wide a variety of conditions. Using RevenueCat can provide access to more fine-grained subscription lifecycle events.
If your app is available on multiple platforms, Stripe can be easier to work with, and it has SDKs for the web, iOS, and Android. User state can be maintained more easily because you only have to communicate with Stripe.
If you use native in-app purchase frameworks, you’ll have to implement purchases separately on every platform and deal with the nuances of each. You’ll also need to manage user state across the events you see happening on each platform. For instance, a user might first create an account on iOS, then pay for a subscription on the web, and then later try to use your app on Android. Your app needs to account for these possibilities and create a consistent subscription experience for the user.
Stripe makes it easy to test your app, allowing you to simulate transactions and failures under various conditions. The App Store allows you to set up sandbox test accounts, but the process is not as simple and flexible as testing with Stripe. Google Play also allows payment testing, but it doesn’t offer much flexibility in the parameters you can test, which makes it difficult to account for the real problems your product can face.
Disadvantages of Stripe
When it is allowed, using Stripe is often a great choice overall. However, it does mean another integration to manage on top of any other services you’re already using. Apple’s StoreKit and Google’s Billing Library work natively with their respective platforms, so some developers may prefer to stick with them for simplicity. This is another reason developers choose RevenueCat. You only have to manage one simple integration, and we handle the rest for you.
Another potential disadvantage of Stripe is that conversion rates are often lower than with App Store and Google Play billing. Not everyone has Apple Pay or Google Pay set up on their devices, and for those that don’t, having to enter their credit card number can cause enough friction to make them abandon the purchase.
And don’t underestimate the trust consumers have for App Store and Play Store billing. When signing up for a subscription, potential customers might be nervous that you’ll make it hard to cancel, whereas both Apple and Google make it easy to cancel subscriptions and even get refunds.
You also want to consider chargebacks, payment authorization rates, and even dunning (getting people to update their credit cards when the payment is declined or the credit card is no longer valid). Apple and Google both have built very sophisticated payment systems that have very high authorization rates and handle grace periods, dunning, and other issues better than Stripe does out of the box.
Lastly, Stripe does handle some aspects of tax calculation and collection, but does not automatically remit taxes nor manage compliance and other tax/legal responsibilities for you. There are third-party services like Avalara that integrate with Stripe to help with these things, but their fees on top of Stripe’s fees start to eat into some of that cost savings that make Stripe attractive in the first place.
In the end, your in-app purchase options will be constrained based on what kind of products your app offers. Whether you’re using Stripe, working with native in-app purchase frameworks, or both, RevenueCat simplifies the implementation of purchases and subscriptions. With our easy-to-use SDKs, pre-built integrations, and deep analytics, RevenueCat makes offering subscriptions hassle-free. Sign up for a free trial today to see how RevenueCat can help your app.