Missing restore purchases: reliable rejection for paid apps
If your app sells non-consumable products or subscriptions, it has to offer a way to restore them. A reviewer on a fresh device with a purchase already attached to the test account needs to get their content back without creating an account or contacting you.
Why it matters
A person who reinstalls your app, or installs it on a second device, has already paid. The restore action is how they get what they paid for, and Apple requires it because the alternative is a customer who has been charged and has nothing.
The requirement is specific about reachability: the action has to be available without signing in first. An app that requires an account before it will restore a purchase has put its own login in front of Apple’s requirement.
Consumable purchases are excluded, which is why the check is about non-consumables and subscriptions rather than about purchases in general.
The usual reason it is missing is that it never comes up in development. You test purchases with a sandbox account on a device where the purchase has just been made, so the entitlement is already in memory and nothing needs restoring.
A restore that only works by re-running the purchase flow is not a restore either: the user should not have to attempt to buy something again to discover they already own it, and on a subscription that path is alarming rather than reassuring.
How to fix it
- Add a visible Restore Purchases action on the paywall or in settings, reachable before any account step.
- Implement it against the current StoreKit transaction APIs rather than relying on a purchase flow to surface an existing entitlement.
- Test it on a device where the app has just been installed and the purchase belongs to the App Store account, which is the reviewer’s exact situation.
The guidelines behind it
Read from Apple’s App Review Guidelines as last updated October 16, 2026.
What ReviewAhead checks
Restore purchases. Non-consumable and subscription purchases need a restore mechanism.
- Whether a restore mechanism appears in the source.
- Asks when it cannot tell, and records the answer it rests on.
- Reports it against the purchase types you actually sell, since a consumable-only app is not in scope.
Apple’s own documentation for this requirement: developer.apple.com. Where this page and Apple disagree, Apple is right and this page is a bug.