GetPurchasedEntitlements Returns False for Players With Valid Purchases Until Session Rejoin

Summary

GetPurchasedEntitlements intermittently returns an empty result (False) for players who have already purchased the entitlement, primarily affecting PlayStation players. The issue does not resolve on its own, even after waiting over an hour in the same session, the function keeps returning False. The only fix is for the player to fully leave the island and rejoin a new session.

Please select what you are reporting on:

Verse

What Type of Bug are you experiencing?

Other

Steps to Reproduce

  1. Player purchases an Entitlement through the Marketplace (works correctly at time of purchase).
  2. Player leaves the session and returns to play the island on a different occasion.
  3. On session join, the game calls GetPurchasedEntitlements(Player, Entitlement) to verify ownership.
  4. In a small percentage of cases (~10%), primarily on PlayStation, the call returns an empty array even though the player owns the entitlement.
  5. The game incorrectly treats the player as not having purchased the item and prompts them to buy it again.

Expected Result

GetPurchasedEntitlements should always return the player’s owned entitlements correctly, regardless of platform, and should not require the player to leave and rejoin the session to get an accurate result.

Observed Result

The function returns an empty result (Length == 0) for a player who has already purchased the entitlement. Retrying the call repeatedly within the same session does not fix it, we confirmed the incorrect False result persists for over an hour in the same session. The player is only able to get the correct True result after fully leaving the island and joining a brand new session.

Platform(s)

PlayStation (PS4/PS5) — all reports we’ve received so far are specifically from PlayStation players. We cannot fully rule out other platforms due to limited sample size, but PlayStation is the only platform confirmed affected on our end.

Island Code

9862-4661-6699

Additional Notes

This appears to be the same underlying issue reported in FORT-1128433 ( Entitlement purchases bug ), which describes “Purchases not syncing on join… only apply after rejoining a new session.” We’re submitting this as an additional data point, since our observations consistently point to PlayStation specifically, and the incorrect state persists well beyond any reasonable sync delay (over an hour) within the same session.

For reference, here is the verification function we’re using, called directly against GetPurchasedEntitlements with no additional caching or wrapping logic on our end:

CheckEntitlementPurchaseState<public>(PlayerRef : player, Entitlement : subtype(entitlement))<suspends>:logic=
    Result := GetPurchasedEntitlements(PlayerRef, Entitlement)
    if(Result.Length > 0):
        return true
    else:
        return false