iOS vs. Stripe Renewable Subscriptions for Mobile Apps

There are two ways to provide auto-renewable subscriptions on iOS apps. First, you can use native in-app subscriptions managed by Apple. You have to pay 15%-30% app store commission on every transaction, and you are limited with subscription management options by Apple’s infrastructure and policies. Second, you can consider using Stripe or another external payment provider.

With Stripe, you pay 2.9% + 30¢ per card charge +1% for non-US cards +1% if currency conversion is required. Still, in the worst-case scenario, you are paying a 4-5% fee vs. 15-30% on the App Store. So, it’s worth exploring the Stripe option further and considering using it as an alternative payment option for a subscription app. 

Besides a significantly lower commission, providing subscriptions on the web can unlock more accurate marketing attribution for your user acquisition flow. The marketing attribution on the iOS platform became very limited after Apple enforced strict ad tracking options.

Apple policies on using third-party payment solutions like Stripe

You can’t use Stripe directly in your app if you are selling virtual services. For example, if you are monetizing any utility app, game, or essentially anything where the service is entirely digital and provided wholly within your app. Such apps with Stripe or any third-party payment option won’t get through Apple’s review. And even if it gets past the review, your app could be removed from the app store anytime.

How do you use Stripe to provide subscriptions for mobile app users? 

You can implement the onboarding and subscription flow outside the App Store using a mobile web page before a user downloads and starts using your app.

Important notice, as of 2022, Apple limits cases when you can promote and direct your app users to external payment options from within the app. That’s why in most cases, you need to get users to subscribe or start a trial first and then refer them to the app. You can find the relevant details of the App Store payments policy here. Check paragraph 3.1 Payments for the details. In some cases, you can contact your app users to share information on external payment options according to Apple:

“Developers can send communications outside of the app to their user base about purchasing methods other than in-app purchase.”

But there is specific guidance on what kind of apps and services can do that, so you should study carefully if this applies to your app.

Technical Subscription Implementation Details: App Store (iOS) Subscriptions

Let’s look at the technical aspects of renewable in-app subscription implementation on iOS. Though Apple provides some tools for that, you do need to have a robust backend infrastructure to manage native in-app subscriptions. In short:

  • You need to store user receipts provided by Apple at the time of the initial transaction (subscription or trial start). Save this receipt to your backend.
  • Use this receipt and Apple’s API to check subscription status from your backend and make this information available within the app.

There are a lot of complexities there, like getting real-time data, supporting Apple’s server-to-server notifications, handling billing issues, upgrades, downgrades, promo offers, and more. But this is required to get accurate and timely data to manage user access and provide the best user experience.

Luckily you don’t need to build everything from scratch these days. We at Qonversion offer an out-of-the-box cloud solution to implement and manage native mobile subscriptions in hours using our SDK. 

From the technical implementation perspective, what’s good with native mobile subscriptions is that Apple takes care of subscription refunds and cancellations. You don’t have to create additional UI to support that.

Stripe Subscriptions

Stripe subscription flow is somewhat similar to Apple’s native subscriptions. You do need a backend to manage Stripe subscriptions in most cases. Stripe provides a token for each customer that you can save to your server. Using this token, you can get the subscription status details from Stripe and manage premium user access accordingly.

How to share subscription status from Stripe to the iOS app?

First, you need some backend logic for user authentication when implementing Stripe subscriptions for a mobile app. You have to create a user object when the user signs up through the web onboarding flow. Then you attach the user’s subscription status received from Stripe to this user in your backend. And finally, once a user downloads the app, you need to ask him to log in and, after identifying him, receive his subscription status on the app from your backend to unlock premium access on mobile. 

This complete web-to-app subscription flow can be tricky to implement and daunting to support. So, we have built an easy-to-use low-code solution to solve that. You still do need to implement your own user authentication flow and store Stripe tokens. But then it’s super easy to share Stripe purchase data and authenticated user IDs with Qonversion. You can do it with our Stripe integration from your backend or using our web SDK. 

Once you set it up, user subscription status is instantly available from Qonversion mobile SDK within your app. It takes just a few lines of code to implement on the mobile side. Here is the code snippet on launching the SDK, authenticating users, and getting users premium status in the app with Swift:

Qonversion.launch(withKey: "projectKey") { (result, error) in  
// Use Qonversion User ID for your needs  
// result.uid
 }

Qonversion.identify("your_customer_user_id")
Qonversion.checkPermissions { (permissions, error) in
  if let error = error {
    // handle error
    return
  }

  if let premium: Qonversion.Permission =
    permissions["premium"], premium.isActive
  {
    // handle active permission
  }
}        

Analytics for Stripe and iOS Renewable Subscriptions

Besides technical implementation challenges, there are other aspects like subscription analytics and data management to consider. You get some analytics features from Apple’s App Store Connect and Stripe. But the analytics provided by the platforms are pretty limited for both.

Understanding your revenue data becomes more challenging if you provide subscriptions on Stripe and Apple simultaneously. That’s another reason why using a solution like Qonversion to implement and manage cross-platform subscriptions can be a better idea. You are getting a complete subscription revenue picture to analyze in one place in an instant.

The latest development on Apple’s third-party payment policies and conclusions

In recent years, Apple has been under pressure to allow third-party payment options on the App Store. There have been several litigations with Apple from companies and governments worldwide. 

Epic Games, one of the most prominent game publishers, sued Apple after Apple deleted the Fortnite game from the App Store for implementing a third-party payment option. But the court has decided that Apple is not acting as a monopolist and can indeed limit the payment options on its platform. At the same time, the court ordered Apple to allow developers to communicate to app users about the external payment options outside the app. 

South Korea has passed a law that Apple and Google must allow developers to use other payment systems on the app stores in 2021. Apple did comply with the regulation, with one significant caveat. Apple allowed developers to use alternative payment options, but it charges a commission of 26 percent for payments made through third-party systems there. In other words, Apple found a technical solution to comply with the regulation but still get its commission. Probably the South Korean government will take further steps to address the situation. 

The pressure on Apple and Google app stores led to the introduction of Apple’s Small Business Program, with the commission reduced from 30% to 15% for developers with under $1M in annual revenue. Google Play has reduced its commission from 30% to 15% for all developers.

We’ll probably see even lower commissions and more flexible payment policies in the future. Meanwhile, it’s perhaps the best time to add a Stipe web subscription as a payment option for your app now.