price_increase

Learn about the PRICE_INCREASE App Store Server Notification V2. Fired when customer consent is required for a subscription price increase.

App Store Server Notifications V2Offers
price_increase

The PRICE_INCREASE notification fires when Apple requires customer consent for a subscription price increase before it can take effect. Not all price increases require consent — only those exceeding certain thresholds.


When does it fire?


This notification triggers in two scenarios:


  • Consent pending (subtype PENDING) — Apple has notified the customer about the price increase and is awaiting their response
  • Consent accepted (subtype ACCEPTED) — the customer agreed to the new price

If the customer doesn't consent within the allowed timeframe, their subscription will expire at the end of the current period.


Payload highlights


The signed renewal info shows the pending new price as renewalPrice and the consent status as priceIncreaseStatus. The price the customer is paying today is in the signed transaction info instead, so comparing the two takes both JWS payloads.


How Yeethook helps


Price increases are high-stakes events that can significantly impact retention. Yeethook delivers consent status updates to Slack or Discord so your team can monitor acceptance rates and react quickly if consent rates are lower than expected.


Common use cases


  • Monitor price increase consent rates in real-time
  • Identify regions or segments with low consent rates
  • Alert your pricing team when consent trends are concerning
  • Track the revenue impact of price increases

Example payload

The decoded body while Apple is waiting for the customer to accept a higher price. The pending amount is not in this object — it is renewalPrice inside signedRenewalInfo, alongside priceIncreaseStatus.

{
  "notificationType": "PRICE_INCREASE",
  "subtype": "PENDING",
  "notificationUUID": "1d84f057-6b2e-4c93-a07d-8f5c31e97b2a",
  "version": "2.0",
  "signedDate": 1789889784000,
  "data": {
    "appAppleId": 1234567890,
    "bundleId": "com.example.app",
    "bundleVersion": "142",
    "environment": "Production",
    "signedTransactionInfo": "eyJhbGciOiJFUzI1NiIsIng1YyI6...",
    "signedRenewalInfo": "eyJhbGciOiJFUzI1NiIsIng1YyI6...",
    "status": 1
  }
}

What it looks like in Slack

Info

Price increase pending

Product
com.example.app.pro.monthly
Price
9.99 USD
Transaction
2000000798765432
Expires
2026-11-12T09:34:13.000Z
Auto-renew
On
Subscription status
Active
Environment
Production

The same event arrives with different values depending on what changed. Yeethook rewrites the headline to match:

  • ACCEPTED→ Price increase accepted

Questions about price_increase

Which field carries the new price?

renewalPrice and currency in signedRenewalInfo hold the amount the customer will be charged next period. The Price row Yeethook shows comes from the transaction instead, so it reflects what the customer paid last time, not the increase.

How do I check whether the customer has consented yet?

priceIncreaseStatus in signedRenewalInfo is 0 while the customer has not responded and 1 once they have consented. The PENDING and ACCEPTED subtypes track the same transition, which is why Yeethook only changes the headline between those two states.

Is a price decrease reported through this event?

No. Decreases never need consent, so they generate no PRICE_INCREASE notification at all. Apps on the Advanced Commerce API get PRICE_CHANGE for server-driven price edits in either direction, but that is a different notification type.

Why do these arrive in bursts, then trickle for days?

One PENDING notification is sent per affected subscriber when Apple starts the consent flow, so a catalogue-wide increase produces a spike. The matching ACCEPTED events land individually as each customer taps through the prompt, often days later.

Related Events

Get this event in Slack or Discord

Connect Yeethook to receive price_increase notifications in your team's Slack or Discord channels.

Get Started Free