In this guide
Store rules on subscription disclosure and cancellation change; check the current Google Play and Apple guidance before you ship. This checklist covers behavior and clarity only, not legal advice.
Cancelling should be as findable as subscribing. Use this list on a real device with a test subscription (sandbox or test track), and test as someone who has never seen the app. For the paywall itself see paywall design.
The checklist
- Price, period and renewal are visible before purchase. - Why: surprise charges anger users and lead to refund requests. - How to check: open the paywall cold. Can you say price, billing period and "renews automatically" without scrolling or tapping?
- Trial end is stated. - Why: users who do not know when a trial ends feel tricked. - How to check: start a trial and look for the end date or length on the paywall and in the app afterwards.
- Cancel is reachable in few taps. - Why: if users cannot find it, they look for other ways out, such as a refund request. - How to check: from the home screen, count taps to cancel or to the place that explains how. Ask someone else to try and watch.
- The app says where cancelling happens. - Why: the store, not your app, usually owns the subscription. Users need a direct pointer. - How to check: follow the in-app link or instruction; it must land on the right store subscription screen on both Android and iOS builds.
- State after cancelling is shown correctly.
- Why: users expect access until the paid period ends, and a clear label.
- How to check: cancel in the store, return to the app. Is the status "active until
" or similar, not "free" and not still "renews"? - Access ends at the right moment. - Why: early lock-out and endless free access are both bugs. - How to check: with a test subscription with a short period, wait for expiry and reopen. Features lock and the paywall returns.
- Renewal works and is reflected. - Why: a paying user stuck in "expired" is the worst case. - How to check: let a test subscription renew once; the app must stay unlocked without a restart or reinstall.
- Restore purchases works. - Why: reinstalling or switching devices is normal. - How to check: reinstall, sign in, tap restore. Entitlement returns; with no subscription, a clear message appears.
- Failed payment is handled. - Why: expired cards are common and silent lock-outs confuse. - How to check: simulate a billing failure in the test environment. Is there a message and a way to fix payment?
- Re-subscribing after cancel works.
- Why: winning a user back must not need a support ticket.
- How to check: cancel, let it expire, subscribe again; no duplicate charge in the test records, access returns.
- Wording is plain in all supported languages.
- Why: legal-sounding or half-translated text hides the terms.
- How to check: switch language and read the paywall and cancel texts as a stranger would.
Common misses
- Cancel link works only on one platform.
- Status screen shows "Premium" after expiry until the next restart.
- Terms and privacy links on the paywall lead to a 404.
Related
Back to all checklists · Form validation checklist · Error states checklist
Want a stranger to walk through your cancel flow and tell you where they got stuck? See how AppReviewX works: private, structured feedback, 1 feedback = 1 credit.