In-App Purchases (IAP)
Why must you use IAP? Per App Store Review Guideline 3.1.1, digital content, digital services, and subscription memberships must be paid via In-App Purchase (IAP). Bypassing IAP (redirecting to web pages, guiding to Alipay/WeChat) triggers rejection and can affect account standing.
Four IAP Types
| Type | English | Use case | Typical example | Purchase behavior |
|---|---|---|---|---|
| Consumable | Consumable | Items that disappear after use | Game coins, hint counts | Repeatable |
| Non-Consumable | Non-Consumable | Buy once, own forever | Unlock full version, remove ads | Buy once (restorable) |
| Auto-Renewable Subscription | Auto-Renewable Subscription | Ongoing service/content | Membership, streaming | Renews periodically |
| Non-Renewing Subscription | Non-Renewing Subscription | Fixed-term service | 3-month content pack | Must repurchase on expiry |
The core question when choosing: is your product a “one-time unlock” or a “continuous service”? One-time unlocks use non-consumable; continuous subscriptions use auto-renewable (better UX, Apple-preferred); short-term content can use non-renewing subscriptions.
Steps to Create IAP
- Go to App Store Connect → select the app → In-App Purchases.
- Click + and choose the IAP type.
- Fill in:
- Reference Name: internal identifier; not shown to users.
- Product ID: the unique identifier called in code (e.g.
com.example.app.coins); immutable after creation. - Localized name and description: provide at least the primary language’s name and description; shown in the purchase dialog.
- Price: choose a price tier or set per-region prices.
- Review Screenshot: show the in-app purchase UI; reviewers need to see the real purchase entry and flow.
- Save and submit for review (IAP and the app version can be reviewed separately, but usually both need approval to take effect).
Product ID Design
- Use reverse DNS:
com.yourcompany.appname.itemname. - Immutable after creation; avoid reusing deleted IDs (historical data/reconciliation would break).
- Globally unique within an app; plan consistency across platforms (iOS/macOS) sharing purchases.
- Prefer semantic names:
com.example.app.vip_monthlyis far more maintainable thanitem1.
Pricing & Revenue
- Revenue share: standard is 30% to Apple; App Store Small Business Program reduces it to 15% (developers earning under ~$1M/year can apply).
- Price tiers: Apple offers fixed tiers (e.g. 1.99…) with automatic currency conversion; you can also set per-region prices.
- Sandbox testing: test IAP with sandbox accounts before release — no real charges.
Advice for beginners: don’t jump into complex subscriptions first. Use a consumable or non-consumable IAP to run through the full “create → sandbox test → review → payout” loop, then extend to subscriptions.
Review Requirements & Common Rejections
- IAP must be genuinely purchasable in-app; reviewers actually walk the flow.
- Review screenshots must show the real purchase UI — no faking.
- Incomplete IAP (missing screenshots, missing localization, unset prices) delays or rejects review.
- 3.1.1-related rejections: third-party payment redirects, guiding users to off-store purchase, digital content not using IAP.
Self-Check List
- IAP type chosen correctly (consumable/non-consumable/subscription/non-renewing)
- Product ID uses reverse DNS and won’t conflict later
- Primary-language name and description filled in
- Price tier set (including per-region adjustments if needed)
- Review screenshot uploaded showing the real purchase UI
- Purchase/restore flow fully tested in sandbox
- Product ID in code matches the portal exactly
FAQ
- How do I create sandbox accounts? App Store Connect → Users and Access → Sandbox → create test accounts; sign in to the App Store on the device with one to test IAP.
- How does Restore Purchases work? Non-consumable IAP must provide a “Restore Purchases” entry in-app (
restoreCompletedTransactions) so users don’t buy twice after switching devices. - Must IAP and the app version pass together? They can be submitted separately, but purchases only work once the app is live and the IAP is “approved”.
- Do I need separate IAP for multiple platforms? The same app can share IAP across iOS/macOS (enable Universal Purchase), but each needs configuration and testing.
PreviousMonetization & SubscriptionsConfigure in-app purchases, subscriptions, and promo codes; understand pricing strategy, taxes, and banking so your app generates sustainable revenue.
NextSubscriptionsConfigure auto-renewable subscriptions, understand subscription groups, trials and offers, price tiers, and server notifications.
