Rejection decoder › Guideline 3.1.2
Guideline 3.1.2 rejection: subscriptions and the paywall
Guideline 3.1.2 covers auto-renewable subscriptions. Most rejections are about the paywall screen, not the product: the reviewer could not see what the user pays and when, could not find Terms of Use and Privacy Policy links, or could not restore a purchase.
Apple decides. This page is our own reading of the App Review Guidelines as of September 2026, not Apple's wording, and following it does not guarantee approval. The current text at developer.apple.com is the authority.
What Apple's message says
Apple usually names the missing items. Paraphrased, the common ones are:
- Missing links: the purchase flow, or the App Store metadata, does not include a working link to Terms of Use (EULA) and to the Privacy Policy.
- Unclear terms: the billed amount is not the most prominent price, or a free trial hides what happens when it ends. Users must see the title, length and price of each subscription before paying.
- No restore: there is no way to restore a previous purchase on a new device. Apple often cites this under 3.1.1 as well.
- Not enough ongoing value (3.1.2(a)): a subscription for something that does not change or keep delivering over time.
Why AI-built apps hit it
Paywalls in AI-built apps usually start as a web pricing page. When In-App Purchase is added later, often with RevenueCat, the screen keeps its web layout:
- The Terms and Privacy links live in the web footer, which the wrapped app hides.
- "Start free trial" is the big text and the yearly price is small grey text below it, or the price shown is a per-week figure that is not what gets billed.
- There is no Restore Purchases button because the web version restored access through login.
- The Terms link points to a page on the builder's preview domain that returns an error on the reviewer's network.
- The App Store description does not mention Terms of Use, and the custom EULA field is empty.
How to fix it, step by step
- Show each plan clearly on the paywall: name, length (monthly, yearly), and the full billed price as the largest price on screen. A per-week or per-month breakdown can appear, but smaller.
- Explain the trial in plain words near the button: "Free for 7 days, then $29.99 per year. Cancel any time in Settings." Use the real numbers for each storefront, which StoreKit or RevenueCat provide.
- Add two working links on the paywall: Terms of Use and Privacy Policy. They should open real pages on your own domain, not a preview URL. Apple's standard EULA is acceptable if you do not have your own.
- Add a Restore Purchases button on the paywall and in Settings. It should call the restore function in StoreKit or your billing SDK and show a result message.
- Update App Store Connect: put the Privacy Policy URL in App Privacy, and either add a Terms of Use link to the description or fill the custom License Agreement field.
- Check the subscription products are attached to the app version and have a display name and description.
- Test a sandbox purchase, a restore and a cancel on a real device, then upload a new build.
What to reply in the Resolution Center
Fill in the brackets and delete anything you did not do. Say where on screen each item is, so the reviewer can find it quickly.
Hello, Thank you. In build [version], the subscription screen ([where it appears, e.g. "after onboarding and under Settings > Plan"]) now shows the plan name, length and full billed price, working links to our Terms of Use and Privacy Policy, and a Restore Purchases button. We also added the Terms of Use link to the App Store description. Best regards, [Your name]
Related guidelines
- Guideline 3.1.1: In-app purchase if the app still sells digital access through Stripe or a web checkout.
- Guideline 2.1: App completeness and Information Needed if the reviewer could not load the subscription products at all.
- Guideline 2.3: Accurate metadata if the description advertises features that are behind the paywall without saying so.
Questions
Where do the Terms of Use and Privacy Policy links need to be?
In the app's purchase flow, usually on the paywall, and in the App Store metadata: the Privacy Policy URL field, plus a Terms of Use link in the description or a custom License Agreement. Both links must open working pages.
Do I need a Restore Purchases button if users log in?
Apple expects a restore mechanism for restorable purchases, and a visible Restore Purchases button is the common way reviewers look for it. Login-based access alone is often not enough, especially for a user who never created an account.
Can I show the weekly price bigger than the yearly price?
Apple wants the amount that will be billed to be the most prominent price. A per-week breakdown can appear, but smaller than the price actually charged. Trial wording should say what is charged after the trial ends.
Stuck on this rejection?
Paste the full message into the free rejection decoder to see every cited guideline explained, with a reply draft. It runs in your browser and nothing is uploaded.
Or order a rejection fix, $99: we read the full message, find the cause, fix it in your project, upload a new build and draft the reply for your approval. Target turnaround 72 hours from access. Apple still makes the final decision, and its review time is separate.