AppReviewX Log in

Test cancelled and interrupted purchases

Cancel, background and network loss during checkout.

Checkout is a hand-off: your app asks, the store's sheet takes over, and the result comes back later. Every step can be interrupted. The risky outcomes are a charge without access, access without a charge, and a screen stuck forever. Part of Testing monetization.

Use sandbox or license-tester accounts, not real cards (Android steps).

Checks

  1. User cancels the store sheet. Expected: back on the paywall, no error, no "purchase failed" scare. Cancelling is a choice, not a fault.
  2. Cancel, then buy again. Works the second time without restarting.
  3. App goes to background during the sheet and comes back. Expected: the result is picked up; the paywall does not reset to a spinner.
  4. App killed during the purchase. Reopen. Expected: if the purchase completed, access arrives; if not, the paywall is normal. How to check: force-quit right after confirming.
  5. Network lost before confirming. Expected: a clear message and a retry, no charge assumed.
  6. Network lost after confirming. The hard one. Expected: the app retries delivery on next launch or when online, and the user is not asked to pay twice. See restore purchases.
  7. Pending or slow approval. Some purchases do not complete immediately. Expected: a "pending" message, access not granted yet, and no second purchase button that invites a duplicate. Which flows can be pending is a store matter; this page makes no claim, so check the current official docs.
  8. Double tap on the buy button. One purchase request only. Disable the button while waiting.
  9. Phone call or notification during the sheet. Result still arrives.
  10. Low battery, airplane mode toggled on and off. Same expectations as 5 and 6.
  11. Rotating the device or changing text size mid-flow does not drop state.
  12. Error messages are human. No raw codes. Say what happened and what to do next.
  13. Nothing is lost in your backend. If you verify purchases on a server, check that a purchase made during an interruption is still recorded (server-side checks).

How to read results

For each case write three lines: what the store did, what the app did, what the user saw. A mismatch in any of them is a bug, even if the entitlement ends up correct.

Related: price display across regions, paywall comprehension test.

Ask testers to cancel on purpose and tell you how they felt about the screen they landed on. Start free.