> For the complete documentation index, see [llms.txt](https://docs.allout.game/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.allout.game/monetization/in-game-products.md).

# In Game Products

Consumables and game passes are created in similar ways but have slightly different use cases!

### Product Types

#### Game Passes

Use game passes for persistent one-time purchases:

* Unlocking admin passes
* Permanent power ups/abilities
* Buying houses

#### Consumables

Use consumables for products you want people to be able to buy multiple times:

* Health potions
* Buffs that expire over time
* One time in-game coin purchases

### Creating Products

<figure><img src="https://3803321901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzA8RGUKJ88fD0oXVALlz%2Fuploads%2Fgit-blob-c14e477cb11e87cac616ceb940669663e39b8081%2Fimage.png?alt=media" alt="Add Product form in the Monetization tab"><figcaption><p>To create a product click the "+ Add Product" button on the Monetization tab of your game's Creator Portal</p></figcaption></figure>

<figure><img src="https://3803321901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzA8RGUKJ88fD0oXVALlz%2Fuploads%2Fgit-blob-e6392255f1c97f0c51da4ac8aeab7d7a8177ef4e%2Fimage.png?alt=media" alt="Product form with the consumable option clear"><figcaption><p>If the consumable box is not checked this will be a "Game Pass"</p></figcaption></figure>

{% hint style="warning" %}
Uploading product images is currently restricted to admins only. Please reach out on [Developer Support](/going-all-out/developer-support.md) to upload thumbnails
{% endhint %}

### Understanding the products list

The Monetization page shows your products and their activity for the selected date range:

* Product names, prices, and IDs. Copy a product ID to use it in your [purchase code](/core-engine-concepts/purchasing-product-apis.md).
* Sales and Spark spending history.
* **Payout-eligible** and **Ineligible** Spark spending. Only the eligible portion contributes to the game's withdrawal balance.
* **Grant Failures**, so you can find purchases whose in-game reward still needs to be delivered.

The **Game Spark balance** shows your remaining tracked eligible earnings after refunds and previous withdrawals. It covers the tracking period independently of the report's date filter.

Select **Withdrawal** to transfer eligible earnings to the creator or a current editor. The recipient receives 70%, rounded down to whole Sparks. To exchange received Sparks for money at $1 USD per 100 Sparks, contact the All Out team. See [Spark Withdrawals](/monetization/spark-withdrawals.md) for fees, permissions, refunds, and cash-out details.

#### Purchase Handlers / Grant Failures

When a user buys a product in your game, we run the `ao_purchase_handler` function you've defined in your game code.

Your purchase handler will normally grant an item or feature to a player based on which product ID they bought. Return `true` only after the grant succeeds.

If your purchase handler fails—for example, if their inventory was full and you didn't handle that scenario—return `false`. It will count as a "grant failure" and be displayed in the Products page on the Creator Portal so you can fix the issue.

Grant failures will be **automatically retried each time the player joins until they succeed.** Handlers must be safe to run again and must not partly grant a reward before returning `false`.

If your purchase handler was successful, but for some reason the user lost the item due to a game bug or otherwise, you can **re-run** the purchase handler for that user by marking the purchase as ungranted in the [Editing/Viewing Player Data](/data-and-persistence/editing-viewing-player-data.md) "Purchases" section. Confirm that replaying the handler will not duplicate the reward first.
