In this guide
Plan changes are where billing, entitlement and wording meet. The user wants to know three things: what they get now, what they pay, and when it changes. This checklist covers what to verify in your app. Part of Testing monetization.
Whether a change takes effect immediately or at the next renewal, and how any price difference is handled, is decided by the store and the way you configured your products. Apple says only that ordering subscriptions by level "lets them upgrade, downgrade, and crossgrade within the subscription group without impacting their days of paid service." Timing and price rules were not verified; read the current Apple and Google documentation and write down the rules for your setup before testing.
Source: Apple App Store Connect Help, retrieved 2026-10-22.
Prepare a matrix
List your plans (for example monthly, yearly, a higher tier). Test every direction: monthly to yearly, yearly to monthly, lower tier to higher, and back. A table with "from, to, expected access now, expected access later, expected message" is enough.
Checks
- The paywall shows the current plan. Users should not see a "Subscribe" button for what they already have. How to check: open the paywall on each plan.
- Upgrade: access changes as your matrix says. Higher-tier features unlock when the store says they do, not earlier.
- Downgrade: the user keeps what they paid for until the change applies. Why: removing features early feels like a loss. How to check: downgrade and watch access until the sandbox period turns over.
- The app tells users when the change happens. "Your plan changes on [date]" beats silence. Check the date against the store entry.
- Pending changes are visible. After a downgrade, the user can see it is scheduled, and can undo it if your setup allows.
- Price shown matches the plan. See price display across regions.
- Change while a trial is running. Check what happens to the trial and what the screen says. See free trial flow.
- Change while a payment is failing. See failed payments and grace periods.
- Interrupted change. Lose network or close the app during the switch. See purchase interruption.
- Restore after a change. The restored plan is the current one. See restore purchases.
- Server and app agree. If you verify purchases on a server, check both show the same plan after each change (server-side checks).
- Cancel after a change. Cancelling the new plan does not leave the old one active.
What users should see
After any change: current plan name, access level, next date and next price, and where to manage it. If a tester cannot say those four things after a switch, fix the screen.
Related: Subscription pricing and trials. Ask testers to switch plans and describe what they expect to be charged. Start free.