Handling Refund Notifications

Hi,

We want to handle the Refund Notification in our webhook as we saw here: https://developer.apple.com/documentation/storekit/original_api_for_in-app_purchase/handling_refund_notifications

However this part is not clear for us: "Refunded transactions are not present in the JSON response when you call the verifyReceipt endpoint with a receipt that contains refunded transactions, except for auto-renewable subscriptions."

Does this mean that we should not send the received REFUND notification to the https://buy.itunes.apple.com/verifyReceipt endpoint for verification?

We have tried to verify some REFUND notifications which we received in our webhook(for not auto-renewable products) and after sending it to the /verifyReceipt endpoint we got back the same data, the refunded transactions were present in the response.

As a conclusion, is it ok to verify these refund receipts too?

Accepted Reply

As I understand, there has been an update to how the verifyReceipt endpoint handles refunded transactions. When you receive a REFUND notification for a refunded transaction of a non-consumable or non-renewing subscription item, you can send the latest appStoreReceipt and include the password (shared-secret) key in the request payload to the verifyReceipt endpoint. If there has been a recent refund applied to a non-consumable or non-renewing subscription item, the "latest_receipt_info" section of the validated JSON response will include that transaction. The transaction information will include the cancellation_date field. Check this out and respond to this forum posting if indeed this is correct.

rich kubota developer technical support CoreOS/Hardware/MFI

Replies

As I understand, there has been an update to how the verifyReceipt endpoint handles refunded transactions. When you receive a REFUND notification for a refunded transaction of a non-consumable or non-renewing subscription item, you can send the latest appStoreReceipt and include the password (shared-secret) key in the request payload to the verifyReceipt endpoint. If there has been a recent refund applied to a non-consumable or non-renewing subscription item, the "latest_receipt_info" section of the validated JSON response will include that transaction. The transaction information will include the cancellation_date field. Check this out and respond to this forum posting if indeed this is correct.

rich kubota developer technical support CoreOS/Hardware/MFI

Hi,

It works, sending a non-consumable/non-renewing receipt to the /verifyReceipt returns data about that item in the latest_receipt_info array, also setting the cancelation_date_* properties.

Thanks.