# Real reward shops inside experiences

Place a normal player stall in an authored room to sell real items that stay in the buyer's inventory outside the experience.

Place a normal player stall in an authored room to sell real items that stay in
the buyer's inventory outside the experience. Stock it with minted editions,
set the price to **0** for a free claim, and set **Per player** to 1 for a
once-per-player reward (0 in the editor means unlimited). Limits count actual
items, including bundle quantities, for that stall and lineage across versions,
restocks, public/private copies, reconnects and resale. A failed purchase consumes
neither stock, money nor allowance. Stock is shared by all copies of the room.

The creator can bind the stall to saved progression using the authenticated
`stall:access` channel operation. Example JSON (creator owns both stall and game):

```json
{"id":"stl_example","rules":{"experience_id":"xp_root","save_key":"progress","save_field":"rank","minimum":10}}
```

The buyer must meet the persisted numeric requirement and stand within three
tiles of the visible stall in a published copy of that game. Knowing a listing id
or opening its shop window grants no purchase access. `rules:null` removes the
requirement; only the stall owner may configure it. Use the root experience id
for games with several rooms. Private and public copies share the same save.

Normal stall UI handles the purchase, with an explicit **Claim free** or **Buy**
button. Lua cannot debit wallets or mint transferable rewards. Creator-owned,
finite stock supplies the rewards, not the temporary objects cloned into a room.
Persistent purchase totals are separate from script saves, so scripts cannot
reset a player's claim allowance.
