Setup
Configuring Billing Services
Prerequisites
Essential Kit imported into the project from My Assets section of Package Manager
iOS: App Store Connect account with Tax and Banking Information completed
Android: Google Play Console account with signed APK/AAB uploaded for testing
Product IDs created in both platform stores (use matching IDs for cross-platform consistency)
Platform Store Setup
Before configuring Essential Kit, you must create products in your platform stores. Detailed platform-specific instructions:
iOSAndroidQuick Overview
iOS App Store Connect:
Complete Tax and Banking Information
Create products in Features > In-App Purchases
Use unique identifiers like
com.yourgame.coins_100
Set localized pricing tiers
Google Play Console:
Upload signed APK/AAB (required for testing)
Create products in Monetization > In-app products
Use matching IDs from iOS for consistency
Configure local currency pricing
Product IDs must match exactly between iOS, Android, and Essential Kit Settings. Use reverse domain notation (e.g., com.yourgame.product_name
) for uniqueness.
Essential Kit Configuration
Enable Feature
Open Essential Kit Settings (Window > Voxel Busters > Essential Kit > Open Settings
), switch to the Services tab, and enable Billing Services.

Configuration Properties
Enable Billing Services
All
Yes
Toggles the feature in builds; disabling strips related native code
Products
All
Yes
Array of product definitions with platform-specific IDs
Auto Finish Transactions
All
Optional
Default: true. Set to false only for server-side receipt verification (advanced)
Android Public Key
Android
Yes
Base64-encoded public key from Google Play Console
Adding Billing Products
Click Add Product to create a new billing product entry:
Billing Product Properties
Id
Unique identifier used in code
coins_100
Platform Id
Common platform ID (if same across platforms)
com.yourgame.coins_100
Platform Id Overrides
Platform-specific IDs (iOS/Android)
iOS: com.yourgame.coins_100
Android: coins_100
Product Type
Consumable / NonConsumable / Subscription
Consumable
Title
Display title (fallback if store fetch fails)
100 Gold Coins
Description
Display description (fallback if store fetch fails)
Get 100 gold coins
Payouts
Metadata for currency grants (advanced)
See Multi-Currency section below
Product Types
Consumable
Can be purchased multiple times
Coins, lives, power-ups
NonConsumable
One-time permanent purchase
Ad removal, premium features
Subscription
Time-bound recurring billing
VIP membership, battle pass
Example Configuration
Product 1:
Id: coins_100
Type: Consumable
iOS ID: com.yourgame.coins_100
Android ID: com.yourgame.coins_100
Product 2:
Id: remove_ads
Type: NonConsumable
iOS ID: com.yourgame.remove_ads
Android ID: com.yourgame.remove_ads
Product 3:
Id: vip_monthly
Type: Subscription
iOS ID: com.yourgame.vip_monthly
Android ID: com.yourgame.vip_monthly
Auto Finish Transactions
Default: Enabled - Essential Kit automatically completes transactions after the OnTransactionStateChange
event fires.
When to disable:
You need server-side receipt verification (recommended for Android apps with significant user base)
You want manual control over when transactions are marked complete
You're implementing custom verification flows
If disabled, you must call BillingServices.FinishTransactions()
after granting purchased content to the user.
For most games, keep Auto Finish Transactions enabled. iOS uses StoreKit2 with built-in local verification. Only disable for advanced server verification scenarios.
Multi-Currency Systems (Advanced)
Use payouts to grant multiple virtual currencies from a single purchase:
Product: mega_pack
Payouts:
- Type: coins, Quantity: 500
- Type: gems, Quantity: 100
- Type: tickets, Quantity: 25
In your code, process payouts when granting content:
var product = BillingServices.GetProductWithId("mega_pack");
foreach (var payout in product.PayoutDefinitions)
{
switch (payout.Type)
{
case "coins": PlayerData.AddCoins(payout.Quantity); break;
case "gems": PlayerData.AddGems(payout.Quantity); break;
case "tickets": PlayerData.AddTickets(payout.Quantity); break;
}
}
Android Public Key
For Android builds, you must add your app's Base64-encoded public key:
Open Google Play Console
Navigate to Monetization Setup > Licensing
Copy the Base64-encoded RSA public key
Paste into Android Properties > Public Key in Essential Kit Settings
Verification
Before proceeding to usage:
Verify all product IDs match exactly between platform stores and Essential Kit Settings
Confirm product types (Consumable/NonConsumable/Subscription) are correct
Test the demo scene (
BillingServicesDemo.unity
) to confirm basic configuration worksCheck that products are approved and active in App Store Connect and Google Play Console
Last updated
Was this helpful?