Non-consumable entitlement (MaxCount=1) lost after purchase — offer re-prompts, re-purchase silently fails with no V-Bucks charge

WHAT HAPPENS:

A V-Bucks entitlement on my published island, declared Consumable=false / MaxCount=1 (a one-time permanent unlock), is being lost after purchase.

The buyer is charged and the unlock works for the rest of that session. But on their next join, GetPurchasedEntitlements returns 0 for it.

The island then shows the offer again, and re-purchasing silently fails: the purchase dialog opens, but confirming does nothing. BuyOffer returns false, no V-Bucks are charged, and no entitlement change event fires.

The account ends up permanently stuck: they paid for the unlock, no longer have it, and can never buy it again.

POSSIBLE CAUSE:

My Verse code called ConsumeEntitlement after the successful BuyOffer. Per the digest docs, ConsumeEntitlement “Fails if: The entitlement is not consumable” — so this call should be a harmless no-op here.

But the entitlement is demonstrably ending up at count 0: one affected account was later able to purchase the same MaxCount=1 offer a second time (and was charged again), which should be impossible if it were still owned.

TIMELINE:

This began with my first island update published after v41.30. The identical Verse code runs on my other island (5383-4620-2241), which has not been re-published recently, and the same offer works correctly there.

Please select what you are reporting on:

Unreal Editor for Fortnite

What Type of Bug are you experiencing?

Other

Steps to Reproduce

  1. Declare an entitlement with Consumable=false and MaxCount=1, plus an
    entitlement_offer for it (V-Bucks priced), in an island uploaded on the current
    Fortnite version.
  2. In Verse, sell it with BuyOffer(Player, Offer); after PurchaseResult is true,
    call ConsumeEntitlement(Player, Offer.EntitlementType). (Per the documentation
    this call should fail for a non-consumable.)
  3. Publish the island. On an account that has NEVER bought this offer, join the
    live island and purchase the offer. Purchase succeeds and V-Bucks are charged.
  4. Leave the session and rejoin the island.
  5. Call GetPurchasedEntitlements(Player, …) — it returns 0 for the entitlement.
  6. Present the offer again via BuyOffer and attempt to purchase.

Expected Result

Either the entitlement remains owned across sessions (ConsumeEntitlement failing
harmlessly on a non-consumable, as documented), or — if the entitlement can be
lost — the re-purchase attempt should either succeed or fail with clear feedback.
A player should never be charged for a MaxCount=1 unlock and end up in a state
where they own 0 of it and can never purchase it again.

Observed Result

After rejoining, the entitlement is gone (GetPurchasedEntitlements returns 0).
The re-purchase dialog opens normally, but confirming does nothing: BuyOffer
returns false, no V-Bucks are deducted, no GetEntitlementsChangedEvent fires.
This repeats forever. Reproduced deterministically with a brand-new account on
the first rejoin after purchase. Days later, one affected account WAS allowed to
purchase again (charged a second time for a MaxCount=1 offer) and the cycle
repeated.

Platform(s)

Tested on PC

Island Code

0242-1196-2261

Video