You test a purchase long before anyone approves it, and each store blocks you somewhere else.
In-app purchase sandbox testing is buying your own product with a test account, against the real store, without money moving. Apple calls that environment the sandbox and lets you into it with nothing uploaded: a configured product and a Sandbox Apple Account are enough. Google calls the equivalent license testing, and gates it on your account being on a list in Play Console rather than on the review queue. Neither store makes you wait for an approval. What they do gate is different in each case, which is why the same checklist fails on one platform and works on the other. Every figure below was read from Apple's and Google's own pages on 21 October 2026, and the dates are printed next to the numbers because these numbers move. The submission itself is a separate job, covered in publish to app store.
What follows is what each store actually requires before a test purchase will go through, what a test purchase does that a real one does not, and the two mistakes that cost a day each. One of them can charge a tester real money. The other can lock you out of your own Apple purchases on the device you were testing with.
See what each store requires firstThe short version
Apple gates on the product. Google gates on the account.
On the App Store side you need five things, and an approval is not one of them: an active Apple Developer Program account, a paid applications agreement signed by the Account Holder, the product set up in App Store Connect with at least a reference name, a product ID, a localized name and a price, a Sandbox Apple Account, and Developer Mode switched on for a development build. Then you build from Xcode and buy. Apple is explicit that at this stage you do not need to upload your app binary.
On the Google Play side the blocker is a signing check, not a review. The Play Billing Library refuses to work in an app that was not signed and uploaded to Google Play, and the thing that gets you past it is being a license tester. Google is clear that a license tester can sideload a debug build with a debug signature, as long as the package name matches an app that is configured on Google Play. The products themselves still have to be published. So one store is asking whether the product exists, and the other is asking who you are.
Can you test a purchase before Apple approves the product?
Yes, and Apple documents it as the normal order of work rather than a loophole. The page on testing purchases with sandbox lists five things to have ready before you start. Your Apple Developer Program account is active. Your membership Account Holder has signed the paid applications agreement. The product information is set up in App Store Connect, which Apple reduces to a minimum of a product reference name, a product ID, a localized name and a price. You have created Sandbox Apple Accounts. And you have enabled Developer Mode on the device if you are running a development-signed build. A review status appears nowhere on that list.
I went looking for the gate anyway, because a lot of writing on this subject implies one. App Store Connect Help has a reference page listing the In-App Purchase statuses, from Prepare for Submission through Ready for Review, Waiting for Review, In Review, Accepted and Approved. It explains what you can still edit in each state, and it says nothing about the sandbox. The configuring overview puts the steps in a numbered workflow, and testing your purchases is step five while submitting them for review is step seven. So the documentation agrees with the thing developers say to each other: you test first, you submit after. Read on 21 October 2026.
One requirement does bite, and it is the agreement rather than the review. App Store Connect Help states that the paid apps agreement must be Active to test In-App Purchases in the sandbox environment, and that means the Account Holder has to have accepted it and supplied banking and tax information. That is paperwork with a human on the other end, so it is the thing to start days before you need it, not the afternoon you planned to test.
There is also a rung below the sandbox. App Store Connect Help describes StoreKit Testing in Xcode as a local test environment that does not require a connection to App Store servers, and says to use it to test purchases before you configure them in App Store Connect, or when there is no network. That is worth knowing on day one: you can write and exercise the whole purchase path with a local configuration file and no store account at all, then move to the sandbox when the real product IDs exist.
Apple, testing Apple In-App Purchases with sandbox, read 21 October 2026
Work out where it runs
Which test environment are you actually in
Pick what you are trying to prove. Each store puts that test in a different place, and two of these are not the same environment at all.
Nothing picked yet. The short answer for every row: Apple lets you test before you upload anything, and Google lets you test before you upload anything only if your own account is on the license testing list.
Does Google Play make you publish to a track first?
Google's two own pages give two different answers, and knowing which one applies to you saves a wasted release. Play Console Help, on testing in-app billing with application licensing, lists it as a requirement: your app has been published to the open, closed, internal test or production track, and it recommends the internal test track. The Android Developers page on testing your Billing Library integration says something narrower. The Billing Library is ordinarily blocked for apps that are not signed and uploaded to Google Play, license testers bypass that check, and so a license tester can sideload an app for testing, including a debug build with a debug signature. Two conditions come with it. The package name must match the app configured for Google Play, and the Google Account must be a license tester for the Play Console account.
Put together, the answer is: the app record and its products have to exist on Google Play, but the specific build in your hand does not have to be the one sitting on a track. Both pages agree that the products must be published before they can be tested, which is the part people skip. Creating a subscription in Play Console is not the same as publishing it. Read on 21 October 2026, on a page that prints its own last updated date of 20 October 2026.
Becoming a license tester takes a minute. In Play Console, open Settings and then License testing, and add people as email lists or as Google Groups. Play Console Help says an email list holds up to 2,000 addresses and that Google Groups have no user limit, and that your own publishing account is always considered a licensed tester. That last line explains a common confusion: your own first test purchase often works before you configure anything, and then a colleague's does not. Google also advises testing with non-license-tester accounts from time to time, so that your app does not come to depend on testing-specific behaviour like five minute renewals.
Tracks still earn their place, just for a different job. Google describes test tracks as pre-distribution validation, the way a QA team qualifies a release, and warns that after you publish to a testing track it can take a few hours before the app is available to testers. Plan that lag into the day. When your testers are outside your own company, the track you want next is a closed one, and google play closed testing covers the tester lists and opt-in links that go with it.
What does a test purchase do that a real one does not?
It runs through the same flow and then lies about time. Apple describes the sandbox as using the infrastructure of the App Store and returning transactions as if payments were successfully processed, instead of processing actual payments. Google says test purchases use the same app purchase flow as actual purchases, that taxes are not computed, and that Play shows a notice across the centre of the purchase dialog so you can tell. Neither store is running a mock. They are running the real thing with the money part swapped out, which is why these environments are worth using and also why they surprise people.
The compression is the useful part. Apple sets a per account subscription renewal rate, defaulting to a speed equalisation of one month to five minutes, and that rate also sets the length of billing retry and the billing grace period for that tester. Subscriptions renew up to 12 times before auto-renewal turns off on the thirteenth attempt. Google's equivalent table is fixed: one week and one month both become five minutes, three months becomes ten, six months fifteen, a year thirty. A free trial becomes three minutes, a grace period five, an account hold ten, and a test subscription renews a maximum of six times, not counting free trials and introductory periods. If your renewal logic needs more cycles than that, you will need a fresh account rather than more patience. All read on 21 October 2026.
Both stores give you failure on demand, and this is where most of the value sits. Apple has an interrupted purchases switch per sandbox account, which simulates a customer who has to act outside your app first, such as agreeing to new terms or replacing an expired card. Google hands license testers a set of test instruments: always approves, always declines, a slow test card that approves after a few minutes, a slow one that declines, and one that approves and then charges back. Google adds a rule with teeth attached: for purchases from license testers, a purchase is refunded after 3 minutes if your app does not acknowledge it, and you get an email about the cancellation. That is a three minute test for a bug that would otherwise reach production as a wave of chargebacks.
Your server can join in. Apple makes the App Store Server API and App Store Server Notifications available in the sandbox on their own sandbox URLs, with the environment named in the notification payload, so the webhook you will depend on in production is testable now. Both sandboxes also run on builds your testers can hold, which matters for sequencing. Apple states that apps downloaded from TestFlight always run in the sandbox environment, so a beta tester cannot be charged by accident. Getting a build in front of people outside your team is its own queue, and testflight external testing review is the step that governs it.
The same test, with different rules on each store
Everything in this table was read from Apple's and Google's own pages on 21 October 2026. Where a cell says something is not named, that means I read the page where it would be and it was not there, not that I failed to find it.
| The question | App Store sandbox | Google Play license testing |
|---|---|---|
| Needs the binary uploaded first | No. Apple says you do not need to upload the binary during development | No for a license tester sideloading a build, yes for anyone else |
| Needs the product reviewed or approved | No. Configured metadata is enough, and testing comes before submission in Apple's own workflow | The products themselves have to be published before they can be tested |
| Real money can move during a test | No. Test accounts do not incur charges | Yes, on a test track, unless the buyer is a license tester |
| One production month becomes | 5 minutes by default, and you can change it per test account | 5 minutes, fixed |
| Renewals before it stops on its own | Auto-renewal turns off on the thirteenth renewal attempt | Six, not counting free trials and introductory periods |
| An unacknowledged purchase refunds itself | Not named on Apple's sandbox testing page | Yes, after 3 minutes for a license tester, with an email about the cancellation |
| A separate app on the device for the extra controls | No | Yes |
| Lag after you change something in the console | Up to 1 hour for product metadata to reach the sandbox | A few hours for a newly published track build to reach testers |
Which mistakes here cost a whole day?
The expensive one is on Google Play, and it is about money. Google states that users incur actual charges for their test track purchases unless the user is a license tester, and that draft apps and internal test track releases are subject to spend limits. It names no figure for those limits. So an internal testing build is not a safe sandbox by itself. Somebody who installed from your opt-in link and never made it onto the license testing list will be charged for the subscription they bought to help you. Add the list before you share the link, not after.
The second one is on iOS, and it bites you rather than a tester. To reach the sandbox controls from a TestFlight build, Apple has you sign out of your production Apple Account in Media and Purchases and sign in with a Sandbox Apple Account under Settings, then Developer. Apple attaches a warning to that step: signing out of Media and Purchases can remove your access to purchased content in production apps on your device, and it suggests a dedicated testing device. Sign back in later and your TestFlight purchases go back to being attributed to your real account. If you only have one phone, do this knowing what it costs.
Then a run of small ones that each look like a code bug. A sandbox account only works for apps belonging to the same Apple Developer Program account that created it, so a borrowed tester from another team fails silently. A product you just edited can take up to an hour to show up in the sandbox. A sandbox account email that is already a real Apple Account causes errors, which is why Apple documents using plus sign subaddresses off one mailbox instead. On Google Play, the resubscribe and pause features are always on for license tester accounts even when they are switched off in Play Console, so testing the disabled behaviour needs an ordinary account. And Play Billing Lab, the separate Android app that holds the country, trial offer and price change controls, expires several of those configurations after two hours.
One deadline is live as this is written. The reminder banner Google runs across its Play Billing documentation, read on 21 October 2026, says that by 31 August 2026 all new apps and updates to existing apps must use Billing Library version 8 or later, and that you can request an extension until 1 November 2026. The first date has already passed. If your project is on an older Billing Library, the version is now the thing to fix, because no amount of test instruments helps an update that will not be accepted.
Last, a boundary worth keeping. Testing the money is not testing the listing. A sandbox purchase tells you whether your code grants the right thing when the right event arrives, and it tells you nothing about whether anyone wants to buy it. That second question belongs to play store listing experiments and to real traffic. Keep the two apart and both get easier.
Where this lands if a builder generated your app
Nothing above changes because an agent wrote the code. The store accounts, the agreement, the product metadata and the tester lists are all yours, and they are the parts that gate a test purchase. What a builder can change is how quickly you get a build into the two places where a test purchase is possible at all.
Newly is an AI app builder. You describe an app in plain English and it writes a real React Native and Expo project that you own, with two-way GitHub sync so the code is never trapped in a tool. It uploads iOS builds to TestFlight and publishes to Google Play internal testing, and it can build a standalone Android APK. Those happen to be exactly the three rails this page runs on: a TestFlight build always runs in Apple's sandbox, an internal testing release is the track Play Console Help recommends, and an APK is the sideload a license tester is allowed to use. Newly costs $25 a month, with no free plan.
The honest limits are worth saying out loud. Newly does not submit to the App Store for you, because App Store Review Guideline 4.2.6 requires an app created from a template or app generation service to be submitted by the provider of the app's content, which is you. It does not sign agreements, create sandbox accounts, publish products or add license testers either. Those are console jobs with your name on them. What you get is a build in the right place, the same afternoon, so the console work is the only thing left.
Questions people ask about in-app purchase sandbox testing
Yes. Apple's prerequisites for sandbox testing are an active Apple Developer Program account, a Paid Applications Agreement signed by the Account Holder, product information set up in App Store Connect, Sandbox Apple Accounts, and Developer Mode on the test device. The product information is described as a minimum of a product reference name, a product ID, a localized name and a price. No App Store Connect page I read ties sandbox availability to a review status. Apple's own configuration workflow lists testing as a step before submitting for review, and its In-App Purchase statuses reference, which lists Prepare for Submission through Approved, does not mention the sandbox at all. Read on 21 October 2026.
Get the build into the sandbox, then break it on purpose
Sign the agreement, publish the products, add every tester to the license testing list, then spend an hour buying your own app with cards that decline. That hour is cheaper than one refund wave.
Start building