Clarification about product with status "Developer Removed from Sale"

Summary

After setting a single auto-renewable subscription product (not the app) to "Developer Removed from Sale" in App Store Connect, the next scheduled renewal for an existing active subscriber failed with DID_FAIL_TO_RENEW v2 and expirationIntent = 5 ("expired for some other reason"). I expected expirationIntent = 4 ("product wasn't available for purchase at the time of renewal"), since the product was, in fact, not available for purchase.

I would like to confirm whether 5 is the documented/expected value for this scenario, and how to deterministically distinguish "developer removed product from sale" from other renewal failures using the notification payload.

Reproduction / observed sequence

  • Day 15: Changed product annual_promo (auto-renewable subscription) status from "Approved" to "Developer Removed from Sale" in App Store Connect. The app itself remained Approved and on sale. Other subscription products in the same group remained Approved.
  • Day 16: An existing active subscriber on that product had a scheduled automatic renewal date.
  • Result: Renewal did not occur. We received a DID_FAIL_TO_RENEW v2 notification.
  • Payload (relevant fields):
    • JWSRenewalInfoDecodedPayload.expirationIntent = 5
    • JWSRenewalInfoDecodedPayload.autoRenewStatus = 0

Questions

  1. Is expirationIntent = 5 the correct/expected value when a renewal fails because the developer removed the product from sale? Or should it have been 4 ("product wasn't available for purchase at the time of renewal")?
  2. If 5 is intentional, what is the engineering rationale for not using 4 in this scenario?
  3. Given that expirationIntent = 5 is documented as a catch-all ("some other reason"), which other fields in the DID_FAIL_TO_RENEW payload (e.g., subtype, autoRenewStatus, gracePeriodExpiresDate, signedTransactionInfo) should we inspect to deterministically classify the failure cause and isolate "developer removed product from sale" from billing failure / customer cancel / price-increase not accepted / etc.?

Context

Thanks in advance.

Clarification about product with status "Developer Removed from Sale"
 
 
Q