StoreKit AppTransaction — Server-side paid-app refund and revocation verification

Hello Apple Developer Community,

I am preparing the first App Store release of an upfront paid iOS application using StoreKit 2 and backend verification of signed AppTransaction data.

The application does not use In-App Purchases or subscriptions.

Apple documents AppTransaction.revocationDate for detecting revocation of an app purchase on the device.

However, I have not found an equivalent documented revocation field in JWSAppTransactionDecodedPayload or an authoritative server-side mechanism for detecting refunds of the paid application itself.

My main question is:

What is Apple's officially supported approach for a backend server to independently detect and enforce refunds or revocations of an upfront paid iOS application, without relying on client cooperation?

Specifically:

  1. Is paid-app revocation information available through any server-verifiable Apple-signed field or App Store Server API endpoint?

  2. If AppTransaction.revocationDate is available only through StoreKit on the device, is there an equivalent server-verifiable signal?

  3. Do App Store Server Notifications support refunds of upfront paid applications, or only In-App Purchases?

  4. Since appTransactionId remains unchanged after refund and repurchase, how should a backend distinguish a legitimate repurchase from previously captured signed acquisition evidence?

My concern is that previously issued signed acquisition evidence may remain cryptographically valid after a refund, allowing new protected backend sessions unless an authoritative entitlement-status check is available.

I want to ensure that refunded acquisitions cannot regain unauthorized access, while legitimate repurchases can restore access correctly.

Any official Apple documentation or recommended implementation approach would be greatly appreciated.

Thank you!

StoreKit AppTransaction — Server-side paid-app refund and revocation verification
 
 
Q