What to do when Apple rejects your price change
Apple's price-change failures are terse and hard to diagnose. This guide maps every common rejection scenario — grandfathering blocks, API error codes, agreement issues — to its root cause and the fastest fix.
You've decided to raise your subscription price — sensible, given rising server costs, added features, or the simple realization that your app is underpriced relative to comparable tools. You open App Store Connect, navigate to your in-app purchase, enter the new figure, and hit save. Nothing happens. Or worse: a red error banner appears with a message so terse it tells you almost nothing useful.
Apple's pricing machinery is robust, but it is not transparent. When a price change is blocked, the error language is typically brief, and the documentation explaining why the block occurred is scattered across developer guides, support threads, and the App Store Connect help centre. This post consolidates the most common failure modes and their fixes — so you spend less time guessing and more time shipping.
Why Apple Blocks Price Changes in the First Place
Apple's pricing pipeline runs checks at multiple points: when you save a price in App Store Connect manually, when a scheduled price change activates, and when the App Store Connect API is used to push price updates programmatically. A rejection at any one of these points has different symptoms and different remedies.
Broadly, rejections fall into four categories:
- Eligibility failures — the price point or territory combination isn't valid for your account or app type.
- Grandfathering and notification constraints — Apple's mandatory notification window before existing subscribers can be billed at a higher price.
- Scheduling or state conflicts — the system is already mid-process on another change for the same IAP, or the IAP is currently in review.
- Account and payment issues — incomplete, expired, or unaccepted banking, tax, or agreement information that blocks financial changes.
Rule of thumb: if your app has active subscribers, budget at least 48–72 hours for a price change to propagate fully across Apple's systems. Price updates are eventually consistent across storefronts, and a change that appears blocked may simply be queued rather than rejected outright.
The Most Common Rejection Scenarios
The table below maps failure scenarios to their likely root cause and the most productive first step toward resolution. Note that App Store Connect's UI error messages often don't map cleanly to these categories — you'll need to cross-reference against what changed in your account recently.
| Scenario / Error | Root cause | First fix to try |
|---|---|---|
| "Price point not available in this territory" | The entered price doesn't correspond to a valid price point in that storefront's currency | Use App Store Connect's price point picker rather than typing a raw number; Apple's generated-price system requires selecting from a pre-approved set |
| Save button grayed out or spinner that never resolves | A pending scheduled change already exists for this IAP | Cancel the existing scheduled change first, then re-enter your new target price |
API error: PRICE_POINT_NOT_FOUND |
The pricePoint ID in your API request doesn't exist for that territory-currency combination | Re-fetch available price points from the API before every write; never cache price-point IDs across sessions |
| Grandfathering block on a subscription price increase | Apple requires a notification window before billing existing subscribers at a new, higher price; a second increase during that window is blocked | Confirm the current notification period has fully elapsed before scheduling a follow-on increase |
| "Agreements, tax, or banking information needs to be updated" | Expired or unsigned Paid Apps Agreement, missing tax form, or unverified bank account | Navigate to App Store Connect → Agreements, Tax, and Banking and resolve all Action Required items |
| Price change reverts silently overnight | Automation or a second team member's scheduled change overwrote the update | Audit App Store Connect activity logs and review any CI/CD pipelines that call the pricing API |
API error: STATE_ERROR |
The IAP is currently under App Review (for example, as part of a new submission that includes a new in-app purchase) | Wait for the review to complete; pricing endpoints are locked while the IAP is in review state |
The Grandfathering Case: Apple's Most Misunderstood Rule
The single largest source of confusion around subscription price changes is Apple's grandfathering mechanism — a consumer protection system that prevents subscribers from being silently billed more without prior notice. If you've attempted a second price increase within weeks of a first one and hit a wall, this is almost certainly the culprit.
When you raise the price of an auto-renewable subscription, Apple splits your subscriber base into two cohorts:
- New subscribers — anyone who subscribes after your change takes effect pays the new price immediately and automatically.
- Existing subscribers — anyone subscribed before the change receives an Apple-generated email and push notification. They are given a window — approximately 30 days — to accept the new price; if they don't, their subscription lapses rather than being silently upgraded.
The complication arises when you try to make a second price change before the notification window for the first change has fully closed. Apple's system treats this as an attempt to modify an in-progress notification cycle, and it blocks or queues the second change. The UI rarely offers a clear explanation — you typically see a generic error or a save that doesn't stick.
The fix requires patience: wait for the first notification cycle to fully complete before scheduling a follow-on increase. To verify whether the window is still open, check your Subscription Reports in App Store Connect under Sales and Trends — the "Subscribers" section will show when existing-subscriber transitions have stabilised. For a thorough treatment of this mechanism, including what happens when you reduce a price (no window required) and how Apple handles international grandfathering, see our post on Apple's grandfathering rules for subscription price changes.
One practical note: price reductions are not subject to the grandfathering window. You can lower a subscription price at any time and existing subscribers are moved to the lower price at their next renewal cycle without any notification requirement. This asymmetry is intentional — Apple's rules are designed to protect subscribers from surprise increases, not from surprise discounts.
Diagnosing API-Specific Rejections
If you're pushing price changes via the App Store Connect API — as part of an automation script or a multi-territory update workflow — the failure mode looks different from a UI rejection. Rather than a banner, you receive a JSON error response. The most actionable fields are code, detail, and source within the errors array.
Common error codes in the pricing domain:
ENTITY_NOT_FOUND— the IAP or app ID in your request doesn't match any resource in your account. Double-check that you're using the numeric app ID, not the bundle ID string.INVALID_ATTRIBUTEwith source pointer/data/relationships/pricePoint— you're referencing a price-point ID that isn't valid for the currency or territory you've specified. Apple can add and retire price points when it updates storefront configurations, so IDs fetched weeks ago may no longer be valid.STATE_ERROR— the IAP is in a locked state, typically because it's under review as part of a new IAP submission or because a previous API operation is still pending.FORBIDDENon the price endpoint — most often an authentication issue. App Store Connect API JWT tokens are short-lived (maximum 20 minutes); check that theexpclaim in your token is not in the past. See our walkthrough on App Store Connect API JWT authentication for token generation details, and our API key setup guide for confirming your key has the correct role.
If your API call returns FORBIDDEN and your JWT looks syntactically correct, check whether the API key itself has been revoked in App Store Connect. Revoked keys return HTTP 403 — the same status as an insufficient-scope error — not 401. It's an easy misdiagnosis that sends developers down the wrong debugging path.
A reliable debugging sequence for API pricing failures:
- Re-fetch valid price-point IDs for your target territory via
GET /v1/inAppPurchasePriceSchedules/{id}/manualPricesimmediately before your write call. Never use cached price-point IDs from a previous session. - Confirm your API key carries either the Finance or Admin role. Developer and Marketing roles cannot write pricing data.
- Log the full response body — not just the HTTP status code. The
errorsarray typically contains the specificdetailstring that tells you exactly what the system rejected. - If you're updating prices across multiple territories in a single script, process them sequentially rather than in parallel. Concurrent writes to the same IAP's price schedule can produce race conditions that trigger
STATE_ERROR.
Account and Agreement Blockers
A price change that works for some apps in your account but fails for a specific app is often a contract issue rather than a system-wide problem. Apple requires that the Paid Apps Agreement be active and accepted for every app that sells in-app purchases. If that agreement has expired, or if Apple has issued an updated version that you haven't countersigned, pricing changes for affected apps will be blocked — sometimes with a clear message, sometimes silently.
To check:
- In App Store Connect, navigate to the account-level view (not a specific app), then go to Agreements, Tax, and Banking.
- Look for any agreements marked Action Required or Expired.
- Complete the required action, then wait 24 hours before retrying your price change. Agreement updates can take time to propagate through Apple's entitlement systems.
Similarly, if your banking details have changed — a new routing number, a new account — Apple may hold financial changes until the new details are verified. This verification can take several business days through Apple's internal team, and during that window, new price changes may be queued rather than processed.
For teams with multiple Apple accounts or developer programs (for example, a company that has both an individual and an organisation account), confirm that the price change is being made from the account that owns the relevant app — pricing permissions don't cross account boundaries, and an Admin role on one account gives you no access to another account's apps.
A Pre-Flight Checklist Before Your Next Price Change
Running through the following before any price update will catch the majority of rejection scenarios before they occur:
- Agreements status — confirm the Paid Apps Agreement shows "Active" with no pending actions in Agreements, Tax, and Banking.
- Grandfathering window (subscriptions only) — if you've raised prices on this subscription in the past 45 days, verify the notification cycle has fully closed before initiating a follow-on increase.
- Pending scheduled changes — check whether an existing scheduled price change is already queued for this IAP. Cancel it before adding a new one.
- Valid price points — use App Store Connect's price point picker to confirm your target price exists as an approved point in each territory you're updating. Avoid entering raw monetary values.
- IAP review state — confirm the IAP is not currently in review. If it is, wait for the review to conclude before attempting a price change.
- API key role (if using the API) — verify the key carries Finance or Admin role, and that it hasn't been revoked.
- Token expiry (if using the API) — generate a fresh JWT immediately before any write operation; don't reuse tokens from earlier in your session.
- Bank and tax verification — even if you haven't changed anything recently, spot-check the Agreements, Tax, and Banking section. Apple occasionally requires periodic re-verification.
Keeping a lightweight log of every price change — territory, IAP ID, timestamp, old price, new price, and whether the change succeeded — pays dividends quickly. When a change silently reverts or an unexpected error appears, a simple log makes it possible to isolate the window of failure rather than investigating blindly. For apps operating across many storefronts, visit the pricing overview to understand how Apple's territory-level price generation interacts with your base price selections.
Sources and Further Reading
- Apple Developer — Manage pricing for auto-renewable subscriptions (App Store Connect Help)
- App Store Connect API reference — pricing endpoints and error codes
- Apple Developer — Auto-renewable subscriptions overview and policy
- RevenueCat Blog — Handling iOS subscription price increases
- Phiture Mobile Growth Stack — App Store subscription price increase guide
- Apple Developer News — Apple updates App Store pricing for developers (2022 pricing system changes)
Share this post
Ready to put this into practice?
appsops.store gives you PPP-adjusted pricing across all 175+ App Store territories, App Store Connect API automation, and 39-language localization — all from one dashboard.
Start free →