iOS Playbook · Digital courses · Updated Jun 2026

Apple takes 15–30% on digital goods. Here's what passes review — and what doesn't.

A practical guide to handling (and legally minimising) In-App Purchase for a course business selling worldwide, with two real on-device case studies.

Ships fine Gets rejected Conditional
01

The one rule that governs everything

Get this distinction right and the rest follows.

Apple Pay and In-App Purchase are not the same thing. Apple Pay is for physical goods and real-world services — tickets, food, retail. For digital content used inside the app, like an online course, Apple does not allow Apple Pay at all. It requires In-App Purchase (IAP), which takes a 15–30% cut.

So "I can't use Apple Pay for my courses" is expected behaviour, not a bug. The real question is never Apple Pay vs card — it's IAP vs an external web checkout, and whether your app is even allowed to point users there.

The trigger is Guideline 3.1.1: if your app unlocks access to premium digital content, you must use IAP, and you may not use your own mechanism to unlock it. The penalty for working around this is rejection — sometimes on a later update, after you've already shipped.
02

The review verdict

What an App Review session actually approves or rejects, for a worldwide build.

Allowed in the app Pass
  • A listing and detail screens where every item is free or already owned by that userBrowse, syllabus, lessons, "Continue learning" — all fine for these.
  • Free preview lessons and fully-free starter coursesFree content is never restricted. This is your discovery surface.
  • Login, so existing customers reach what they bought on your site
  • An account / "Manage account" link that opens your site for non-sales purposes
Gets the app rejected Reject
  • A paid course the user doesn't own, shown as something to acquireThis is the core trigger — present even with no button.
  • Any price displayed on an unowned paid course
  • A "Buy / Enrol / Get / Know more" button pointing toward purchase
  • A silent catalog with a "let them figure it out" dead-endThe implicit version of steering is treated the same as the explicit one — and a reviewer who can't see how purchase works rejects under 3.1.1 anyway.
Conditional — depends on region or category Case-by-case
  • US storefront external link. Since the 2025 Epic v. Apple ruling, US apps may link out to a web checkout. But it's US-only, and Apple still asserts a commission (~12–27%) on purchases within a 7-day window, with reporting. The appeal is ongoing, so treat the exact terms as moving.
  • EU external link entitlement. Allowed with the entitlement addendum, Apple's disclosure sheet, transaction reporting, and applicable fees.
  • Reader-app account link. If you qualify as a "reader app" (books, audio, video, news), you get a sanctioned external account link in more regions — see case study B.
  • 1-to-1 live tutoring. Real-time person-to-person services may use non-IAP payment. Group classes and pre-recorded courses must use IAP.
03

Your routes

Five legitimate ways to handle the toll. Most course apps land on the first.

Recommended
R1

Reader / account model

App is a player: login + owned courses + free previews. Sell on web. Keep 100% of revenue; weaker in-app funnel.

Worldwide
R2

Free previews for discovery

Genuinely-free intro lessons and starter courses create awareness without a paid storefront. Pairs with R1.

Worldwide
R3

In-App Purchase

Sell everything in-app through IAP. Full in-app funnel, Apple takes 15–30%. Many course apps absorb it by raising iOS prices.

Worldwide
R4

US external link

A real "buy on our site" button — US storefront only. Needs region-aware builds; Apple still claims a cut.

US only
R5

1-to-1 tutoring carve-out

Live, two-person coaching can take web/card payment legally. Doesn't cover recorded courses or group sessions.

If it fits
04

Case studies — caught on device

Two live apps, recorded on an Indian App Store account, doing exactly this.

A · Spotify — "changes happen outside the app"

Spotify iOS · Premium tab

Spotify shows full plan names, features and "Get started" buttons — but the moment money is involved, it hands off. The tell is the sheet at the end.

  • Plans and benefits are shown as information, not an in-app checkout.
  • The disclosure sheet reads: "Subscription changes happen outside the app — all subscription changes are handled through your Spotify account, outside the app."
  • This rides Spotify's music-streaming entitlement plus the post-2025 linking rules — not a trick available to every app.
Lesson: showing plan info is possible for an entitled category, but the transaction itself is explicitly pushed off-app. A generic course app can't assume the same linking rights.

B · Kindle — storefront + sample + "Get book"

Kindle iOS · amazon.in storefront

The closest thing to what you described: a browsable store, a free sample, and a redirect to Amazon to buy. Every piece is doing specific, legal work.

  • Browsable storefront with categories and book detail pages.
  • "Download / Read sample" — free content, always allowed, no entitlement needed.
  • "Amazon.in/getbook" button + "manage your account on Amazon including purchases and subscriptions" — the reader-app external account link, working here on the Indian store, not just the US.
Lesson: Kindle can do this because it's a designated reader app. The two parts you can copy today, worldwide, are the free sample and the account link — not a priced course grid with a buy button.
05

The setup for a worldwide course app

One global build, no region juggling, no Apple fee.

📱 The iOS app

  • Login screen (existing customers)
  • Free preview lessons + free starter courses
  • "My Courses" — owned content only
  • Lesson player
  • No prices, no buy button, no paid catalog

🌐 Your website

  • Full paid catalog with prices
  • Checkout on Razorpay / Stripe — you keep 100%
  • On purchase, backend grants the entitlement
  • Marketing, ads, email, YouTube → here

web purchase → backend writes entitlement → app login → "what can I play?" → unlock

The piece that actually needs building is the entitlement model: content carries an accessTier (free / paid), users carry entitlements (what they own, from web or IAP), and the server intersects the two and filters per platform — iOS gets free OR owned, web gets everything. Signed, short-lived content URLs do the real locking, since hiding items in the UI satisfies review but not piracy.

06

The self-check

One sentence that keeps any build on the safe side.

Before you ship

Everything visible in the app must be openable right now (free) or already owned. If it's neither, it doesn't belong in the app.