Why do App Store prices revert in some countries?

Last updated · 6 min read · By Giacomo Balli
TL;DR

App Store Connect replaces an app's or in-app purchase's price schedule as a whole. When a tool sends a new schedule naming only the territories it changed, every territory it left out goes back to Apple's automatic price. Send the US base plus every manually priced territory in each request, then read prices back.

Prices revert because Apple's price schedule is a full replacement, not a patch. The App Store Connect API stores the price of an app or a non-subscription in-app purchase as one schedule: a base territory plus a list of manual prices. Creating a new schedule discards the old one, including discounts set months earlier. Subscriptions store prices differently and fail in their own ways.

How does Apple store app and in-app purchase prices?

App Store Connect stores an app's price, and each non-subscription in-app purchase's price, as a single price schedule: one base territory, usually the United States, plus manual prices for any territories you set yourself. Every other storefront follows Apple's automatic equalization of the base price.

Apple sells in 175 storefronts and sets prices from a base price you choose. Each territory has its own price ladder, roughly 800 points per territory in the responses we cache, and a manual price must be one of those points. A price point ID encodes the product, the territory and the tier, so a ladder fetched for one product can be reused for another of the same kind.

Apple bills 109 of the 175 territories in US dollars, according to the currency field the API returns for each territory. A purchasing-power tool therefore has to convert into the billing currency, not the local one, before it picks a point on the ladder.

Why does a territory you left out revert?

A territory reverts because posting a new app or in-app purchase price schedule replaces the previous schedule in full. Any territory missing from the new schedule's manual prices has no manual price any more, so App Store Connect prices it at Apple's automatic equalization of the base price.

Picture an app at $9.99 in the US with manual discounts in India and Brazil. A tool that wants to lower Türkiye sends a schedule with the US base and Türkiye only. Türkiye gets its new price, and India and Brazil silently return to Apple's automatic prices. Nothing errors, and App Store Connect shows the new schedule as if it were complete.

We shipped this bug ourselves: the hosted App Store Localization web app sent only the territories it was discounting, which could revert earlier discounts. The Mac app sends the US base plus every discounted territory in each request, and refuses a price plan if any price changed after the plan was made.

Before and after view of an App Store app price schedule where a POST naming only the US and Türkiye reverts India and Brazil to Apple's price
Illustrative prices. Territories missing from the new schedule fall back to Apple's price.

How are subscription prices different from app prices?

Auto-renewable subscription prices are separate rows per territory, not one schedule, so they never revert wholesale and never equalize automatically. A territory without a row has no price. Each territory accepts one pending future price, and a change to an approved subscription must start no earlier than tomorrow in UTC.

Apple applies a price decrease to existing subscribers at their next renewal, while an increase can require their consent depending on its size and the territory. Rows marked as preserved belong to subscribers kept on an older price, and a tool that reads them as current prices reports the wrong number.

A pending row blocks the next change in that territory. The Mac app clears the pending rows of the territories it is repricing, keeps the others, then posts the new prices with a start date two days out. A subscription not yet approved can take its first prices with no start date.

Four steps for changing App Store auto-renewable subscription prices: clear pending rows, post new rows two days out in UTC, retry on Apple's date, verify
Clear pending prices, post with a UTC start date, retry on Apple's date, verify.

Why do subscription start dates fail in some time zones?

App Store Connect evaluates subscription price start dates in UTC. A script in California that computes tomorrow's date after 5 p.m. Pacific daylight time produces a date that is already today in UTC, and Apple rejects it as too early. Compute start dates in UTC, or add a day of margin.

When Apple refuses a start date it states the earliest date it will accept, phrased as on or after a given day. Retrying once with that date fixes most refusals. The original App Store Localization server mixed Los Angeles time and UTC in different paths, which is how this trap was found.

How do you check prices after a change?

Check App Store prices by reading the live schedule back from App Store Connect after the change, not by trusting the request that set it. A price is active when its start date has passed, or it has none, and it has not ended; when several qualify, the latest start wins.

The Mac app's verify step reads live prices and tests eight sample markets, India, Türkiye, Brazil, Nigeria, Japan, Italy, the UK and Germany, against the pricing rule. It is written independently of the planner, so a bug in planning does not also hide itself in verification. Run asl prices for the current and scheduled price of every territory.

Watch currencies with no cents. Kuwait and Bahrain bill in dinars, where a valid price can sit below 1.00, and a filter that drops sub-dollar values as mistakes will drop them too.

App Store Localization for Mac reads and plans every change for free; a one-time license applies them. macOS 26 or later.

Key takeaways

Frequently asked questions

Why did my app's price in India go back to the default?

The App Store Connect price schedule for your app was most likely replaced by a request that did not include India. Apple treats every schedule as complete, so a territory missing from the new manual prices returns to Apple's automatic equalization of the base price. Set India again and include it in every later schedule.

Do subscription price decreases apply to existing subscribers?

Yes. When you lower an auto-renewable subscription's price in a territory, Apple applies the lower price to existing subscribers in that territory at their next renewal. Plan decreases with that in mind, because a purchasing-power discount also reduces revenue from people who were already paying the higher price.

How many territories does the App Store sell in?

The App Store sells in 175 storefronts, each with its own currency and price ladder. Apple bills 109 of them in US dollars, according to the territory data the App Store Connect API returns, and the rest in a local or regional currency such as the euro, yen, rupee or Kuwaiti dinar.

About the author

Giacomo Balli builds App Store Localization at BigBalli Consulting LLC. He has shipped iOS apps independently since 2010, has more than 100 of them live on the App Store, and wrote the Mac app to run the releases, translations and prices of his own catalogue.

Disclosure

BigBalli Consulting LLC makes App Store Localization for Mac, which is free to download and costs $79 once to apply changes. The API behaviour described here was observed while building it against Apple's App Store Connect API. No company named on this page paid to be mentioned.