Restore Purchases

User restores a subscription that is not reflected in the app — for example after a reinstall, on a new device, or when a payment succeeded at the store but entitlement sync was delayed.

Status: partially-live. Frontend controller stub exists. RevenueCat restore call is not yet implemented.

Who Can Do This

Any user with status: active or status: onboarding. Restore is available to both free and subscriber users in case entitlement state is out of sync.

Users with status: banned, status: banned_final, or status: to_be_deleted only see the ban screen or account deletion flow — the restore flow is not reachable.

Steps

  1. User taps Restore Purchases on the Profile page or on the paywall / upsell screen.
  2. The app calls RevenueCat's restore flow, which re-checks entitlements directly with the store.
  3. If an active subscription is found, the user's type is updated to subscriber immediately.
  4. If no active subscription is found, the user remains free and a message confirms there is nothing to restore.

Rules

  • Restore is available in two places: the Profile page (accessible at any time) and the Paywall / upsell screen (shown alongside the purchase option).
  • RevenueCat's restore behavior is set to Keep with original App User ID — entitlements cannot be claimed by a different Firebase UID via restore. This prevents one user from restoring another user's subscription.
  • If the user has changed their device's store account at the OS level (iOS Settings or Android Settings), restoring from the new store account will not recover the entitlement. Users in this situation must contact support for a manual entitlement transfer.

Apple requirement: A Restore Purchases button is mandatory on iOS under App Store Review Guideline 3.1.1 for any app offering subscriptions.

What Happens Next

The user's type is updated to subscriber and they regain immediate access to all subscriber features. If the user had frozen assets from a prior lapse, those assets are unfrozen immediately — the same outcome as re-subscribing. If no active subscription was found, no change is made and the user is shown a confirmation message.

Failure Cases

  • No active subscription found — user remains free; a message confirms there is nothing to restore.
  • Store account mismatch — the user changed their OS-level store account after purchase. Restore cannot recover the entitlement from a different store account. User must contact support.
  • Network failure — user sees an error with a retry option; no change is made to their account.