refund_declined

Learn about the REFUND_DECLINED App Store Server Notification V2. Fired when Apple declines a customer refund request.

App Store Server Notifications V2Refunds
refund_declined

The REFUND_DECLINED notification fires when Apple's support team declines a customer's request for a refund. The original transaction remains valid and the customer retains access.


When does it fire?


This notification triggers after Apple reviews and denies a refund request. This is good news for your revenue — the transaction stands and no money is returned to the customer.


Payload highlights


The signed transaction info includes the original transaction ID and product ID for the transaction that was not refunded. This lets you confirm that the customer's access should remain intact.


How Yeethook helps


While refund declines are positive events, they're still worth tracking. Yeethook delivers these to your channels so your team has a complete picture of refund activity — both approved and denied.


Common use cases


  • Track refund request approval vs. denial rates
  • Monitor the total volume of refund requests
  • Confirm customer access remains valid after declined refunds
  • Measure the effectiveness of consumption data reporting

Example payload

The decoded body when Apple turns down a refund request. Nothing in the payload changes state on your side: the referenced transaction still has no revocationDate, so it remains valid.

{
  "notificationType": "REFUND_DECLINED",
  "notificationUUID": "8e0b41d6-72a3-4c85-b19f-04d5e6a73c28",
  "version": "2.0",
  "signedDate": 1790062630000,
  "data": {
    "appAppleId": 1234567890,
    "bundleId": "com.example.app",
    "bundleVersion": "142",
    "environment": "Production",
    "signedTransactionInfo": "eyJhbGciOiJFUzI1NiIsIng1YyI6..."
  }
}

What it looks like in Slack

Success

Refund declined

Product
com.example.app.coins.500
Price
4.99 USD
Transaction
2000000856781234
Environment
Production

Questions about refund_declined

Do I need to change anything when a refund is declined?

No. The transaction keeps its entitlement and gains no revocationDate, so re-checking it against the App Store Server API returns the same result as before the request. The event is informational, which is why Yeethook posts it at success level.

Can the customer request the same refund again?

Yes, and each decision generates its own notification against the same originalTransactionId. If a later attempt succeeds you receive REFUND for that transaction, so treat a decline as the outcome of one request rather than a permanent verdict.

Does Apple explain why it declined the request?

No. The payload is the standard transaction and app identifiers with no decision metadata, no reviewer notes and no reference to the consumption data you may have submitted. The only way to reason about outcomes is in aggregate across many requests.

Get this event in Slack or Discord

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

Get Started Free