Guideline 3.1.2
Guideline 3.1.2(b) - Subscriptions: Users Can Accidentally Subscribe to Multiple Tiers
Our Take
Apple is rejecting your app because its subscription architecture allows users to accidentally hold multiple active subscriptions simultaneously. This happens when subscription tiers are configured as separate subscription groups in App Store Connect, rather than tiers within the same group. When subscriptions are in the same group, StoreKit automatically handles upgrades and downgrades -- subscribing to a higher tier cancels the lower one. But when they are in separate groups, a user can subscribe to both the Basic and Pro plans at the same time, paying for both without realizing it. This is a configuration issue in App Store Connect, not a code issue. The fix involves reorganizing your subscription products into a single subscription group with proper tier levels. However, migrating existing subscribers requires careful planning.
Resolution Guide
Audit your App Store Connect subscription groups
Check if your service tiers (Basic, Standard, Pro, etc.) are in the same subscription group or separate groups. They must be in the same group.
Reorganize subscription groups
In App Store Connect, create a single subscription group and add all service tiers as products within it. Set the tier levels (Level 1 = highest, etc.) so StoreKit manages upgrades/downgrades correctly.
Handle existing subscribers
Subscribers to the old product IDs will keep their subscriptions. You need server-side logic to:
- Prevent double-charging by detecting overlapping subscriptions
- Communicate to affected users about the migration
Test upgrade/downgrade flows
In sandbox, verify that subscribing to a higher tier automatically cancels the lower tier, and that downgrades take effect at the next renewal.
Update your app's subscription logic
Your StoreKit code may need to handle both old and new product IDs during the transition period.
Prevention
Example Rejection Email
Before & After
App Store Connect shows 'Basic Plan' in Group A and 'Pro Plan' in Group B; a user subscribing to Pro while on Basic now pays for both
Both 'Basic Plan' and 'Pro Plan' in the same subscription group with proper tier levels; upgrading to Pro automatically cancels Basic at the current period end
What changed: Service tiers must be in the same subscription group so StoreKit manages upgrades and downgrades, preventing accidental double billing.
Community Solutions · 0
Sign in to share your solution.
More Guideline 3 (Business) rejections
- Guideline 3.0 - Business: Irrationally High Pricing
- Guideline 3.1.1 - In-App Purchase: Expiring Virtual Currency
- Guideline 3.1.1 - In-App Purchase: External Link for Digital Content in Reader App Without Entitlement
- Guideline 3.1.1 - In-App Purchase: License Key or Serial Number Unlocks
- Guideline 3.1.1 - In-App Purchase: Loot Boxes Without Disclosed Odds
- Guideline 3.1.1 - In-App Purchase: Missing Restore Purchases Button