> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokensupply.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Products and inventory keys

> Why products and keys are kept separate, and how a single key moves from upload to reveal.

TokenSupply keeps two things apart on purpose: the products you list, and the keys you actually deliver. Understanding this split makes stock, restocking, and fulfilment much easier to reason about.

## Products describe, keys deliver

A product is a listing. It has a name, a description, a price, and everything a buyer sees. It does not contain the actual codes.

Inventory is the pool of real keys and codes tied to a product. When you restock, you add keys to inventory. The listing itself never changes.

<Note>
  Because listings and keys are separate, you can top up stock, run low, or sell out without ever editing the product. The listing stays stable while the pool behind it goes up and down.
</Note>

## The life of a key

A single key moves through a clear set of stages from the moment you add it until the buyer sees it.

<Steps>
  <Step title="Uploaded into stock">
    You add the key to inventory. It sits in the pool, available to sell, and it is stored protected so no one can read it in passing.
  </Step>

  <Step title="Reserved for an order">
    When an order needs it, the key is set aside so it cannot be sold twice. It is held for that specific order.
  </Step>

  <Step title="Delivered to a buyer">
    At fulfilment, the reserved key is issued to the buyer's order and a private delivery page is prepared for them.
  </Step>

  <Step title="Revealed by the buyer">
    The key stays masked until the buyer opens their delivery page and chooses to reveal it. Only then is the real value shown.
  </Step>
</Steps>

<Note>
  A sale that a channel delivered itself skips the reserve step. The channel has already handed the key over, so TokenSupply records the order as completed rather than holding the key for you to deliver.
</Note>

## Keys stay masked until revealed

Throughout its life, a key is kept hidden. You and your team do not need to see the raw value to sell it, and the list of keys only ever shows it masked. When someone on your team does need the value, they can reveal it from the product's keys page. That needs **Manage** access to Inventory, and every reveal is logged against the key, so there is a record of who viewed it and when.

## A key's history outlives the key

Every key keeps an activity record: when it was added, revealed, copied, moved between statuses, replaced, or noted. Deleting a key does not erase that record, so the audit trail of what happened to it is kept on file. See [Key details](/guides/products-inventory/key-details).

<Warning>
  Once a key has been delivered and revealed by a buyer, treat it as spent. It belongs to that order and should not be reused for another sale.
</Warning>

<CardGroup cols={2}>
  <Card title="Add a product" icon="key" href="/guides/products-inventory/add-a-product">
    Create a listing for something you sell.
  </Card>

  <Card title="Load inventory" icon="key" href="/guides/products-inventory/load-inventory">
    Add keys and codes to a product's stock.
  </Card>

  <Card title="Manage stock" icon="key" href="/guides/products-inventory/manage-stock">
    Keep an eye on levels and restock.
  </Card>

  <Card title="Orders and fulfilment" icon="paper-plane" href="/how-it-works/orders-and-fulfilment-lifecycle">
    How a key gets from stock to a buyer.
  </Card>
</CardGroup>
