Apple constantly make developer's life harder.

As stated in App Store Server Notifications documentation, top-level objects latest_receipt, latest_receipt_info, latest_expired_receipt, and latest_expired_receipt_info are scheduled for deprecation. This could be the reason for the notification to behave differently.

You should update your code to rely on latest_receipt & latest_receipt_info in unified_receipt object instead. test Source: https://developer.apple.com/documentation/appstoreservernotifications/responsebody

More Answer related to the Same Query


latest_expired_receipt_info - This array appears in the notification instead of latest_receipt_info for expired transactions. You can check the official Apple documentation here. Also note per Apple's docs: The following top-level objects are scheduled for deprecation: latest_receipt, latest_receipt_info, latest_expired_receipt, and latest_expired_receipt_info.

You might also consider a third-party service like Qonversion.io to avoid headaches implementing the subscriptions and get subscription analytics integrations out of the box.


If the order is expired when autorenew status is changes you are going to get latest_expired_receipt_info and latest_expired_receipt ( this cases include orders that are in billing retry and app store could not renew them during billing retry period, or the order was refunded), for other cases when subscription is still valid you will get latest_receipt and latest_receipt_info

Credit Goes to: stackoverflow.com

Related question with same questions but different answers