What are deceptive paywall rejections?
App stores protect users from manipulative purchase flows Apple and Google reject apps that trick users into purchases, hide important pricing information, or make it difficult to understand what they’re buying. Common rejection messages:- “The app uses deceptive or manipulative subscription practices”
- “Subscription terms are not clearly displayed”
- “The app does not clearly identify the price and terms of the subscription”
- “Users may not understand what they are purchasing”
- “The free trial terms are not sufficiently clear”
Why this happens
Dark patterns trigger automatic rejection Reviewers are trained to spot manipulative purchase flows. Even unintentional design choices can look deceptive. Common mistakes:- Hiding the price or showing it in tiny text
- Pre-selecting the most expensive option
- Making the close button hard to find
- Unclear free trial terms (when it ends, what it costs after)
- “Continue” buttons that actually purchase
- No way to dismiss the paywall
- Subscription auto-renewing without clear disclosure
- Fake urgency (“Sale ends in 5 minutes!”)
- Fake social proof (“10,000 users subscribed today!”)
How to fix it
Make pricing impossible to miss
Price must be prominent and clear The price should be one of the most visible elements on your paywall. Users should never have to search for it. What causes rejection:- Price in tiny text at the bottom
- Price hidden behind “See details” link
- Price only visible after scrolling
- “Continue” button with no price visible
- Price shown without currency symbol
- Price displayed prominently near the purchase button
- Full price with currency symbol ($9.99, not just 9.99)
- Billing frequency stated clearly (per month, per year)
- Auto-renewal disclosed near the price
- Readable font size (minimum 14pt)
“$9.99/month, auto-renews monthly. Cancel anytime.”This single line covers price, frequency, renewal, and cancellation. Put it where users can’t miss it.
Make the close button obvious
Users must be able to dismiss the paywall easily A hidden or delayed close button is an instant rejection. Users should never feel trapped. What reviewers look for:- Close button visible immediately (no delay)
- Close button in expected location (top-left or top-right)
- Close button large enough to tap easily (44x44pt minimum)
- Close button has sufficient contrast to be visible
- Close button appears after 3 seconds
- Close button is a tiny “X” in low contrast
- Close button hidden behind other elements
- “Skip” text that looks like body copy
- No close button at all
Be transparent about free trials
Trial terms must be crystal clear Free trial rejections are extremely common. Users must understand exactly when they’ll be charged and how much. Required disclosures for trials:- Trial duration (“7-day free trial”)
- What happens when trial ends (“Then $9.99/month”)
- When the first charge occurs (“You won’t be charged until January 28, 2025”)
- How to cancel (“Cancel anytime in Settings”)
- “Start Free Trial” button with no other information
- Trial length buried in terms of service
- Post-trial price not mentioned
- No indication of when charges begin
- Implying the trial is free forever
- All four disclosures visible on the same screen as the button
- Specific date when trial ends and billing begins
- Clear statement that no charge happens today
- Cancellation instructions visible
“7-day free trial, then $9.99/month. You won’t be charged until January 28, 2025. Cancel anytime in your device settings.”
Don’t pre-select expensive options
Let users choose their plan Pre-selecting the annual plan (or any paid option) feels manipulative to reviewers, especially if it’s not the cheapest option. Acceptable approaches:- No option pre-selected (user must tap to choose)
- Cheapest option pre-selected
- Most popular option highlighted but not pre-selected
- Most expensive option pre-selected
- Only option visible is the expensive one
- Cheaper options hidden in “See all plans”
Use honest button labels
Button text must match the action The button should clearly indicate what happens when tapped. Wrong:- “Continue” (then charges immediately)
- “Next” (then starts subscription)
- “Get Started” (ambiguous)
- “Unlock” (unclear if paid)
- “Subscribe for $9.99/month”
- “Start Free Trial”
- “Purchase for $29.99”
- “Subscribe” (with price clearly shown nearby)
Avoid fake urgency and scarcity
No countdown timers or false claims Reviewers reject obvious manipulation tactics. Instant rejection triggers:- “Sale ends in 04:59” (fake countdown)
- “Only 3 spots left!” (fake scarcity)
- “50% off today only!” (always-on “sale”)
- “10,000 users upgraded this hour” (unverifiable)
- “Last chance!” (repeating message)
- Legitimate limited-time promotions (with real end dates)
- Actual user counts if verifiable
- Seasonal sales that actually end
Use RevenueCat paywalls
Pre-built paywalls are designed for compliance RevenueCat’s native paywalls are built to meet App Store and Google Play guidelines. They handle pricing display, trial terms, and required disclosures automatically.- Pricing pulled from App Store / Play Store
- Localized currency and formatting
- Trial terms displayed correctly
- Compliant by design
- Close button included
Quick checklist
Pricing clarity:- Price is prominent (not tiny or hidden)
- Billing frequency is stated (monthly, yearly)
- Auto-renewal is disclosed
- Currency is shown
- Trial length is stated
- Post-trial price is shown
- First charge date is clear
- Cancellation method is mentioned
- Close button is visible immediately
- Close button is easy to tap (44x44pt minimum)
- No option is pre-selected (or cheapest is)
- Button labels match the action
- No fake countdown timers
- No fake scarcity claims
- No unverifiable social proof
- No “bait and switch” tactics
Common rejection reasons
| Rejection | Fix |
|---|---|
| ”Price not clearly displayed” | Make price prominent, minimum 14pt font |
| ”Subscription terms unclear” | Add billing frequency and auto-renewal disclosure |
| ”Trial terms not clear” | Show trial length, post-trial price, and charge date |
| ”No way to dismiss” | Add visible close button, no delay |
| ”Deceptive button label” | Use “Subscribe for $X” instead of “Continue" |
| "Manipulative tactics” | Remove fake timers, scarcity, and urgency |
Apple’s specific requirements
Apple’s App Store Review Guidelines (section 3.1.2) require:- Clearly displayed subscription price and duration
- Description of what the subscription provides
- Clear explanation of free trial terms
- Easy access to subscription management
- No automatic upgrades without consent
- The price of the subscription
- The duration of the subscription
- A description of the content or services
- Clear cancellation terms
Still stuck?
If you keep getting rejected for deceptive paywall:- Screenshot your paywall and ask: “Is everything a user needs to know visible at a glance?”
- Have someone unfamiliar with your app try to understand the pricing in 5 seconds
- Compare your paywall to apps like Spotify, Netflix, or Headspace
- Contact support: support@despia.com with:
- Screenshot of your paywall
- Your rejection notice in full
- Whether you’re using custom or RevenueCat paywall