Skip to main content
Question

Test store renewals - API returns empty entitlements momentarily in between renewals

  • August 8, 2026
  • 4 replies
  • 61 views

Forum|alt.badge.img

Hi, 
I am integrating RevenueCat in my app and currently testing monthly subscriptions using the Test Store.
I tried using the REST V2 api to get the customer’s active entitlements on my backend server. It gives proper response most of the time but during the process of renewal, for about a minute, I get an empty response for active entitlements.
“items”: []

So let’s say I made a purchase at 10:00AM, here is the series of observations:

First purchase → 10:00AM to about 10:04AM - active entitlements present
At around 10:04AM → Set for renewal → Active entitlements empty
~10:05AM → Renewal → active entitlements present

This repeats until the subscription is cancelled automatically after 5 times.

I am using this endpoint:
https://api.revenuecat.com/v2/projects/{project_id}/customers/{customer_id}/active_entitlements

Is this an expected behaviour? If yes, then, is the REST api a reliable source of active entitlements?

Thanks,
Abhi

4 replies

dmatthews-rc
RevenueCat Staff
Forum|alt.badge.img+1
  • RevenueCat Staff
  • August 10, 2026

Hi Abhi,

Thanks for raising this. The test store transaction do indeed have simplified renewal logic where it waits for after the expiration to create the renewal. For production transactions, the API should absolutely be reliable for checking entitlements.

However, since we certainly want the test transactions to give the most accurate simulation possible, I will check with engineering to see if we can improve this experience.

I’ll let you know when I learn more.

Cheers,
Debbie


Forum|alt.badge.img
  • Author
  • New Member
  • August 11, 2026

Hi Debbie,

Thanks, that makes sense. I was wondering if I had to design a solution to handle this case. No need then, I guess.
So, what I understand is that entitlements won’t be empty in between renewals on Production. I will build according to that.

Thanks again,

Abhi
 


dmatthews-rc
RevenueCat Staff
Forum|alt.badge.img+1
  • RevenueCat Staff
  • August 12, 2026

Sounds good! I’ll update this thread if anything changes on our end, for future reference.

Cheers,
Debbie


Forum|alt.badge.img
  • New Member
  • August 14, 2026

One production note to complement the answer above, since this exact area bit us after we moved past the Test Store: even in production, I’d avoid letting a single point-in-time poll of active entitlements be the thing that cuts off access. Around billing retry / grace period an expiration can be followed by a recovery, and if your backend hard-revokes on the first empty response, the user loses access mid-recovery.

The pattern that has been reliable for us: treat webhooks as the source of truth for state changes (EXPIRATION, BILLING_ISSUE, RENEWAL, UNCANCELLATION), store the last known expiration date server-side, and only revoke once that date passes with no renewal event — plus a small buffer. The v2 active-entitlements endpoint then becomes a reconciliation check rather than the gatekeeper. It also helps to enable grace period / billing retry in the store configs so the recovery events exist at all.