Guideline 3.1.1 rejection (In-App Purchase): what it means and how to fix it
Your app unlocks digital content or features with a payment method other than Apple's In-App Purchase.
What Apple is saying
Digital goods and features used inside the app (premium features, subscriptions, credits, content) generally have to be sold through Apple's In-App Purchase. Physical goods and real-world services are exempt. Rules on linking to outside payment differ by storefront (the US and EU have their own options), so check what applies to the countries you sell in.
Common causes
A Stripe or web checkout unlocks premium features in the app.
Buttons or links send users to buy outside the app, in a storefront where that isn't allowed.
Purchased content can be unlocked with a code bought elsewhere.
How to fix it
Decide whether what you sell is digital (needs IAP) or physical / real-world (can use your own payments).
For digital items, create the products in App Store Connect and use StoreKit (or a library like RevenueCat).
Remove or region-gate outside purchase links according to the storefront rules you sell under.
Attach the in-app purchases to the version, add review notes on how to reach the paywall, and upload a new build.
Do you need a new build?
Yes.
Reply to App Review
Send this in Resolution Center (App Store Connect → your app → the rejected version) after fixing. Fill in the [brackets].
Hello,
Thank you for the review. [Premium features] are now sold exclusively through In-App Purchase. The products are attached to this submission and can be reached at [path]. This is in build [number].
Got a 3.1.1 rejection you'd rather not deal with?
I've shipped 7 apps of my own and fixed real rejections on them. Invite me to App Store Connect (no Apple ID password needed), and I'll fix it, reply to Apple and resubmit. From $45, with unlimited revisions until the original rejection is approved.