Is it possible to check receipts for expired or renewed subscriptions prior to the current one?

Hello, I’m trying to offer a subscription service that unlocks certain content to those who are subscribed, and allows them to retain this content so long as they are subscribed. This is on iOS/Android.

Example:
User 1 subscribes any time in January, gets 3 items. In February, they get 3 more items. In March, 4 more items. They have access to 10 items now.
User 2 who subscribes in March only has the 4 items provided in March, but none of the items provided in January/February.
User 3 subscribes in January, gets 3 items, and cancels. In March, they subscribe again and get 4 items, and re-gain access to the 3 January items (but not the 3 February items), making 7 total items for them.

I understand I could achieve this to some degree by saving locally the things they received in each respective month, but that would not cover a situation where someone deletes their save data. I want to be able to validate with the server all the previous receipts for any previous subscription so that any of the 3 users mentioned above can delete their save data in March and retain all of their respective content.

On the documentation, I tried to see if “getPurchaseDate()” would allow for this. It says: “For Apple, the purchase date is the date when the subscription was either purchased or renewed. For Google, the purchase date is the date when the subscription was originally purchased.”

To me, this is not clear on a few fronts—but most relevant, do receipts exist for previously expired or renewed subscriptions, so that I can see the purchase date of non-current subscriptions?

Can you elaborate, “subscribes and gets 3 items”? Generally a subscription is not item dependent, but time dependent, like “Don’t show ads for one month”. Are you saying that the subscription provides them with 3 items at the 1st of each month, for example? If it’s not a recurring product, then you likely don’t want to use subscriptions. But regardless, this is something you would want to track yourself.

Yes, I can be more clear. My app is a music app, where a certain selection of songs are free, and another selection of songs are available to paid subscribers. Over time, I will update the library of songs for subscribers, including removing some songs and adding others. So, for example, if 3 songs are available in January, and then a different set of 3 songs in February, and 4 songs in March (just examples). However, I would consider it more than ideal if I could say to my users “the songs in any given month will be made available to you indefinitely, so long as you had a subscription and played the game during that time”. As I said, I could track this stuff in the game data, but if the user deletes the game data, I would like to be able to see their previous subscription receipts, so I could give them access to the songs that were available during each receipt’s time.

Understood. It’s my understanding that Apple returns all receipts each time, so you could parse the receipt payload. Google does not. But likely in each case, you probably would want to track the user purchases server-side, I believe ChilliConnect and PlayFab offer such services.

When you say “server-side”, do you mean on my own server rather than the ones on Apple’s/Google’s ends?

Neither actually! I meant the ChilliConnect or PlayFab servers.

Sure, that’s kind of what I meant by that. So, just to be clear, you don’t think this sort of goal would be reasonable using Google’s and Apple’s own receipt system. It sounds like it wouldn’t even be possible on Google’s end.

If an Apple subscription had expired, there may no longer be the receipt available, now that I think about it. So correct, you would need to save this info on your own server or use one of the mentioned services.

Alright, thank you very much for the detailed and helpful responses.