We are implementing a repeatable paid Rebirth consumable in UEFN using the official Marketplace API and persistable Verse player data.
Current flow:
- Verify that the player owns the entitlement.
- Persist a pending operation key and the current Rebirth rank.
- Call ConsumeEntitlement.
- After a successful native result, save the Rebirth benefit and clear the pending operation together.
Verified in TEST MODE: a player disconnected during an injected delay after successful consumption but before the profile update. Another account kept the server running. Rejoining granted exactly one Rebirth, preserved progress, and allowed a subsequent purchase.
The case we have NOT tested is full server termination during that same window. Our recovery ledger is session-only. If that ledger is lost, current entitlement quantities alone may not distinguish consumption from a refund or administrative removal.
What is the supported recovery pattern for this case? Is there a durable consumption receipt/history API, an idempotency key, or an atomic consumption-and-persistence operation? How should entitlement-change events be used for this recovery?
How can full-session termination be tested without real charges, given that debug-session entitlements are removed when the session ends?
All purchases tested so far were in TEST MODE. Production paid access remains disabled.