Developer Console

Receipt Verification for Tiered Subscriptions

With Receipt Verification Service (RVS), you can validate purchases made by your app's users.

RVS for tiered subscriptions

Set up RVS for tiered subscription apps the same as you would for any other app. For more details, see Receipt Verification Service for Appstore SDK IAP.

For apps with tiered subscriptions, RVS uses an additional cancelReason response code for canceled subscriptions.

Cancel reason response codes

The cancelReason response code is a long integer that indicates why a product is canceled. Possible values are null, 0, 1, 2, or 4, where each integer represents a cancellation reason, described in the following table.

cancelReason Code Description
null The purchase is not canceled.
0 The cancel reason is currently unavailable and renders at a later time.
1 Your customer canceled the order.
2 Amazon's system canceled the purchase. For example, a customer purchases a subscription with invalid payment and the purchase isn't completed in the grace period.
4 The subscription is replaced with a new subscription. For example, if a customer moves to a new tier, the original receipt is canceled and a new receipt is provided.

You can find a full list of response codes in the RVS documentation.

Example RVS response

The following code is an example of a full RVS response.

{
 "autoRenewing":false,
 "betaProduct":true,
 "cancelDate":1400784371000,
 "cancelReason":4,
 "countryCode":"US",
 "freeTrialEndDate":null,
 "gracePeriodEndDate":null,
 "parentProductId":null,
 "productId":"sub1",
 "productType":"SUBSCRIPTION",
 "purchaseDate":1400784241000,
 "quantity":null,
 "receiptId":"JyGJ5iEtYgFu1ngnQovTqSIHQxR53GsMLqkR1tKLp5c=:3:11",
 "renewalDate":null,
 "term":"1 Week",
 "termSku":"sub1-weekly",
 "testTransaction":true
}

The cancelReason indicates that the app has changed to a different tier, which cancels the previous subscription.

For more RVS examples, see RVS Examples for Appstore SDK IAP.


Last updated: Apr 07, 2025