Skip to main content
Question

Maintain entitlement after subscription cancelation

  • February 15, 2026
  • 3 replies
  • 24 views

Forum|alt.badge.img

I have an app where I want to offer:

  • Remove Ads for say $6.99 as a one time purchase
  • VIP Pass for say $11.99/year that includes the ad removal and other VIP features.

As the cost of the yearly sub is more than the one time purchase for ad removal I want to make it so if a user pays at least once for the yearly sub and doesn't ask for a refund, then the no_ads entitlement stays in their account even if they end up canceling at some point the VIP pass.

Is this possible? how can I achieve it? Or is there a way for me to check in the code that they've had at least one successful vip pass payment that has not been refunded even if I don't get the entitlement?

3 replies

alejandra-wetsch
RevenueCat Staff
Forum|alt.badge.img+6

Hey ​@agch

Thank you for reaching out!

To accomplish this result, you could use the Granted Entitlements feature. Once you have established that the user is eligible to keep the Entitlement, you can make an API call to the Grant Entitlement API endpoint.

You send the entitlement identifier (already created in the RevenueCat Dashboard, different than the VIP Pass Entitlement) for this special entitlement, the App User ID to which it should be assigned, and an end date when the entitlement will expire (This can be set to extend for several years into the future).

The result would be that the User will have both the entitlement they purchased with the VIP Pass and the entitlement granted by you. If the user cancels their subscription and their original entitlement is revoked, they will still have access to the granted entitlement.

If, for some reason, you would like to revoke these Entitlements, you can do it via the Dashboard or via the API.

To check user eligibility, the GET /subscribers endpoint returns the complete customer profile, including subscription history and purchase dates. You could check whether the VIP Pass product exists in their subscriptions object and verify that the product’s refunded_at property is null.

I hope this helps!


Forum|alt.badge.img
  • Author
  • New Member
  • February 21, 2026

hi, thanks for the detailed reply. My app doesn't have a backend or authed users, but from what you are saying there is no way to get around not having a dedicated BE to grant that entitlement. Or could those api endpoints that you are mentioning be called from the app itself. Or to put it another way, is is proper to call them from the app?

If I grant an entitlement to a revenue cat user for sth that they didn't purchase. Then they unistall the app and install it again. A new revenue cat id would be created. If they then restore purchases, will the user ids merge automatically and the old extra entitlement be available or do I need to re-grant it based on the purchase history?


Forum|alt.badge.img
  • Member
  • February 21, 2026

Hi!

 

About your question on calling the endpoints, it is possible to do so from your app. There could be some discussion about how having a separate backend to handle all these might be worth it in terms of security, reliability and separation of concerns. 

 

For restoring purchases, there are a couple settings you can choose from, but I believe the default one is already what you want. The entitlement, however, would not be granted by default given that restoring takes purchasing info as the source of truth. You could still run the same logic you first used to established if the user should have the granted entitlement or not. 

 

Cam