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 review verdict
What an App Review session actually approves or rejects, for a worldwide build.
- 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
- 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.
- 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.
Your routes
Five legitimate ways to handle the toll. Most course apps land on the first.
Reader / account model
App is a player: login + owned courses + free previews. Sell on web. Keep 100% of revenue; weaker in-app funnel.
Free previews for discovery
Genuinely-free intro lessons and starter courses create awareness without a paid storefront. Pairs with R1.
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.
US external link
A real "buy on our site" button — US storefront only. Needs region-aware builds; Apple still claims a cut.
1-to-1 tutoring carve-out
Live, two-person coaching can take web/card payment legally. Doesn't cover recorded courses or group sessions.
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 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.
B · Kindle — storefront + sample + "Get book"
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.
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.
The self-check
One sentence that keeps any build on the safe side.
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.