Ship Desk

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:

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:

How to fix it, step by step

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Check the subscription products are attached to the app version and have a display name and description.
  7. 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

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.