External Purchases (US Web Checkout)
On the US storefront, apps may link out to a web checkout for digital goods using the
StoreKit External Purchase Link entitlement — and as of mid-2026, court orders have Apple's
commission on those purchases at 0%, with the fee case still moving through district court.
This is the largest indie revenue unlock of the era, and it is reversible by a ruling — so the
engineering rule is: ship it now, architect it so a commission can be flipped on later.
Verify current state before relying on this: the entitlement terms, the commission rate, and
the litigation status have each changed more than once. Treat every number here as
"true as of 2026-07, re-check."
When This Skill Activates
- "Add a web checkout / Stripe / external purchase link" for digital goods
- Deciding IAP vs web checkout for a US-heavy revenue base
- The store-growth audit flags P8.4
- Reviewing an app whose external links might be non-compliant (wrong storefront, no entitlement)
The rules of the road
- US storefront only — elsewhere Guideline 3.1.1 still applies (EU/JP/KR have separate
entitlements/terms; don't extrapolate from the US).
- Entitlement required:
com.apple.developer.storekit.external-purchase-link + matching
Info.plist declaration — a bare Link("Buy", …) without it is still a rejection (see
app-store/rejection-handler §3.1.1).
- Present the link per the entitlement's UI terms (StoreKit's
ExternalPurchaseLink /
disclosure sheet where required). Don't dark-pattern the IAP option away if you keep both.
- Purchases made on the web are your customer relationship — payment processor, refunds,
taxes; Apple's merchant-of-record role no longer applies.
Architecture: the commission flip
Design so that a future "Apple takes N% of external purchases initiated in-app" ruling changes a
config value, not your codebase:
- ✅ Route every in-app-initiated web checkout through one link-out service that stamps the
session (
source=app, timestamp, storefront) — web-organic checkouts stay unstamped. If a
commission returns, it applies to a knowable, logged subset.
- ✅ Keep a single
CommissionPolicy (remote-configurable): rate, applies_to,
effective_date. Report/accrue against it from day one — at 0% it's just a counter.
- ✅ Log day-one analytics: link taps → checkout starts → completions, vs the IAP funnel. The
conversion drop through a web checkout (Apple's sheet, Safari hop, payment form) is real;
whether 0% beats IAP's frictionless 85–70% is an empirical per-app question.
- ❌ Scattering
openURL("https://…/buy") calls through features — un-auditable, un-flippable.
- ❌ Ripping out StoreKit. Keep IAP as a fallback path (non-US storefronts still need it, and
some US users convert better in-sheet).
Decision sketch
| Situation |
Lean |
| Subscriptions, US-heavy, ARPU high enough to absorb processor fees + your own support |
Web checkout for new subs; keep IAP for the rest of world |
| Impulse-priced consumables/unlocks |
IAP — checkout friction eats more than 15–30% commission |
| Existing subscriber base on IAP |
Don't force-migrate; offer web at renewal decision points |
| B2B/prosumer, invoicing needs |
Web checkout regardless of commission math |
Output Format
Status: entitlement present? · storefront scope correct (US-only gating)? ·
link-out service centralized? · CommissionPolicy flippable? · funnel analytics live?
Verdict + the one next step.
References
1---
2name: external-purchases
3description: US web checkout via the StoreKit External Purchase Link entitlement — currently 0% Apple commission (litigation ongoing), how to ship it safely, and how to architect for a commission flip so a future ruling is a config change, not a rewrite. Use when adding external purchase links, weighing web checkout vs IAP, or planning US-storefront pricing strategy.
4allowed-tools: [Read, Write, Edit, Glob, Grep]
5last_verified: 2026-07-16
6review_by: 2027-06-22
7---
8
9# External Purchases (US Web Checkout)
10
11On the **US storefront**, apps may link out to a web checkout for digital goods using the
12StoreKit External Purchase Link entitlement — and as of mid-2026, court orders have Apple's
13commission on those purchases at **0%**, with the fee case still moving through district court.
14This is the largest indie revenue unlock of the era, and it is *reversible by a ruling* — so the
15engineering rule is: **ship it now, architect it so a commission can be flipped on later.**
16
17> Verify current state before relying on this: the entitlement terms, the commission rate, and
18> the litigation status have each changed more than once. Treat every number here as
19> "true as of 2026-07, re-check."
20
21## When This Skill Activates
22
23- "Add a web checkout / Stripe / external purchase link" for digital goods
24- Deciding IAP vs web checkout for a US-heavy revenue base
25- The store-growth audit flags P8.4
26- Reviewing an app whose external links might be non-compliant (wrong storefront, no entitlement)
27
28## The rules of the road
29
30- **US storefront only** — elsewhere Guideline 3.1.1 still applies (EU/JP/KR have separate
31 entitlements/terms; don't extrapolate from the US).
32- **Entitlement required**: `com.apple.developer.storekit.external-purchase-link` + matching
33 `Info.plist` declaration — a bare `Link("Buy", …)` without it is still a rejection (see
34 `app-store/rejection-handler` §3.1.1).
35- Present the link per the entitlement's UI terms (StoreKit's `ExternalPurchaseLink` /
36 disclosure sheet where required). Don't dark-pattern the IAP option away if you keep both.
37- Purchases made on the web are **your** customer relationship — payment processor, refunds,
38 taxes; Apple's merchant-of-record role no longer applies.
39
40## Architecture: the commission flip
41
42Design so that a future "Apple takes N% of external purchases initiated in-app" ruling changes a
43config value, not your codebase:
44
45- ✅ Route every in-app-initiated web checkout through **one** link-out service that stamps the
46 session (`source=app`, timestamp, storefront) — web-organic checkouts stay unstamped. If a
47 commission returns, it applies to a knowable, logged subset.
48- ✅ Keep a single `CommissionPolicy` (remote-configurable): `rate`, `applies_to`,
49 `effective_date`. Report/accrue against it from day one — at 0% it's just a counter.
50- ✅ Log day-one analytics: link taps → checkout starts → completions, vs the IAP funnel. The
51 conversion drop through a web checkout (Apple's sheet, Safari hop, payment form) is real;
52 whether 0% beats IAP's frictionless 85–70% is an *empirical* per-app question.
53- ❌ Scattering `openURL("https://…/buy")` calls through features — un-auditable, un-flippable.
54- ❌ Ripping out StoreKit. Keep IAP as a fallback path (non-US storefronts still need it, and
55 some US users convert better in-sheet).
56
57## Decision sketch
58
59| Situation | Lean |
60|---|---|
61| Subscriptions, US-heavy, ARPU high enough to absorb processor fees + your own support | Web checkout for new subs; keep IAP for the rest of world |
62| Impulse-priced consumables/unlocks | IAP — checkout friction eats more than 15–30% commission |
63| Existing subscriber base on IAP | Don't force-migrate; offer web at renewal decision points |
64| B2B/prosumer, invoicing needs | Web checkout regardless of commission math |
65
66## Output Format
67
68```
69Status: entitlement present? · storefront scope correct (US-only gating)? ·
70link-out service centralized? · CommissionPolicy flippable? · funnel analytics live?
71Verdict + the one next step.
72```
73
74## References
75
76- https://developer.apple.com/documentation/storekit/externalpurchaselink
77- https://developer.apple.com/support/storekit-external-entitlement-us/
78- https://developer.apple.com/app-store/review/guidelines/#in-app-purchase
79- Related skills: `app-store/rejection-handler` (the non-entitled rejection pattern), `generators/subscription-lifecycle`, `monetization` (pricing), `growth/store-growth-audit`