Games request purchases. Players approve them. The platform settles them. Your game can never take coins on its own.
The purchase flow
- Your game calls
Turntable.shop.purchase(itemId). - The platform creates a pending purchase intent and notifies the Turntable app.
- The app shows a native confirmation sheet — item name, price, the player’s balance, and (for loot boxes) the full drop table. Your game cannot draw over, dismiss, or fake this sheet; it lives outside the WebView entirely.
- The player approves or declines. The promise your game is awaiting resolves with the outcome:
expired like declined.
Items and loot boxes
Creators define items per game (name, description, price, and optionally a loot table). Two rules are enforced by the platform:- Odds are public. Loot-box drop rates are returned by
shop.listItems(), shown on the native confirmation sheet, and available through the public API. There is no hidden-odds mode. - Grants are server-side. Loot-box rolls happen on the platform, not in your game’s code, and land in the player’s inventory atomically with the charge.
Who can buy
Purchases require a signed-in account — guests accrue coins/progress but can’t spend until they sign up (see the platform’s account-gating model). Your game doesn’t need to check this; a guest’s purchase attempt resolvesdeclined after the platform prompts them to sign in.