On paid plans, a database record is created for each user logging into your app and making purchases. This entry can also be referred to as User Storage or User Inventory. The user inventory contains most recent subscriptions and non-consumables. It is stored in the cloud and can be retrieved by calling the Get User API endpoint.
Use the inventory to grant active products received in the response, or display messages about billing issues or expired subscriptions to the user.
There is no user inventory if you selected
Disabled in your App Setup for
Please try to minimize calls to retrieve user inventory as they could be rate limited. For more information on how to avoid excessive API usage, please see the notes in the Get User API.
Each user can access its inventory for the duration stated in the plan. Based on statistics measuring average application usage, a storage duration of 6 months covers more than half of mobile apps. Without further interaction with the inventory, the user record is deleted on the expiration date. The expiration date is reset when adding new transactions.
So, if the user is doing a purchase at least every few months, its record will not expire. Although consumable purchases are not stored in user inventory, they will also extend the expiration date, if the record contains at least one active product. To ensure a continuous storage in a subscription based app, the storage duration should be equal or longer than your maximum subscription cycle.
For example, if you are offering one-year subscriptions, the storage duration of your selected plan should be one year or longer. You should also consider switching to a plan supporting longer durations, in case you are offering non-consumable in-app purchases and expect a very long usage period.
After its expiration, products can be re-added to the user inventory by invoking the native restore transactions workflow and validating receipts again.