price_change

Learn about the PRICE_CHANGE App Store Server Notification V2. Fired when you change a subscription price through the Advanced Commerce API.

App Store Server Notifications V2Advanced Commerce
price_change

The PRICE_CHANGE notification fires when you change a subscription price through the Advanced Commerce API Change Subscription Price endpoint. It is separate from PRICE_INCREASE, which covers App Store price-increase consent for standard auto-renewable subscriptions.


When does it fire?


This notification triggers after you call the Change Subscription Price endpoint. Only apps that use Advanced Commerce receive it.


Payload highlights


The signed transaction and renewal info include the product and the updated price so you can confirm the new amount and currency.


How Yeethook helps


Server-driven price changes can be easy to lose in API logs. Yeethook posts them to Slack or Discord next to PRICE_INCREASE consent events so billing and support see both kinds of price change in one place.


Common use cases


  • Confirm an Advanced Commerce price change applied
  • Distinguish server-driven price edits from customer consent events
  • Alert finance when subscription prices change

Example payload

The decoded body after an Advanced Commerce price edit, sent with no subtype. The Price row Yeethook shows comes from the transaction, so it is the amount already paid — the new amount is renewalPrice inside signedRenewalInfo.

{
  "notificationType": "PRICE_CHANGE",
  "notificationUUID": "a71f2c60-4e85-49b3-8d07-62c15e0af934",
  "version": "2.0",
  "signedDate": 1791099706000,
  "data": {
    "appAppleId": 1234567890,
    "bundleId": "com.example.app",
    "bundleVersion": "142",
    "environment": "Production",
    "signedTransactionInfo": "eyJhbGciOiJFUzI1NiIsIng1YyI6...",
    "signedRenewalInfo": "eyJhbGciOiJFUzI1NiIsIng1YyI6...",
    "status": 1
  }
}

What it looks like in Slack

Info

Subscription price changed

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

Questions about price_change

How is PRICE_CHANGE different from PRICE_INCREASE?

PRICE_CHANGE reports a price edit your server made through the Advanced Commerce API, so it has no subtypes and no consent flow. PRICE_INCREASE is the App Store consent process for standard auto-renewable subscriptions and always arrives as PENDING or ACCEPTED.

When does the new price take effect?

At the next renewal. The current period is already paid, which is why the Expires row still reflects a period bought at the old price, and why no charge happens at the moment the notification arrives.

Is a new transaction created by the price change?

No. Nothing is billed at the time of the edit, so no transaction is generated and the Transaction row still shows the last renewal. The first transaction carrying the new amount is the one attached to the following DID_RENEW.

Get this event in Slack or Discord

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

Get Started Free