Migration Guide
Table of Contents
This guide distils the migration into the few changes you actually need to make. When you need deeper feature explanations, refer to tutorials/v3/features/billing-services/usage.md.
Why Essential Kit Instead Of Unity IAP
Direct native control so fixes and updates ship as soon as we build them (no Unity IAP dependency or review cycle).
The Essential Kit team owns the roadmap and can respond to platform changes immediately.
No analytics or telemetry packages bundled in; you keep full control over user data.
Smaller project footprint with fewer package conflicts to manage.
Quick API Cheat Sheet
Namespace
using Gley.EasyIAP;
using VoxelBusters.EssentialKit; using VoxelBusters.CoreLibrary
Initialise store
API.Initialize(callback)
BillingServices.InitializeStore()
Check can pay
API.IsInitialized()
BillingServices.CanMakePayments()
Buy product
API.BuyProduct(ShopProductNames.Item, callback)
BillingServices.BuyProduct("item_id")
Purchase callback
void OnPurchase(IAPOperationStatus, string, StoreProduct)
void HandleTransactions(BillingServicesTransactionStateChangeResult)
Get product price
API.GetLocalizedPriceString(ShopProductNames.Item)
product.Price.LocalizedText
Grant reward
product.value
iterate product.Payouts (category/variant)
Restore purchases
API.RestorePurchases(callback)
BillingServices.RestorePurchases(forceRefresh)
Receipt string
product.receipt
transaction.Receipt
Check ownership
API.IsActive(ShopProductNames.RemoveAds)
BillingServices.IsProductPurchased("remove_ads")
1. Before You Start
Export your existing product list (name, store IDs, product type, reward amount).
Search your project for
Gley.EasyIAPusages; keep this list beside you so nothing is missed.Decide when you will remove the Unity IAP and Gley packages (after you test the new flow is safest).
2. Remove The Old Dependency
In Package Manager remove Unity IAP if it is only used by Gley.
Delete the Gley Easy IAP asset folder from your project.
3. Configure Products In Essential Kit
Open Window β Voxel Busters β Essential Kit β Open Settings β Services β Billing Services.
For every product add:
Product ID β the identifier you use in code (e.g.
coins_100).Product Type β Consumable, NonConsumable, or Subscription.
Store IDs β iOS and Google Play identifiers exactly as created on each store.
Payouts (optional)β each reward is
Category + Variant + Quantity. UseCurrencyfor virtual currencies and name the variant clearly (e.g.coins_primary).Android Public Key β paste the Base64-encoded RSA key from Play Console β Monetization β Licensing so Essential Kit can validate Google Play receipts.
Example:
Essential Kit keeps the category and variant so you can differentiate primary/secondary currencies later. On Android, an incorrect or missing public key leads to purchases staying in a pending state or failing verification, so double-check the value you paste.
4. Replace Initialisation Code
5. Update Purchase Handling
Subscribe once and centralise transaction handling. Notice the explicit null checks β IBillingTransaction.Product can be null if the product was removed from settings, so we guard before using it.
6. Restore Purchases
Reuse the same GrantReward helper from the purchase path so your rewards stay in one place. When a user explicitly taps a βRestore Purchasesβ button on iOS, re-run BillingServices.RestorePurchases(forceRefresh: true) to present the App Store login dialog as required. See the restore guidance for more detail.
7. Update UI Helpers (Price, Title, Reward Amount)
8. Optional: Receipt Verification
If you previously sent receipts to a server, keep doing it with the new API. Essential Kit performs local verification automatically; for server-side verification see tutorials/v3/features/billing-services/usage.md#server-side-receipt-verification.
9. Test And Clean Up
Run through purchase, restore, and subscription scenarios on iOS and Android sandbox accounts.
Interrupt a purchase to confirm pending transactions are processed on next launch.
Once you ship with Essential Kit, delete any unused Gley scripts and
ShopProductNamesenums.
10. Quick Checklist
What You Gain With Essential Kit
Built-in receipt verification (local) with optional server extensions.
Purchase quantity support via
BuyProductOptions.Multiple payout definitions per product for multi-currency bundles.
Pending transaction recovery handled automatically after initialization.
Runtime configuration support (load product catalog from your backend and call
BillingServices.Initialize(settings)).
Need Help?
Review the Essential Kit product overview
Chat with the team and other adopters on Discord
Browse the full Billing Services usage guide
You are now running on Essential Kitβs native billing system. For advanced features (pending transactions, subscription status, offers) can refer main tutorial.
Last updated
Was this helpful?