Which receipt field is used for processing refunds for paid apps?

The "cancellation_date_ms" receipt field is used to process refunds for In App Purchases.

What's the equivalent receipt field for paid apps?

If there isn't one, what protects apps against refund theft?

Replies

Refunded content is revoked from the customers purchase history, therefore they will not be able to redownload or update the app on their devices going forward.

  • Does a refund also remove the app from the customer's devices? If not, what's the recommended policy for developers?

Add a Comment

I am having the same problem, I suspect my app is cheating in refund, you can see the picture below

According to the above answer, can I use the following method to check?

  1. When the app is opened, I will get the AppStoreReceiptUrl.
  2. If AppStoreReceiptUrl is null or empty, I will force close the app, otherwise the user will be able to access the app.

When the app is opened, I will get the AppStoreReceiptUrl. If AppStoreReceiptUrl is null or empty, I will force close the app, otherwise the user will be able to access the app.

No, I don't think that will work. I think the valid receipt will remain in place indefinitely.

Your graphs do look suspicious, to say the least. How are your reviews and ratings? What sort of app is it?

No, I don't think that will work. I think the valid receipt will remain in place indefinitely.

According to the 2nd response of this thread, my guess is that if the user refunds the receipt the receipt will be revoked.

My app is an audiobook version of a book written by myself, I have only released it for about a month, currently only have 1 rating and no reviews, nor have I run any marketing campaigns.

Take a look here: https://developer.apple.com/documentation/appstorereceipts/validating_receipts_on_the_device

Keep in mind, that if you don't check what is inside the receipt, your app will start with any receipt.

Greetings Brigitte

I tried validate receipt and got almost same result as below

{
    "receipt": {
        "receipt_type": "Production",
        "adam_id": ...,
        "app_item_id": ...,
        "bundle_id": ...,
        "application_version": "1.7",
        "download_id": ...,
        "version_external_identifier": ...,
        "receipt_creation_date": "2022-07-25 06:21:52 Etc/GMT",
        "receipt_creation_date_ms": "1658730112000",
        "receipt_creation_date_pst": "2022-07-24 23:21:52 America/Los_Angeles",
        "request_date": "2022-07-25 07:13:59 Etc/GMT",
        "request_date_ms": "1658733239188",
        "request_date_pst": "2022-07-25 00:13:59 America/Los_Angeles",
        "original_purchase_date": "2022-05-30 14:31:25 Etc/GMT",
        "original_purchase_date_ms": "1653921085000",
        "original_purchase_date_pst": "2022-05-30 07:31:25 America/Los_Angeles",
        "original_application_version": "1.5",
        "in_app": []
    },
    "environment": "Production",
    "status": 0
}

Is that local receipt validation, or server receipt validation?

I think it's likely that server receipt validation will indicate a refunded purchase, though I don't know for sure.

Local receipt validation, I'm pretty sure will still report a valid receipt after a refund; the user will continue to be able to use the app until they try to re-install it for some reason.

My app is an audiobook version of a book written by myself, I have only released it for about a month, currently only have 1 rating and no reviews, nor have I run any marketing campaigns.

And it's a paid app? Well, it's possible that all those people buy it, start listening, and think "this is *****" and get a refund. BUT more likely at least some of them would also leave a bad review, and at least some of them would think "this is *****" but NOT get a refund - your graphs are almost perfectly symetrical, as if literally everyone is refunding it. I don't know how to explain that.

In App Store Connect, it is possible to explicitly show refunds:

App Store Connect -> Sales and Trends -> Select the app -> Click on "Transaction Type". This will separate out sales and refunds.

Does that agree with the graph you've posted?

Is that local receipt validation, or server receipt validation?

I validate from https://buy.itunes.apple.com/verifyReceipt

My app only had a lot of downloads in the early days of release because at that time I had informed my community, but the highest was only 30-40 downloads. And then it averages about 1-2 downloads per day, which makes sense since I haven't run any marketing campaigns yet.

But recently there's been a strange sign like you see in the chart above, and it's all from refund: