# Guideline 3.1.2(b) - Subscriptions: Users Can Accidentally Subscribe to Multiple Tiers

**Guideline:** 3.1.2 · **Store:** Apple App Store · **Severity:** medium · **Fix difficulty:** medium · **Typical turnaround:** 1-3 days

Canonical URL: https://appstorereject.com/rejections/apple/3/guideline-312b-subscriptions-users-can-accidentally-subscribe-to-multiple-tiers

## Description

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.

## Common variations

- Users can subscribe to multiple service levels simultaneously
- Subscription tiers in separate groups allow duplicate subscriptions
- Upgrade/downgrade path does not cancel previous subscription
- Multiple active subscriptions for the same service

## Example rejection email

```
Guideline 3.1.2(b) - Business - Payments - Subscriptions

We noticed that your app's subscription configuration may allow users to subscribe to more than one level of service at the same time. Specifically, your Basic and Pro subscription plans appear to be in separate subscription groups, which means a user could inadvertently maintain active subscriptions to both plans simultaneously.

Subscription tiers that represent different levels of the same service should be configured within a single subscription group to prevent users from accidentally purchasing multiple subscriptions.

Next Steps:
Please reconfigure your subscription products so that different service levels are within the same subscription group in App Store Connect.
```

## Resolution steps

## Quick Assessment
- **Risk level:** Medium
- **Resolution path:** Fix & Resubmit
- **Typical turnaround:** 1-3 days

## The Fix

1. **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.

2. **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.

3. **Handle existing subscribers** -- Subscribers to the old product IDs will keep their subscriptions. You need server-side logic to:
   - Check for and honor both old and new product IDs
   - Prevent double-charging by detecting overlapping subscriptions
   - Communicate to affected users about the migration

4. **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.

5. **Update your app's subscription logic** -- Your StoreKit code may need to handle both old and new product IDs during the transition period.

## Prevention
- Always configure service tiers within a single subscription group from the start
- Use separate groups only for genuinely independent services (e.g., a content subscription AND a cloud storage subscription)
- Test tier upgrade/downgrade flows in sandbox before submission

## Before / after examples

**Before:** 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
**After:** 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
**Why it works:** Service tiers must be in the same subscription group so StoreKit manages upgrades and downgrades, preventing accidental double billing.

## Common questions

**How long does this typically take to fix?**

Typical turnaround is 1-3 days (difficulty: medium). After resubmission, most re-reviews complete within 24-48 hours.

---
*Machine-readable source: https://api.appstorereject.com/api/rejections/detail?slug=guideline-312b-subscriptions-users-can-accidentally-subscribe-to-multiple-tiers*