Test In-App Purchases Free: Google Play License Testing (2026)
Test subscriptions and in-app purchases without spending real money using Google Play Console License Testing. Complete setup guide, IAP flow testing, and the pitfalls to avoid.
Need testers who stay active for all 14 days?
TesterBee matches you with 12 real Android testers in under 24 hours. Refund if Google rejects you over tester engagement.
On this page
If your app sells anything — a premium upgrade, a subscription, a consumable currency — you need to test the purchase flow before real users do. Google Play Console provides License Testing, a built-in feature that lets designated testers make purchases that are never charged to a real payment method. But the setup has specific requirements that are easy to get wrong. Here is exactly how it works and where developers get tripped up.
Quick Answer
Google Play Console License Testing lets you test in-app purchases and subscriptions for free. Add your testers' emails under Setup > License testing in Play Console, then those testers buy through the real Play billing flow but are never charged — no credit card required.
Key Takeaways
- License testers use the real Play billing flow but are never charged
- Add tester emails under Setup > License testing in Play Console
- Works for both one-time purchases and subscriptions
- Lets you verify purchase flows without spending real money
What License Testing Actually Does
License Testing creates a sandbox within the Google Play Billing system. When a license tester initiates a purchase, the entire billing flow executes: the Play Store checkout sheet appears, the tester confirms the purchase, Google processes it, and your app receives the Purchase object through the BillingClient callback. The tester's payment method is never charged. The receipt is valid and verifiable through the Google Play Developer API. The only difference from a real purchase is an internal flag marking it as a test transaction.
This means you can test your entire purchase flow — including server-side receipt validation, entitlement delivery, and error handling — without spending real money and without issuing refunds. Test purchases do not appear in your app's revenue reports, ratings, or public metrics.
Step-by-Step Setup
- Open Play Console, select your app, and navigate to Setup → License testing in the left sidebar.
- Enter the Gmail addresses of your license testers. These must be Google accounts (personal Gmail or Google Workspace). Multiple addresses can be separated by commas.
- The critical step most developers miss: license testers must also be on your app's testing track (Internal, Closed, or Open). A license tester who is not opted into a testing track will see real charges on their payment method — the sandbox only activates when the app is installed through a testing track.
- Create your in-app products in Play Console (Setup → In-app products) before testing. Even "inactive" products work for license testing, but the product IDs must exist. A purchase attempt for a nonexistent product ID fails silently — no error dialog, no callback, just nothing happens.
- Save the license tester list. Changes take effect within minutes. No review is required.
How the Test Purchase Flow Differs from Production
When a license tester triggers a purchase, the Play Store shows a checkout sheet with a banner: "This is a test purchase. You will not be charged." The tester confirms, and Google Play Billing returns a standard Purchase object. The purchaseState will be 0 (PURCHASED), identical to a real transaction. The order ID will contain "GPA" like a real order. Your backend can validate the receipt through the Google Play Developer API, and it will return valid.
For subscriptions, test purchases use accelerated renewal periods so you can test renewal logic without waiting days or weeks. The compressed timeline: a weekly subscription renews every 5 minutes (up to 6 renewals, simulating 6 weeks in 30 minutes), a monthly subscription renews every 5 minutes (up to 6 renewals), and a yearly subscription also renews every 5 minutes. After the maximum renewals, the subscription expires. You can re-purchase to start a new test cycle.
One thing that trips up developers: test subscription renewals are not exactly 5 minutes. They are "approximately 5 minutes." Build your test scripts with polling logic rather than fixed timers. Check purchase state every 30 seconds rather than expecting an event at exactly 300 seconds.
Server-Side Validation with License Testing
If your app validates purchases on a backend server (which you should be doing for any real in-app purchase), license test purchases are validated through the same googleapis.com/androidpublisher/v3/purchases endpoint. The response includes all standard fields — purchaseToken, paymentState, startTimeMillis, expiryTimeMillis (for subscriptions). The purchaseType will be 0 (test) rather than 1 (real), but your validation logic should treat both as valid purchases.
The most common server-side mistake: rejecting purchases where purchaseType=0. If you do this, license testers can never complete a purchase, and you cannot test your entitlement delivery. Your validation endpoint should accept both purchase types and only differentiate them for analytics filtering.
Testing Refund and Cancellation Flows
License test purchases can be refunded through Play Console (Order Management → select the test order → Refund). The refund callback fires through the BillingClient onPurchasesUpdated listener with purchaseState=2 (PURCHASED_AND_ACKNOWLEDGED but refunded). Test refunds within the license testing sandbox to verify your app handles them gracefully — many production bugs are discovered when a real user refunds and the app does not revoke entitlements correctly.
For subscriptions, you can test cancellation during the accelerated renewal period. Cancel a test subscription through Play Console and verify your app detects the cancellation and does not grant further entitlements after the current period ends.
Common Pitfalls and Their Fixes
Purchase silently fails, no error message. The product ID does not exist in Play Console. Create the product (even as inactive) and try again. This is the most common issue and the hardest to debug because there is no visible error — the purchase attempt simply returns nothing.
"Item not available" error. The tester's Google account is on the license testing list but the tester installed the app outside the testing track (e.g., from a sideloaded APK or a production build). The license testing sandbox only activates for apps installed from a testing track.
Real charge appeared on tester's card. The tester installed the app through the testing track but their email was not on the license testing list. Both conditions must be true: tester on the track AND tester on the license testing list.
Purchase works but receipt validation fails. Your Google Play Developer API credentials do not have the correct scope, or you are hitting the wrong endpoint. Test purchases are validated through the same API as real purchases — if validation fails for tests, it will fail for real purchases too.
Subscription never renews. You are waiting for a real-time renewal period (e.g., waiting a week for a weekly subscription). Test purchases use accelerated periods (~5 minutes). If renewals are not firing, check that you acknowledged the original purchase — Google Play Billing does not renew subscriptions until the original purchase is acknowledged.

Senior full stack developer specializing in Laravel, React, and Firebase. Helped 1,200+ Android developers pass Google Play Closed Testing and publish apps. Expert in Play Console, production access, and Android app publishing.
Get 12 testers into your closed test in 24 hours
Matched Android testers who open your app every day of the 14-day window, so your production access review has real engagement to look at.
Start your closed testRelated articles
Google Play Console Registration Fee 2026: $25 Cost and Verification Time
The Google Play Console registration fee is a one-time $25. Here is exactly what it covers, what it does not, and how long identity, device, and organization verification actually take in 2026.
Google Play Pre-Launch Report: Catch Bugs Before Your Testers
Every AAB you upload gets tested automatically. Learn how to read the Pre-Launch Report, fix the crashes and security issues it finds, and ship a stable app to your 12 testers.
How to Publish a Flutter App on Google Play in 2026 — Complete Step-by-Step Guide
Complete guide for Flutter developers to publish an Android app on Google Play. Covers AAB builds, Play Console setup, Closed Testing with 12 testers, production access, and release.