11.6 — External Payments, Stripe & EU DMA

Opening scenario

You’re shipping a B2B SaaS app with a $50/seat/month price. Your CFO sees the StoreKit invoice for the first month: $5,000 in revenue, $1,500 to Apple. “That’s our entire AWS bill,” she says. “Can’t we just use Stripe?” The answer is the most nuanced question in App Store policy. The rules differ for digital vs physical, consumer vs reader, US vs EU, and the right answer for your app might be “yes,” “no,” or “partial — and Stripe only for the upgrade webhook.”

This chapter is the decision table that saves your margins legally.

Context taxonomy

ScenarioRequired payment processor (2026)Apple cut
Digital goods/subscription consumed in-appStoreKit (worldwide default)15–30%
Same, but in EU (DMA)StoreKit OR alternative processor17% Apple + 0.5€ Core Tech Fee/install/yr
Same, USStoreKit OR external link to web checkout (post-2024 court ruling)27% even if external
Physical goods (shipped to door)Stripe / your own processor — Apple has NO claim0%
Real-world services (rideshare, food delivery, hotel booking)Stripe / your own processor0%
B2B Custom Apps (Apple Business Manager)Apple invoicing OR direct contract0% on Custom Apps
Reader apps (Netflix, Spotify, Kindle) — no in-app signupExternal web payment0% (but can’t sign up in-app)
Cross-platform service with web-first signupExternal web payment0% (but no upsell flows in-app)
Consumable game itemsStoreKit only15–30%
Cryptocurrency, NFTsStoreKit for minting fees, external wallets for tradingMurky; mostly StoreKit

Concept → Why → How → Code

Concept. Apple’s IAP rules apply only to digital goods/services consumed within the app. The boundary moves: court rulings, the EU Digital Markets Act, and category-specific exceptions (reader apps) carve out territory where you can use Stripe or your own processor.

Why. Apple’s cut is 15–30%. Stripe’s is ~2.9% + $0.30. For high-margin or high-ticket products, that’s a 5–10× difference. The legal architecture of who-pays-whom is the most important financial decision your app makes.

Apple’s actual cut in 2026 (post court + DMA)

Worldwide default
  Year 1 of subscription           30%
  Year 2+ of subscription          15%
  One-time IAP                     30%
  Small Business Program           15% (< $1M/year)

US-only (post Epic Games v. Apple 2024)
  External purchase link allowed   27% (Apple still claims commission)

EU-only (post DMA 2024)
  Alternative app stores allowed   0% to Apple (paid to other store)
  Alternative in-app payment       17% (year 1) / 10% (year 2+) Apple
  Core Technology Fee              €0.50 per install/year over 1M

Reader apps (Netflix, Spotify, Kindle, Audible patterns)
  Can link out to web              0% to Apple if no in-app purchase
  Cannot have signup in-app        ← the key constraint

Decision table

Your scenarioUseRationale
Indie productivity sub, $5/mo, < $1M ARRStoreKitSmall Business Program = 15%; friction-free buy
B2B SaaS sub, $50/seat, $5M ARRStripe via web signup, app is “reader” patternSave $750k/year vs StoreKit 30%
Casual game with consumable coinsStoreKitNo legal alternative; gem stores are IAP-only
Shopify-style commerce appStripe / your own processorPhysical goods; Apple has no claim
Uber-style on-demand serviceStripeReal-world service; Apple has no claim
Music streaming, EU launchAlternative payment + 17% Apple OR StoreKitDMA compliance window; weigh dev cost vs savings
News subscription, USStoreKit + optional external link to lower web priceCourt ruling allows the link; can A/B prices
Enterprise B2B Custom AppApple Business Manager direct invoice0% Apple commission on Custom Apps
Crypto exchange appStoreKit for fees, external wallets for tradingSpot trading isn’t IAP; Apple permits

The Reader App pattern (Netflix model)

A “reader app” provides access to content sold elsewhere. Rules:

  • ✅ Show content (videos, books, news) to logged-in users
  • ❌ No signup or pricing inside the app
  • ❌ No “subscribe now” buttons
  • ✅ Login form is OK
  • ✅ “Manage subscription” link to your website is OK
  • ✅ External Link Entitlement (apply to Apple) → one in-app link to your website’s signup page

Implementation: an “empty-state” view for non-subscribers with a Login button and tasteful copy “Sign up at netflix.com” — no price, no Subscribe button.

// Acceptable reader-app empty state
struct EmptyAuthView: View {
    var body: some View {
        VStack(spacing: 16) {
            Image(systemName: "tv")
                .font(.system(size: 80))
            Text("Welcome to Acme Stream")
                .font(.title.bold())
            Text("Sign in to watch")
                .foregroundStyle(.secondary)
            Button("Sign In") { /* show login */ }
                .buttonStyle(.borderedProminent)

            // External link entitlement (separately requested from Apple):
            Link("Don't have an account? Visit acme.com",
                 destination: URL(string: "https://acme.com/signup")!)
                .font(.caption)
        }
    }
}

Stripe integration for physical goods

// Buying a physical t-shirt — Stripe is fine, Apple takes 0%
import StripePaymentSheet

@MainActor
final class CheckoutViewModel: ObservableObject {
    @Published var paymentSheet: PaymentSheet?

    func prepareCheckout(amount: Int, currency: String) async throws {
        // 1. Your backend creates a Stripe PaymentIntent
        let resp = try await api.post("/checkout/intent", body: ["amount": amount, "currency": currency])
        let clientSecret = resp["client_secret"] as! String

        // 2. Configure Stripe SDK
        var config = PaymentSheet.Configuration()
        config.merchantDisplayName = "Acme Store"
        config.applePay = .init(merchantId: "merchant.com.acme", merchantCountryCode: "US")

        paymentSheet = PaymentSheet(paymentIntentClientSecret: clientSecret, configuration: config)
    }
}

Apple Review accepts this because the user is buying a physical item. The Apple Pay surface is fine — Apple Pay ≠ IAP; Apple Pay processes payments for any kind of goods.

External Purchase Link Entitlement (US, post-2024 ruling)

For digital goods sold to US users, you can add a single in-app link to your website’s checkout:

  1. Request the com.apple.developer.storekit.external-purchase-link entitlement.
  2. Add the System Disclosure Sheet (Apple-required UI) explaining the user is leaving the app.
  3. Apple still claims 27% commission on resulting purchases.
Math vs StoreKit:
  StoreKit subscription $9.99    → Apple takes $3.00 (30%)  → you net $6.99
  External link, web checkout    → Apple claims $2.70 (27%) → you pay
                                   Stripe takes $0.59 (~6%)
                                   You net $6.70 minus reporting overhead

  Savings: marginal. Worth it only if you offer a lower web price ($7.99 instead of $9.99)
  → user pays less, you net the same, Apple gets less. Spotify uses this pattern in EU.

EU Digital Markets Act (DMA) — what’s actually available in 2026

Since March 2024, EU users can:

  • Install apps from alternative app stores (AltStore PAL, Setapp, Epic Games Store on iOS)
  • Pay via alternative payment processors inside iOS apps
  • Use NFC chip via alternative wallet providers

Developer choices in EU:

  1. Stay on App Store + StoreKit: same 15/30% as before (with Small Business Program).
  2. Stay on App Store + alternative payment: 17% Apple commission year 1, 10% year 2+ on transaction value, plus €0.50 Core Technology Fee per first install per year (after 1M installs/year).
  3. List in alternative app stores: 0% Apple commission on transactions, but still pay €0.50 CTF if > 1M installs/year.
Math for a 5M install/year free app at $1 ARPU
  App Store + StoreKit            $1.00 × 30% = $0.30 Apple cut, no CTF
                                  → $0.70 net per install
                                  → $3.5M net on 5M installs

  Alt payment                     $1.00 × 17% = $0.17 Apple
                                  + €0.50 × 4M = $2M CTF (first 1M is free)
                                  → $0.83 - $0.40/install (CTF averaged) = $0.43
                                  → $2.15M net  ← worse at this scale

  Alt app store (no App Store)    0% Apple commission, $0.40/install CTF
                                  → $0.60 net  → $3M net

The CTF is the catch. For high-volume free apps, DMA “freedom” can cost more than the App Store.

Apple Pay vs StoreKit IAP — they are different

A constant source of confusion: Apple Pay is a wallet/payment-credential service. StoreKit IAP is Apple’s billing system for digital goods. Apple Pay is fine for any purchase type; it’s not the IAP system.

✅ Buying a Lyft ride via Apple Pay         → No Apple commission
✅ Buying a Domino's pizza via Apple Pay    → No Apple commission
✅ Subscribing to NYT digital via StoreKit  → 30% Apple commission
❌ Subscribing to NYT digital via Apple Pay → REJECTED by App Review (must use StoreKit)

The test isn’t how you charge; it’s what you’re charging for.

In the wild

  • Spotify in EU uses alternative in-app payment for new subscribers, passing the ~13% savings to users as lower prices.
  • Netflix is the canonical reader-app pattern: no in-app signup, login-only.
  • Amazon Kindle is the same reader pattern — you can read books bought on amazon.com but can’t buy them in the app.
  • Patreon got an exception for the creator-economy use case after fighting Apple publicly in 2023; creators can be paid via external processors.
  • Epic Games (Fortnite) runs its own iOS store in EU (post-DMA) — bypassing both App Store distribution and Apple’s commission entirely.
  • Telegram Premium uses StoreKit on iOS but linked to a Telegram-internal subscription so users can also pay on web — bridging the systems.

Common misconceptions

  1. “DMA means no more Apple cut in EU.” False. Alternative payment still pays Apple 17% + Core Technology Fee. The CTF can dwarf the savings.
  2. “I can use Stripe for any subscription in my app.” False for digital goods. True for physical goods, real-world services, and B2B Custom Apps. Always.
  3. “The US ruling means I can stop using StoreKit.” False. You can add an external link, but Apple still claims 27% on external purchases. You’ll need reporting infrastructure.
  4. “Apple Pay = StoreKit IAP.” No. Different APIs, different policies, different commission structures.
  5. “Reader apps can charge in-app.” Only if they don’t have a signup flow — and even then Apple is very picky. Stick to the Netflix model exactly.

Seasoned engineer’s take

TIP. Before architecting payments, write down: what exactly am I selling, where is it consumed, who is the user (consumer/business), which territory. The decision table flows from those four. Skip the analysis and you’ll re-architect later under regulatory pressure.

WARNING. Apple’s policies change yearly. The 2024 US ruling, 2024 DMA, 2025 Patreon exception, and 2026 reader-app updates are all post-2020 changes. Subscribe to appstoreupdates.apple.com and revisit your strategy annually.

The right mental model: payment architecture is a regulatory + business + technical decision, not just technical. For most consumer apps the answer is “StoreKit, take the cut, ship fast.” For high-margin B2B and physical-goods apps, not using Stripe is leaving money on the table. Know which one you are.

Interview corner

Junior“What’s the Apple Tax?” Apple’s commission on IAP and subscriptions: 30% for year-one subs and one-time IAPs, 15% for subs after year one or for Small Business Program participants (< $1M/year).

Mid“When is it legal to use Stripe instead of StoreKit on iOS?” For physical goods (shipped items), real-world services (rides, food, hotels), B2B Custom Apps via Apple Business Manager, and reader-app login flows (no in-app signup). For digital goods consumed in-app: StoreKit only in worldwide default; US allows external links (27% Apple); EU allows alternative payment (17% + CTF) under DMA.

Senior“You’re CTO of a B2B SaaS app at $10M ARR going iOS-first. Design the payment architecture.” Web-first signup (Stripe). The iOS app is a reader-pattern client — login-only, no pricing. Apply for the External Link Entitlement to add one “Visit acme.com for plans” link inside the app. Save ~$3M/year in Apple cut. Bonus: in EU, evaluate alternative app store distribution for users with strong corporate IT controls who use AltStore PAL or similar.

Red flag“We charge subscriptions via Stripe inside our iOS app.” You’ll be rejected by App Review and likely lose your developer account on second infraction. Either switch to StoreKit or pivot to the reader-app pattern.

Lab preview

The labs cover RevenueCat-based StoreKit and ASC pricing automation. The Stripe/reader-app patterns are architectural decisions, not implementation labs — but the patterns shown here are immediately usable in any production codebase.


Next: 11.7 — How Major Apps Handle Payments