In-App Purchase
What does in-app purchase mean?
An in-app purchase (IAP), also called an in-app payment, is any transaction a user makes inside a mobile or desktop application after downloading it. In-app purchases range from one-time items like extra lives or bonus levels to recurring subscriptions that unlock premium features. App developers (particularly game developers) use IAP as a primary revenue stream, often alongside advertising.
In-app purchases are one of the most common app monetization strategies. Many game developers combine IAP with ads. For example, a rewarded video ad might grant in-game currency, which players then spend on upgrades.
Unity offers a built-in in-app purchasing solution for developers building with the Unity engine.
Types of in-app purchases
Most app stores recognize four types of in-app purchases:
- Consumable: Items that are used up and can be repurchased (e.g., in-game currency, extra lives, boost items)
- Non-consumable: Permanent unlocks purchased once (e.g., ad-free upgrades, new levels, character skins)
- Auto-renewable subscription: Recurring charges at a set interval until canceled (e.g., monthly premium memberships, season passes)
- Non-renewing subscription: Time-limited access that doesn’t automatically renew (e.g., 30-day event passes, annual feature access)
The distinction matters because each type has different App Store and Google Play policies around refunds, restoration, and pricing.
How in-app purchases work
When a user taps "Buy" inside an app, the transaction is processed by the platform's app store — Apple's App Store or Google Play, for example. The store handles payment, receipts, and refund policies. The developer receives the sale amount minus the store's commission.
For developers, implementing in-app purchases involves integrating the store's billing SDK, defining products in the store's developer console, and writing code to handle purchase flows, receipt validation, and entitlement delivery.
Cross-platform tools like Unity's In-App Purchasing package simplify this with a single API that works across multiple storefronts.