> For the complete documentation index, see [llms.txt](https://sdk.metamarket.tech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sdk.metamarket.tech/core-concepts/rewards-and-inventory.md).

# Rewards and Inventory

A player finishes a quest and gets a chest. Inside is some currency, a cosmetic, and a smaller chest. They open it later, and everything lands in the right place. On MetaMarket that whole flow, the grant, the holding, the opening, the payout, is one mechanism: the reward package. Quests, shops, spins, and starter kits all deliver through it, so a studio configures rewards once and reuses the same path everywhere.

## Reward packages

A package moves through four steps, and a given reward uses as many as it needs:

* **Grant** puts the package into the player's possession.
* **Store** holds it as an unopened item, a chest that waits to be opened.
* **Open** turns an unopened item into its contents.
* **Fulfill** applies those contents to the player: credits the currency, adds the cosmetic, writes the stat.

A simple reward grants and fulfills in one motion. A loot box grants and stores, then opens later. A package can also nest other packages, so the chest-inside-a-chest resolves in a single opening rather than a chain of custom code. Because every reward source shares this one delivery path, a quest reward, a shop purchase, and a spin result behave consistently and are described the same way in configuration.

## Inventory

Inventory is what a player currently holds: the unopened boxes, the items granted to them, the things waiting to be used. A game reads a player's inventory and can open a stored package on demand. Opening runs the same fulfill step as any other delivery, so an item opened from inventory and a reward paid straight out of a quest reach state through identical logic.

## Delivering later

Not every reward has to resolve the instant it is granted. A package can be marked for deferred delivery, granted now but opened the next time the player is active, which lets a starter kit be waiting, already unwrapped, on a new player's first session without a client-driven open call. This deferred update runs as part of normal activity rather than on a background timer: the player acts, the pending delivery catches up, and the result comes back in that response. The catch-up mechanism and its configuration are covered in [App Configuration](/evaluate-and-integrate/app-configuration.md).

The open call and inventory reads are in the [HTTP API](/evaluate-and-integrate/api-guide.md); the reward payload a package carries is composed in configuration, covered in [App Configuration](/evaluate-and-integrate/app-configuration.md).
