What does the App Store notification PRICE_INCREASE mean?

The App Store notification PRICE_INCREASE means the system informed a customer of a subscription price increase.

Quick facts#

Notification notificationType PRICE_INCREASE
Where App Store Server Notifications v2 (responseBodyV2DecodedPayload)
Sent by The App Store server, to your notification URL
What Apple says The system informed the customer of an auto-renewable subscription price increase. With consent required, PENDING means no answer yet and ACCEPTED means consent; with no consent required, the subtype is ACCEPTED.

What triggers it#

  • Subtype PENDING: the increase needs the customer's consent and they have not responded.
  • Subtype ACCEPTED: the customer consented, or the increase did not need consent and the system just notified them.
  • If the customer never consents, the subscription ends with EXPIRED and subtype PRICE_INCREASE.

What your server should do#

  1. Verify the signedPayload with Apple's App Store Server Library (SignedDataVerifier.verifyAndDecodeNotification) before you act on anything in it.
  2. On PENDING, remind the customer in your app that the new price needs their consent before the renewal.
  3. On ACCEPTED, record the new price for reporting.
  4. Expect EXPIRED with subtype PRICE_INCREASE for customers who ignore it, and plan a win-back.
  5. Answer HTTP 200 (any code from 200 to 206) once you have stored the notification. Apple retries other answers five times, at 1, 12, 24, 48 and 72 hours after the previous attempt, so make your handler safe to run twice (the payload carries a notificationUUID).

Example#

JavaScript
// Run on the decoded payload, after you verified Apple's signature.
const notification = {"notificationType":"PRICE_INCREASE","subtype":"PENDING","data":{"environment":"Sandbox","bundleId":"com.example.app"}};

function decide(n) {
  if (n.notificationType !== "PRICE_INCREASE") return "ignore";
  return n.subtype === "PENDING" ? "remind the customer to accept the new price" : "record the accepted price";
}

console.log(decide(notification));

Run-checked: npm run check:snippets runs this snippet with Node and compares its output with remind the customer (checked 2026-10-03).

How RevenueDot handles it#

RevenueDot verifies Apple's signature, checks the bundle ID, stores the notification and answers 200. A purchase RevenueDot has not seen is applied only when the app's Track new purchases from server-to-server notifications setting is on. The subtype sets the stored consent state (PENDING or ACCEPTED). A change into pending gives a PRICE_INCREASE_CONSENT_REQUIRED event and a change into accepted gives PRICE_INCREASE_CONSENT_APPROVED.

Source#

Checked: 2026-10-03

Edit this page on GitHub ↗ View as Markdown Last updated