Your paywall does not need a public release to be testable. Apple gives you two independent test paths before you ship: Sandbox Apple Accounts in App Store Connect, and StoreKit Testing in Xcode for early, offline work. Use the sandbox path for anything you want App Review evidence from, because it is the environment closest to what a reviewer will actually run.

Test the exact distribution build, not one wired only to a local StoreKit configuration file, with the same product identifiers and account state a reviewer will encounter. Then document the path and expected result in App Review Notes.

App Review Guidelines sets the completeness rule this workflow satisfies; Overview of testing in sandbox documents the sandbox mechanics it relies on. Both were checked on 4 August 2026.

The short version

  • Reach the paywall from a clean install without a hidden gesture or developer menu.
  • Create a Sandbox Apple Account and enable Developer Mode on the test device.
  • Install the exact distribution build, not one tested only against a local StoreKit configuration file.
  • Test cancel, offline, restore, and an account that already owns the entitlement.
  • Record the account, storefront, and build for every test so the result is reproducible.

The iOS subscription and in-app purchase review guide treats a reviewable paywall as one link in a longer chain of product records, code, and Review Notes. This article is that link on its own: the sandbox procedure you run before the rest of the chain is even assembled, so an unreleased purchase flow can still stand up to a reviewer.

Make the paywall reachable without a guide

The reviewer needs a normal product path, not a developer menu or a hidden gesture. Start from a clean install and write down every tap. If login is required, provide stable demo credentials and seeded state. If the paywall appears only after a quota or a timed event, explain in Review Notes how to trigger that condition without waiting, or add a documented way to reach it directly.

Create sandbox testers the way Apple expects

A Sandbox Apple Account is a test account created in App Store Connect that lets you complete in-app purchases without any real charge. Sign in with it on a device running a development-signed build, and enable Developer Mode on that device; a purchase can fail for this reason alone, with an error that has nothing to do with your paywall code. One sandbox account can also test different App Store storefronts without creating a new tester for each region, which matters if your pricing or availability changes by country.

Know when Xcode’s local StoreKit environment is enough, and when it isn’t

StoreKit Testing in Xcode runs entirely on the device, without contacting App Store servers, and works before you have configured a single in-app purchase in App Store Connect. It is useful for early UI work and offline iteration. It is not evidence for App Review: a pass there only proves your interface can render local test data, not that the distribution build resolves real products through a sandbox account the way a reviewer’s environment will.

Exercise more than the happy path

Cancel the purchase sheet. Lose network access before products load, then recover and retry. Restore on a fresh install. Sign in with a sandbox account that already owns the entitlement and confirm the paywall does not show the offer as if nothing had been purchased. Apple’s sandbox also lets you exercise subscription renewal and cancellation events on an accelerated schedule, so use that instead of waiting out a real billing period. The paywall should explain each state and keep the app usable where your product model permits it.

Keep a small evidence note with:

  • app version and build number;
  • product identifiers tested;
  • account type and storefront;
  • time of the test and observed result;
  • whether the entitlement changed after relaunch.

If a wrapper sits between StoreKit and your entitlement

Sandbox testing proves the paywall is reachable and that a purchase completes on the device. It does not prove a third-party entitlement layer such as RevenueCat resolved the same purchase correctly; that is a separate configuration surface with its own failure modes, covered in RevenueCat products not loading during App Review. Test both independently rather than assuming a working sandbox purchase means the wrapper’s dashboard is also correctly mapped.

Describe the verification path in Review Notes

Review Notes should name the entry point, the product identifiers, the expected localized price, the purchase result, and where restore lives. Avoid telling Apple the flow definitely works on their device. Tell them what you tested, on what account and storefront, and what they should observe.

Run the first checks in order

Work through these checks without changing two layers at once. A clean sequence makes the next decision defensible:

  1. Reach the paywall from a clean install without a hidden gesture.
  2. Create or reuse a Sandbox Apple Account and enable Developer Mode on the test device.
  3. Install the exact distribution build, not one tested only through StoreKit Testing in Xcode.
  4. Complete a sandbox purchase and confirm the entitlement survives a relaunch.
  5. Test cancel, offline, and an account that already owns the entitlement.
  6. Attach the account, storefront, and build details to concise Review Notes.

When a check fails, stop and record it. Fixing the account setup, the binary, and Review Notes simultaneously destroys the evidence that tells you which change mattered.

Choose the next action

What you findNext actionNew build?
The paywall is reachable only through a developer menu or hidden gestureAdd a normal in-product entry path and document itYes
A sandbox purchase fails only because Developer Mode isn’t enabled on the test deviceEnable Developer Mode and retest before changing the appNo
The distribution build was only ever exercised against a local StoreKit configuration fileTest the real archive with a Sandbox Apple Account before submittingUsually no, unless a defect surfaces
The entitlement doesn’t persist after relaunch or on a second deviceFix the entitlement check in code, then upload a new buildYes
Setup is correct but Review Notes don’t say how to reach the flowRewrite Review Notes with the literal pathUsually no

Do not appeal a reproducible defect. Do not upload a replacement binary when the only issue is a missing Developer Mode toggle or a thin set of Review Notes. The failed step, not habit, should choose the branch.

Failure patterns to look for

  • The paywall only appears after onboarding the reviewer cannot finish without extra guidance.
  • The distribution build was tested exclusively against a local StoreKit configuration file.
  • The sandbox tester already owns the entitlement, so the offer never renders.
  • A cancelled or failed purchase leaves the paywall stuck instead of returning to a state that can be tested again.
  • Developer Mode wasn’t enabled on the test device, producing a purchase failure that has nothing to do with the app.

Treat those patterns as an inspection list, not evidence that one cause is more common than another. Apple’s current sandbox and review documentation remains the authority for the workflow; the AppRejectKit corpus only helps make the test matrix harder to overlook.

What not to change blindly

Avoid recreating products, rotating identifiers, or changing purchase types before you know which step failed. Those changes can create new metadata and entitlement work while leaving the original cause, often a device setting or a stale Review Note, untouched.

Also avoid copying a sandbox testing walkthrough from an undated tutorial. Apple changes labels, the Sandbox Apple Account flow, and Developer Mode requirements. Use the official help page linked in this article, then describe the screens you actually see in your own account.

Verification note: Rule-sensitive claims in this article were checked against the linked Apple documentation on 4 August 2026. Apple can change App Store Connect labels and sandbox requirements, so recheck the sources before publication or a later resubmission.

FAQ about App Review paywall testing

Does testing in Xcode’s local StoreKit environment satisfy App Review?

No. It proves your interface can render local test data before App Store Connect items exist. App Review needs evidence from the distribution build and a Sandbox Apple Account, the environment closest to what a reviewer runs.

Can I test a paywall before its subscriptions are approved in App Store Connect?

You can make the screen reachable and test its layout and states early, but a purchase will not resolve against a real product until that product exists and is attached to the version under review. Reachability and a working purchase are two different checks.

Should I keep a hidden developer menu for reviewers to reach the paywall faster?

No. A path only visible through a gesture or a debug menu is not something a reviewer will find. Build a normal, documented route and describe it in Review Notes instead.

What evidence should I send with Review Notes?

Identify the app version, build number, product identifiers, the sandbox account and storefront used, the exact test path, and the visible result. A short recording can support the explanation, but the submitted flow still needs to work on its own.


Conclusion

Test the exact distribution build with a Sandbox Apple Account, the same product identifiers, and the same account state a reviewer will encounter. Then document the path and expected result in Review Notes rather than assuming the environment will explain itself.

Take the smallest action supported by what actually failed, whether that is a device setting, an unreachable entry point, or a thin set of notes. Keep the evidence with your reply so the next review starts from a tested fact, not another guess.


Sources and references