In-App Purchases & Subscriptions
Integrate in-app purchases for one-time content and set up recurring subscriptions through app store APIs.
In-App Purchases & Subscriptions is a free Indie Hacker Mobile Apps lesson on CoddyKit — lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Indie Hacker Mobile Apps learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Monetizing with IAPs & Subscriptions
Welcome to monetizing your mobile app! As an indie hacker, generating revenue is key to sustainability. This lesson introduces In-App Purchases (IAPs) and Subscriptions.
These are ways for users to buy digital goods, services, or access within your app, directly through the app stores.
One-Time Purchases: Consumable
IAPs come in a few forms. First, Consumable IAPs are items that can be used up and purchased again. Think of them like digital currency or power-ups.
- Examples: Game coins, extra lives, hints, temporary boosts.
- Once used, they are gone and the user can buy more.
- These are often critical for 'freemium' game monetization.
One-Time Purchases: Non-Consumable
Next are Non-Consumable IAPs. These grant permanent access to content or features after a single purchase. They don't expire or get used up.
- Examples: Removing ads, unlocking premium features, full game versions, digital books.
- Users buy them once and own them forever.
- These purchases should be restorable if a user reinstalls your app or gets a new device.
Recurring Revenue: Subscriptions
Auto-Renewable Subscriptions are a powerful monetization model for ongoing access to content or services. Users are automatically charged on a recurring basis (e.g., monthly, yearly).
- Examples: Premium content in a news app, ad-free access to a streaming service, advanced features in a productivity app.
- They continue until the user cancels them.
- Many apps offer free trials to attract subscribers.
The IAP Integration Flow
Regardless of the type, the basic flow for integrating IAPs and Subscriptions is similar:
- Define Products: Set up your IAPs in App Store Connect / Google Play Console.
- Display Products: Show product details (price, description) in your app.
- Initiate Purchase: User taps 'Buy', your app requests the purchase.
- Process Payment: App store handles payment and authentication.
- Grant Access: Your app receives confirmation and unlocks content.
Setting Up Products (Conceptual)
Before writing any code, you define your IAPs and subscriptions in the respective app store consoles. This involves:
- Creating unique Product IDs (e.g.,
com.myapp.premium_feature). - Setting up names, descriptions, and pricing.
- For subscriptions, defining durations (monthly, yearly) and optional free trials.
These IDs are what your app will use to reference each specific product.
Initiating a Purchase Request
When a user decides to buy, your app communicates with the platform's billing API (e.g., StoreKit on iOS, Google Play Billing Library on Android).
Here's a simplified pseudo-code of how a purchase might be initiated:
/* Pseudo-code for a purchase request */
// Imagine the user tapped a 'Buy Premium' button
function startPurchase(productId) {
console.log(`User wants to buy: ${productId}`);
// 1. Request product details from the App Store API
// (This step often happens earlier to display prices)
const product = AppStoreAPI.getProductDetails(productId);
if (product) {
// 2. Initiate the purchase flow for this product
// The OS will handle the payment UI (Face ID/fingerprint)
AppStoreAPI.makePayment(product);
} else {
console.error("Product not found or invalid.");
}
}
// Example call
// startPurchase("com.myindieapp.remove_ads");Handling Transaction Outcomes
After a purchase is initiated, your app will receive a transaction update. You must handle various outcomes:
- Purchased: The payment was successful. Grant the user access to the purchased content/feature.
- Failed: Payment error or user cancelled. Inform the user.
- Pending: Payment is awaiting external approval (e.g., family sharing). Wait for further updates.
- Restored: User is re-downloading previously purchased non-consumables or subscriptions.
Server-Side Receipt Validation
For robust security and to prevent fraud, especially with subscriptions, server-side receipt validation is crucial. Your app sends the purchase receipt to your backend server.
Your server then sends this receipt to Apple/Google's verification servers. They confirm the purchase's authenticity, and your server can then securely grant access to the user.
This prevents users from tampering with local receipts to unlock features for free.
Check Your Understanding
Let's quickly check your knowledge of In-App Purchases and Subscriptions.
Recap & Next Steps
You've learned the fundamentals of monetizing with In-App Purchases and Subscriptions!
- We covered Consumable and Non-Consumable IAPs for one-time purchases.
- Explored Auto-Renewable Subscriptions for recurring revenue.
- Understood the basic integration flow and the importance of server-side receipt validation for security.
Next, dive into the specific platform APIs (Apple's StoreKit or Google Play Billing Library) to implement these powerful monetization strategies in your apps!
Frequently asked questions
Is the “In-App Purchases & Subscriptions” lesson free?
Yes — the full text of “In-App Purchases & Subscriptions” is free to read here on the web, and the Indie Hacker Mobile Apps course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Indie Hacker Mobile Apps course, upgrade to CoddyKit PRO.
What will I learn in “In-App Purchases & Subscriptions”?
Integrate in-app purchases for one-time content and set up recurring subscriptions through app store APIs. You practise Indie Hacker Mobile Apps with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Indie Hacker Mobile Apps?
No prior experience is required. Indie Hacker Mobile Apps on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “In-App Purchases & Subscriptions” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Indie Hacker Mobile Apps lesson?
Yes. Every Indie Hacker Mobile Apps lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- In-App Purchases & Subscriptions
- Mobile Advertising Integration
- Pricing Models & Experiments
- Reducing Churn and Maximizing Lifetime Value