In-App Purchase

Offer extra content and features — including digital goods, subscriptions, and premium content — directly within your app through in‑app purchases, available on all Apple platforms. You can even promote and offer in-app purchases directly on the App Store.

An iPhone in front of an iPad with each displaying different purchase options

Overview

In-app purchases provide a consistent and safe experience facilitated by our world-class commerce and payment system, making it easy for users to manage their purchases and subscriptions over time.

With in-app purchases, users can:

  • Pay quickly in 45 currencies using payment methods associated with their Apple ID, which supports nearly 200 payment methods (including Apple Pay, credit or debit cards, store credit, region-specific methods, and more — all securely stored on file).
  • Access their purchased content on all devices your app supports, and restore purchases on new devices.
  • Use Report a Problem to get help with content they’ve purchased or request a refund.
  • Share eligible purchases through Family Sharing.
  • View a unified purchase history.
  • Manage all of their subscriptions in one place.

In-app purchase types

There are four types of in-app purchases and you can offer multiple types within your app.

Consumable

Provide different types of consumables, such as lives or gems used to further progress in a game, or boosts in a dating app to increase profile visibility. Consumable in‑app purchases are depleted as they’re used and can be purchased again. They’re frequently offered in apps and games that use the freemium business model.

Nonconsumable

Provide nonconsumable, premium features that are purchased once and don’t expire. Examples include additional filters in a photo app, extra brushes in an illustration app, or cosmetic items in a game. Nonconsumable purchases can offer Family Sharing.

Auto‑renewable subscriptions

Provide ongoing access to content, services, or premium features in your app. Users are charged on a recurring basis until they decide to cancel. Common use cases include access to media or libraries of content (such as video, music, or articles), software as a service (such as cloud storage, productivity, or graphics and design), education, and more. Auto-renewable subscriptions can offer Family Sharing.

Learn more about subscriptions

Nonrenewing subscriptions

Provide access to services or content for a limited duration, such as a season pass to in-game content. This type of subscription doesn’t renew automatically, so users need to purchase a new subscription once it concludes if they want to retain access.

Configuring in-app purchases

Before creating in-app purchases and offering them in your app, sign the Paid Applications Agreement and set up your banking and tax information in App Store Connect. To ensure your in-app purchase experience fits well with the rest of your app and effectively showcases your products, review the Human Interface Guidelines and App Store Review Guidelines.

Set up in App Store Connect

Configure in-app purchases in App Store Connect by adding details, such as product name, description, price, and availability. You can also add localizations to ensure that people in regions where your app is available have a seamless purchase experience in their preferred language.

Use StoreKit

After adding the in-app purchase capability to your app in Xcode, use StoreKit to support in-app purchases for a safe, secure purchase experience. The StoreKit framework and in-app purchase APIs handle purchases end to end, including retrieving product information, processing payments, and delivering the product.

Online purchase flows for users in the European Economic Area may be impacted by the European Union’s Strong Customer Authentication requirements. The App Store supports Strong Customer Authentication. We recommend that you verify your app’s implementation of StoreKit to make sure purchases are handled correctly.

Learn more about StoreKit

Determine transaction status

App Store Server Notifications provide real-time updates about transaction status and key events related to in-app purchases, such as a refund or a change in subscription status or Family Sharing access. You can use this information to update your transaction records and to create customized experiences in your app. For example, if someone has turned off auto-renew, you might display a promotional offer to encourage them to resubscribe. To enable App Store Server Notifications, provide a URL in App Store Connect that links to your server.

Determine product entitlements and transaction updates using the App Store Server API. You’ll get the latest status and history for in-app purchase transactions, including status changes that take place outside your app.

Testing in-app purchases

Test your in‑app purchases throughout the development process to make sure your app and server properly handle common purchase scenarios, such as subscription offers, interrupted purchases, or refunds. During early development, you can simulate and test in‑app purchases using Xcode. You can also use StoreKit testing in Xcode to test in-app purchases in a local environment without connecting to App Store servers. Once you’ve configured your in‑app purchases in App Store Connect, use the sandbox environment to test using real product information.

When you’re ready, use TestFlight to gain valuable feedback on your apps and in‑app purchases from internal and external testers. Invite up to 10,000 external testers using just their email addresses or by sharing a public link. In‑app purchases in TestFlight use the sandbox environment, so they’re free to testers and don’t carry over into production once your app is released on the App Store.

Once you’ve finished testing your in-app purchases, you can submit them for review.

Marketing in-app purchases

Once your in-app purchases are published, you can promote them on the App Store and within your app to showcase their value.

Learn more about promoting your apps

In-app events

In-app events are timely events within apps and games — such as game competitions, movie premieres, or livestreamed experiences. People can discover events on the App Store on iOS and iPadOS, giving you a new way to showcase your events and expand their reach. If your event requires an in-app purchase or subscription to participate, this requirement is noted on the event details page.

Learn more

Promoted in-app purchases

On iOS and iPadOS, people can browse in-app purchases directly on the App Store and start a purchase even before downloading your app. Promoted in-app purchases appear on your product page, can display in search results, and may be featured on the Today, Games, and Apps tabs, which can help you showcase content offered within your app and help people understand its value.

Learn more

App bundles

Offer up to 10 of your apps or games in a single purchase. You can create app bundles for paid apps or free apps that offer auto-renewable subscriptions.

Learn more

Promo codes

Give press and influencers early access to your app or in-app purchases with promo codes configured in App Store Connect. You can give away up to 100 promo codes for each version of your app per platform and up to 100 promo codes per in-app purchase.

Learn more

Family Sharing

Apps that offer auto-renewable subscriptions or nonconsumable in-app purchases can enable Family Sharing in App Store Connect to let users share access with up to five family members. With a streamlined, convenient experience, Family Sharing can help you attract subscribers, encourage paid subscriptions, increase engagement, and improve retention.

Learn more

Subscription offers

You can create subscription offers to attract and retain users by providing a free or discounted price for a specific duration of an auto-renewable subscription.

Learn more

Territory-specific pricing

Apps with auto-renewable subscriptions can offer territory-specific prices. You can choose from 200 price points across all available currencies and price tiers to offer appropriate pricing for each location.

Learn more

Providing support

Thoughtful support helps you manage relationships with your users and can lead to higher retention, improved engagement, and better ratings and reviews. Use StoreKit and the App Store Server API to provide more seamless support options and resolve in‑app purchase issues quickly and efficiently.

Handling refunds

Let people request refunds directly within your app by using the beginRefundRequest method and providing a dedicated place in your app for these requests. You can also provide other options — such as technical support or compensation within your app — before the option to request a refund. With Report a Problem, users can easily request refunds for content they’ve purchased through Apple using any device with a web browser.

If youʼve enabled App Store Server Notifications, youʼll receive a notification when someone receives a refund. You can use this information to take action — for example, updating the account balance based on the refund, or restricting access to content unlocked by the in‑app purchase. If you choose to take action, inform the user of any changes and let them know if there’s anything they need to do. You can also identify whether someone has previously received refunds for any in‑app purchases made in your app using the Get Refund History endpoint.

Apple uses a variety of factors to determine whether a refund request is approved or denied. To help inform and improve the refund process, you can send information about a user’s consumable in‑app purchase to Apple when they request a refund. This can include details such as if the purchase was used or if you were unable to deliver the purchase.

Managing purchases

If someone redownloads your app or switches to a new device, be sure to immediately provide access to the content or functionality from their past in‑app purchases. Use the currentEntitlements property in StoreKit to understand a user’s entitlements and provide access accordingly. Your app must also include a restore mechanism for any restorable in‑app purchases, per App Store Review Guideline 3.1.1.

If someone requests support for an in‑app purchase, you can use the Look Up Order ID endpoint to make sure you’re taking action on the right purchase. Simply ask the user for the Order ID provided on their purchase email invoice sent by Apple, then use the endpoint to confirm the invoice and any associated information — for example, whether the user has already received a refund for their purchase — or to match the date and time of the purchase with your records.

Measuring performance

Use App Analytics and Sales and Trends in App Store Connect to understand metrics related to your in-app purchases, including sales by content type, number of paying users, average proceeds per paying user, and more.

View your final proceeds for each month in Payments and Financial Reports in App Store Connect. See your earnings by location and currency, the rates used to convert your earnings from local currencies (when available), as well as any applied taxes and adjustments. You can also download detailed reports of all transactions for each month, including the number of units sold per app or in-app purchase.