---
title: "What does the App Store notification CONSUMPTION_REQUEST mean?"
description: "CONSUMPTION_REQUEST means a customer asked Apple for a refund and Apple wants usage data from you. RevenueDot's Refund Control can answer it."
url: https://revenuedot.app/docs/notifications/apple-consumption-request
---

# What does the App Store notification CONSUMPTION_REQUEST mean?

The App Store notification CONSUMPTION_REQUEST means a customer asked for a refund and Apple wants you to report how much of the purchase they used.

## Quick facts

| | |
|---|---|
| Notification | `notificationType` `CONSUMPTION_REQUEST` |
| Where | App Store Server Notifications v2 (`responseBodyV2DecodedPayload`) |
| Sent by | The App Store server, to your notification URL |
| What Apple says | The customer started a refund request for a consumable or an auto-renewable subscription, and the App Store asks you for consumption data. |

## What triggers it

- The customer asked for a refund through Apple. Apple then asks the developer for facts about the purchase before it decides.
- It applies to consumable in-app purchases and auto-renewable subscriptions.
- Apple makes the final decision, and tells you with `REFUND` or `REFUND_DECLINED`.

## 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. Answer with the Send Consumption Information endpoint of the App Store Server API, and only when you have the customer's consent to share the data.
3. Base your answer on facts: how much they used, whether they were a paying customer, and your refund preference.
4. Wait for `REFUND` or `REFUND_DECLINED` for the result.
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":"CONSUMPTION_REQUEST","data":{"environment":"Sandbox","bundleId":"com.example.app"}};

function decide(n) {
  if (n.notificationType !== "CONSUMPTION_REQUEST") return "ignore";
  const consented = true;
  return consented ? "send consumption information to Apple" : "skip, no customer consent";
}

console.log(decide(notification));
```

*Run-checked: `npm run check:snippets` runs this snippet with Node and compares its output with `send consumption information` (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. RevenueDot's Refund Control records the request, picks a policy and, when the customer consent setting is on and the policy says to respond, sends the consumption information to Apple at once. Without consent, or when the policy is not to respond, it skips the answer and records why. It changes no purchase and sends no webhook event.

## Related

- [What does the App Store notification REFUND mean?](https://revenuedot.app/docs/notifications/apple-refund.md)
- [What does the App Store notification REFUND_DECLINED mean?](https://revenuedot.app/docs/notifications/apple-refund-declined.md)
- [What does the App Store notification REFUND_REVERSED mean?](https://revenuedot.app/docs/notifications/apple-refund-reversed.md)
- [Which webhook events does RevenueDot send?](https://revenuedot.app/docs/api/webhook-events.md)
- [Set up App Store notifications in RevenueDot](https://revenuedot.app/docs/guides/app-store.md)

## Source

- [Apple: notificationType](https://developer.apple.com/documentation/appstoreservernotifications/notificationtype)
- [Apple: Responding to App Store Server Notifications](https://developer.apple.com/documentation/appstoreservernotifications/responding-to-app-store-server-notifications)
- [Apple: app-store-server-library-node (SignedDataVerifier)](https://github.com/apple/app-store-server-library-node)
- [RevenueDot server: stores/apple/notifications.ts (how the notification is applied)](https://github.com/revenuedot/revenuedot/blob/main/apps/server/src/stores/apple/notifications.ts)
- [RevenueDot server: services/refunds.ts (Refund Control)](https://github.com/revenuedot/revenuedot/blob/main/apps/server/src/services/refunds.ts)
- [RevenueDot server: stores/apple/notifications.ts (how the notification is applied)](https://github.com/revenuedot/revenuedot/blob/main/apps/server/src/stores/apple/notifications.ts)

Checked: 2026-10-03
