Answers · Mobile

How much do Apple and Google take from an app subscription?

Fifteen percent for developers under the small business thresholds on both platforms, thirty percent above them. Apple's programme applies under one million dollars a year; Google's reduced rate applies to the first million. Neither is automatic: you apply. Stripe's fee on the web is under three percent, which is the comparison that matters for pricing.

The numbers to price against

Channel Commission
App Store, small business programme 15%
App Store, standard 30%
Play, first million per year 15%
Play, above that 30%
Stripe on the web roughly 2.9% plus a fixed fee

Rates and thresholds change, and they have changed more than once recently. Check the current terms before you set a price rather than trusting a number in any article, including this one.

Apply to the programmes

Both reduced rates require enrolment. Missing it is a five-figure mistake at moderate revenue, and nothing prompts you.

What this means for pricing

You have three options and they are all legitimate:

  • One price everywhere, and absorb the difference on mobile.
  • A higher price in the app, which both stores permit.
  • Web only for purchase, with the app read-only for subscribing.

The third is what many products do, and the rules on what you may say about it inside the app are the part that moves. Check the current guidelines before writing that copy.

Your code does not care

Subscription.activate!(account, plan: :pro)

Whether a Stripe webhook or a verified App Store receipt made that call, the same row is written in app/models/subscription.rb and app/models/entitlement.rb reads it the same way. So the commission is a pricing decision, not an architectural one, and changing your mind later does not mean changing gated controllers.

Model it before you ship

bin/rails runner 'puts KitPrice.current.cents'

Take your intended price, remove 15 percent, and check the result is still a business. If most of your customers will come through mobile, that number is your real revenue per customer.

Related questions

Do I have to use Apple's in-app purchase for subscriptions?

Inside the app, yes, for anything digital your users consume in the app. Apple takes 15 to 30 percent and rejects apps that link out to an external checkout for it. On the web, in a browser, you keep using Stripe. The same account can be entitled by either path.

How do I tell if a request came from the native mobile app?

Use the hotwire_native_app? helper in app/controllers/application_controller.rb. The shells append "Hotwire Native" to the user agent, and the helper reads it. That check is how you show the native purchase trigger in the app and the Stripe button on the web, which the store rules require you to get right.

How does a native in-app purchase activate access on my server?

The app completes the purchase natively, then posts the receipt to /iap/purchase. Your server verifies it with Apple or Google through the store adapters and calls the same Subscription.activate! a Stripe checkout would. One entitlement row, two possible ways of paying for it.