Guideline 5.6
Guideline 5.6 - Legal: Manipulative In-App Purchase Offers on Cancellation
Our Take
Apple is rejecting your app because it attempts to manipulate customers into making unwanted In-App Purchases. Specifically, the app displays a discounted offer when the user cancels the initial purchase flow — for example, showing a reduced-price 'Yearly - Unlimited' subscription after the user dismisses the original paywall.
Under guideline 5.6 (Developer Code of Conduct), developers must not use manipulative or coercive tactics to pressure users into purchases they did not intend to make.
Apple considers it manipulative when an app detects a user's intent to decline a purchase and immediately counters with a discounted or reframed offer designed to exploit the cancellation moment. The key issue is not offering discounts per se — it's the timing and context. Presenting a lower price specifically in response to a user attempting to leave the purchase flow creates a high-pressure sales tactic that Apple views as manipulating the customer's decision.
Common triggers include: showing a modal with a discounted price when the user taps the close button on a paywall, presenting a 'special one-time offer' immediately after dismissing a subscription screen, or reducing the displayed price in real-time as the user navigates away. Apple's reviewers are specifically trained to test cancellation flows, so this pattern is caught consistently.
There's also a caveat to this rule. In the past, Apple used to include language in their rejections from this guideline that said you couldn't show a "better offer" immediately after a user declined a purchase. In Apple's parlance, "better" equals cheaper. So there's an argument that you can show a different product, different intro offer, or different subscription tier entirely and potentially be compliant.
Resolution Guide
**Remove the cancellation-triggered discount** — Delete or disable any logic that detects the user dismissing a paywall and presents a follow-up offer. This includes intercepting the close button, back gesture, or swipe-to-dismiss to show a second modal.
**Audit your paywall flow end-to-end** — Walk through every path a user can take: viewing the paywall, tapping a plan, cancelling, tapping X, swiping down, pressing back. No path should trigger a secondary offer or price change.
**Separate discounts from cancellation events** — If you want to offer discounts, present them as standalone promotions (e.g., on a settings page, in a notification, or as a time-limited banner) that are not conditioned on the user trying to leave a purchase screen.
**Use Apple's offer infrastructure** — For legitimate promotional pricing, use StoreKit's promotional offers or offer codes, which are transparent and Apple-approved.
**Test the cancellation path explicitly** — Before resubmitting, have someone unfamiliar with the app test the paywall. Ask them to decline every offer and verify no surprise discounts appear.
**Document your paywall behavior in review notes** — In the App Review Notes, describe your subscription flow and confirm that no offers are conditioned on user cancellation.
Prevention
Example Rejection Email
Consider Appealing
Appeal only if the discounted offer is not triggered by the user's cancellation — e.g., it was a scheduled promotion already visible before the user entered the purchase flow. Provide screenshots and a screen recording showing the offer exists independently of the cancellation action. If the discount is genuinely tied to the user cancelling, do not appeal — remove the behavior and resubmit.
Before & After
User taps X on the $79.99/year paywall → a modal slides up offering $49.99/year 'Special Discount — Today Only!' with a countdown timer
User taps X on the paywall → paywall dismisses, user returns to the app. Promotional pricing is available on a separate Settings → Subscription page, unrelated to cancellation events
What changed: The issue is not offering discounts — it's triggering them specifically when the user tries to leave. Decoupling the discount from the dismissal action resolves the violation.
Community Solutions · 0
Sign in to share your solution.
More Guideline 5 (Legal) rejections
- Guideline 5 - Legal: Remove Watermark Feature
- Guideline 5.1.1 - Data Collection and Storage: Incomplete Privacy Manifest
- Guideline 5.1.1 - Data Collection and Storage: Missing Purpose Strings
- Guideline 5.1.1 - Data Collection and Storage: Privacy Manifest Missing
- Guideline 5.1.1 - Data Collection and Storage: Privacy Nutrition Label Mismatch
- Guideline 5.1.1 - Data Collection and Storage: Privacy Policy