How to Create In-App Purchases (IAP) and Subscriptions in Google Play Console: Complete Developer Guide
When developing mobile games and applications, transforming your project into a sustainable, revenue-generating product is one of the most exciting milestones. In the Google Play ecosystem, the official and secure way to deliver premium digital features, passes, and subscriptions directly to users is through Google Play In-App Billing.
Recent updates to the Google Play Console UI have rebranded traditional "In-app products" to "One-time products", while subscriptions are now managed under a modular Base Plan and Offers architecture.
In this comprehensive technical guide, we walk through the exact steps implemented at Arar Games for 15te15 Sports Analysis & System Slip and our retro arcade catalog. We cover creating Remove Ads, Developer Support/Tips, and Weekly/Monthly VIP Subscriptions, complete with UI screenshots, Google's strict character constraints, and C# .NET 9 integration.
1. Core Concepts: Selecting the Right Product Type
Before creating store items in Google Play Console, categorize your monetization model into three main types:
| Product Type | Google Play Classification | Typical Use Case | Quantity / Re-purchase | Restore Purchases |
|---|---|---|---|---|
| Non-Consumable | One-time product (Buy) |
Remove Ads, Lifetime Pro License | Purchased once per user | Automatically restored via Google account |
| Consumable | One-time product (Buy) |
Coins, Extra Lives, Buy Developer Coffee | Infinite re-purchases allowed | Not restored after being consumed |
| Subscription | Subscriptions + Base Plan | Weekly VIP Pass, Monthly Pro Tier | Recurring (Auto-renewing or Prepaid) | Active while subscription period is valid |
2. PART I: Creating a One-Time Product (Remove Ads)
In this section, we create iap_remove_ads, allowing users to permanently remove all banner and interstitial ads.
Step 1: Navigating the Console
Select your application in Google Play Console. From the left navigation pane:
👉 Monetize with Play ➔ Products ➔ One-time products.
Click the blue "Create product" button in the upper right corner.
Step 2: Defining Product ID
The first field in the form is Product ID:
- Format: Lowercase letters, numbers, underscores (
_), and periods (.) only (e.g.,iap_remove_ads). - ⚠️ Strict Rule: Once a
Product IDis created in Google Play Console, it can never be changed or reused, even if the item is later deleted. - Ensure your codebase (
BillingClient.queryProductDetailsAsyncor your service layer) references this exact ID string.
Step 3: Product Name and Description (50-Character Minimum!)
Scroll down to the Product description section:
- Name:
The item title displayed in the user's checkout sheet (up to 55 characters).
Value:Remove Ads - Description:
Google Play enforces a strict minimum length of 50 characters (0 / 200). Submissions with fewer than 50 characters will fail validation.
Sample Copy (92 characters):
Permanently removes all banner and interstitial ads for an uninterrupted, smooth experience.
Step 4: Uploading Product Icon
Google Play requires a dedicated icon for checkout and Play Store promotional displays:
- Format: 32-bit PNG (with alpha channel support).
- Dimensions: 1:1 square ratio, between 512 px and 1080 px per side (e.g., 512x512 px).
- Max file size: 8 MB.
Step 5: Tax, Compliance, and Age Rating
At the bottom under Tax, compliance, and programs:
- Product tax category: Keep the default "Digital app sales".
- Age rating: Select "All ages" or "Same as app's age rating".
- Payment location restriction: Select "No country / region restricted".
Click Next at the bottom right.
Step 6: Purchase Option and Pricing
On the second step:
- Purchase option ID: Enter
default. - Purchase type: Select "Buy".
- Advanced options: Leave "Allow users to purchase more than one" unchecked (since Remove Ads is non-consumable).
- Digital content or service: Select "Digital content".
- Setting Prices:
Click "Set prices" ➔ "Bulk edit pricing". Choose your base currency (TRY) and enter the price (e.g.,29.99). Click "Apply" to let Google automatically compute international exchange rates and local taxes.
- Activate:
Click "Activate" at the bottom right. The product will immediately switch to Active!
3. PART II: Subscriptions and Base Plan Architecture
Subscriptions allow you to offer recurring access to VIP features, continuous algorithmic updates, and live calculators.
Step 1: Creating a Subscription
Navigate to 👉 Monetize with Play ➔ Products ➔ Subscriptions and click "Create subscription".
Enter the identifier and name:
- Product ID:
iap_premium_weekly - Name:
Weekly Premium Pass
Step 2: Subscription Details and Strict Text Rules
Click "Edit subscription details". Google enforces two critical constraints:
- Benefits (Max 40 Characters each!):
Each bullet point must not exceed 40 characters:- Bullet 1 (39 chars):
Full access to 12-15 guarantee engines - Bullet 2 (36 chars):
Live 15-match scores & prize tracker - Bullet 3 (37 chars):
VIP priority queue & ROI simulations
- Bullet 1 (39 chars):
- Description (Min 50 Characters!):
Sample (122 chars):
Full 4-week VIP access to all 12-15 guarantee calculation engines, live tracking, ad-free experience, and ROI analysis.
Upload your 512x512 badge icon, set tax category to "Digital app sales" ➔ "Service", age rating to "All ages", and click Save.
Step 3: Configuring the Base Plan
A subscription must have at least one Base Plan before it can be offered:
- Base plan ID:
weekly-base(ormonthly-base). - Type: Select
Auto-renewing. - Billing period: Select
Weekly(orMonthly). - Grace period: Default
7 daysrecommended.
Step 4: Regional Pricing and Activation
- Under Price and availability, click "Set prices".
- Select TRY and enter
49.90(for weekly) or179.90(for monthly VIP). - Google calculates global prices across all countries.
- Click Save, then click "Activate" to publish the base plan.
Once completed, both your Weekly and Monthly plans will display Active base plans: 1 in your Subscriptions overview!
4. Complete Store Catalog Matrix
The final product matrix synchronized between Google Play Console and our C# codebase:
| Product ID | Title | Type | Price | Base Plan / Option | Summary |
|---|---|---|---|---|---|
iap_remove_ads |
Remove Ads | One-Time (Non-Consumable) | 29.99 ₺ | default |
Permanently disables banner and interstitial ads. |
iap_buy_coffee |
Buy Developer a Coffee | One-Time (Consumable) | 39.99 ₺ | default |
Coffee support tip & supporter badge. |
iap_full_support |
Full Support | One-Time (Consumable) | 99.99 ₺ | default |
Indie ecosystem R&D fund & Gold Supporter. |
iap_premium_weekly |
Weekly Premium Pass | Subscription (Auto-renewing) | 49.90 ₺ / wk | weekly-base |
Unlimited 12-15 guarantee system calculations. |
iap_premium_monthly |
Monthly VIP Pass | Subscription (Auto-renewing) | 179.90 ₺ / mo | monthly-base |
4-week VIP priority queue & live ROI simulator. |
5. Client Code Integration (.NET 9 / Android BillingClient v8.1.0)
For Android MAUI / Blazor Hybrid apps targeting modern Google Play requirements in 2026, reference Xamarin.Android.Google.BillingClient 8.1.0.
Handling purchase responses in our C# state machine:
// StoreModels.cs - Post-purchase state update
switch (productId)
{
case "iap_premium_weekly":
_state.ActiveSubscriptionId = "iap_premium_weekly";
_state.SubscriptionExpiresAt = DateTime.UtcNow.AddDays(7);
break;
case "iap_premium_monthly":
_state.ActiveSubscriptionId = "iap_premium_monthly";
_state.SubscriptionExpiresAt = DateTime.UtcNow.AddDays(30);
break;
case "iap_remove_ads":
_state.IsAdsRemoved = true;
break;
case "iap_buy_coffee":
_state.CoffeeCount++;
break;
case "iap_full_support":
_state.FullSupportCount++;
break;
}
OnStateChanged?.Invoke();
6. Conclusion and Arar Games Showcase
Mastering Google Play Billing with precise Product IDs, text constraint compliance, and clean architecture creates a transparent, smooth user journey and a resilient revenue foundation.
Experience our production apps and indie games live on digital stores:
🎮 Our Games and Applications:
- ⚽ 15te15 Sports Toto Analysis & System Slips:
Mathematical covering algorithms, 12-15 guarantee coupon optimization, and live jackpot simulation.
👉 Get it on Google Play (Android) - 🛡️ Blocked: Pixel Panzer:
Retro pixel tank warfare, ColorWheel element projectiles, dynamic weather, intense boss fights, global leaderboards, and 79 Google Play achievements!
👉 Download on Google Play (Android & PC) | Microsoft Store (Windows PC) - 🎨 Paint Trek:
Arcade space shooter combining quick reflexes, color matching, and strategic upgrades.
👉 Google Play | Microsoft Store (PC & Xbox) - 🚀 Space Dodger:
Fast-paced retro arcade obstacle dodging in deep space.
👉 Get it on Google Play
📢 Studio Channels & Social Media:
Follow our technical blog posts, devlogs, and indie releases:
- 🎵 TikTok: @arargamesstudio
- 📸 Instagram: @arargamesstudio
- 🐦 X (Twitter): @arargamesstudio
- 📺 YouTube: @koreaaria
- 🧵 Threads: @arargamesstudio
- 📘 Facebook: arargamesstudio
Tags & Topics
#GooglePlayConsole #InAppPurchase #IAP #Subscriptions #OneTimeProducts #AndroidDev #DotNet9 #CSharp #BillingClient #IndieDev #GameMonetization #BlockedPixelPanzer #PaintTrek #ArarGames