I'm currently implementing In-App purchases for our iOS Application. Specifically, I'm currently working on Subscriptions. We offer several terms for non-renewing subscriptions (1 month, 3 months, 6 months), and an auto-renewing subscription that lasts 1 month at a time. I've set up a system that will check overnight if an auto-renewing subscription is still valid and has not been refunded yet with Apple's receipt verification servers. For auto-renewing subscriptions, I can limit this to purchases made in the last month, since after that I should have either a new transaction for this user, or the subscription has expired.
My question is, however, if non-renewing subscriptions also need to be checked regularly, specifically for updates in the cancellation_date field. In the Receipt Validation Programming Guide, the cancellation_date field does not say that it is only specific to auto-renewing subscriptions. However, several other pieces of documentation and answers (excuse me for the lack of links here) have suggested that this is something you only need to check for updates in auto-renewing subscriptions.
I think that the only reason non-renewing subscriptions are always returned in the transaction receipt are so that apps that do not store this information on their server can restore a user's subscription. However, if the transaction is also updated if any changes occur in the payment, I would very much like to keep an eye on that information as well.
Since we have a large number of users, and having to check either only the payments for the last month or all payments made in the past 6 months makes quite a big difference, I would like to hear your opinion (and hopefully experience) in this regards.