In-App Purchases (IAP)

Four IAP Types

TypeEnglishUse caseTypical examplePurchase behavior
ConsumableConsumableItems that disappear after useGame coins, hint countsRepeatable
Non-ConsumableNon-ConsumableBuy once, own foreverUnlock full version, remove adsBuy once (restorable)
Auto-Renewable SubscriptionAuto-Renewable SubscriptionOngoing service/contentMembership, streamingRenews periodically
Non-Renewing SubscriptionNon-Renewing SubscriptionFixed-term service3-month content packMust repurchase on expiry

Steps to Create IAP

  1. Go to App Store Connect → select the app → In-App Purchases.
  2. Click + and choose the IAP type.
  3. 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.
  4. 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_monthly is far more maintainable than item1.

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. 0.99,0.99, 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.

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.