Guideline 3.1.1: When Apple Requires In-App Purchase
23 Jun 2026 · 2 min read · Erik van Kammen
Guideline 3.1.1 is the payments rule, and it rejects more apps than most teams expect: sell digital goods through anything but Apple's In-App Purchase and the build comes back. The rule shifted with external-link entitlements and the EU's Digital Markets Act, so what is allowed now depends on what you sell and where you ship. The payment plumbing, though, is visible in your binary — which makes the risk catchable early.
The core rule is unchanged: if your app unlocks features, content, or digital goods used inside the app, that purchase generally has to go through Apple's In-App Purchase. You cannot route users to a web checkout to buy digital content. What changed is the edges:
| Scenario | Payment path |
|---|---|
| Digital goods used in the app | Apple In-App Purchase (StoreKit) |
| Physical goods / services consumed outside the app | Any payment method |
| External purchase link (US, post-Epic) | Allowed with the entitlement + disclosure |
| Alternative payment in the EU (DMA) | Allowed with the entitlement |
| Reader app account management | External Link Account entitlement |
The exceptions are real, but each one is conditional. Assuming you qualify is how teams get rejected.
Whether 3.1.1 applies depends on what you sell — a product and legal judgment, not something a scan decides. But the technical signals that commonly trigger a 3.1.1 review are detectable in the build:
A scan flags the contradiction — "you ship a web-payment SDK and digital-purchase language but no StoreKit and no external-link entitlement" — and you confirm whether your model actually requires IAP.
AppCompliance surfaces the payment SDKs in your binary and the StoreKit and entitlement signals next to them, and can gate the check in CI. It tells you what the binary does; you decide whether your business model puts you inside 3.1.1.
Everything technical in this post is checkable from the build itself, and that is exactly what AppCompliance does: upload an iOS or Android build, and minutes later you have every issue that would get it rejected, with the exact fix next to it.
One email when we open the doors. No spam, just the launch.