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

# Serials and Keys

> Sell license keys, accounts, gift cards and other pre-loaded items, and control which item each buyer receives.

Serial products deliver from a list you load in advance. Each sale takes one item off the list and sends it to the buyer, so your stock count is the number of unsold items remaining.

This is the right type for license keys, pre-made accounts, gift card codes, Discord Nitro links, top up codes and anything else that exists as a line of text.

## Loading stock

Stock lives on the variant. Open the variant and click into the deliverables field, then paste your items **one per line**.

```
XXXXX-XXXXX-XXXXX-XXXXX
YYYYY-YYYYY-YYYYY-YYYYY
ZZZZZ-ZZZZZ-ZZZZZ-ZZZZZ
```

Accounts are usually loaded in `email:password` form, and gift links as full URLs. The format does not matter. Each line is delivered exactly as written.

Blank lines are ignored and duplicates are removed when you paste, so an overlapping batch will not double up your stock.

There is no stock field to edit on a serial product. The count follows the list and drops with each sale.

## Choosing which item is delivered

**Deliverable Selection Method**, on each variant, decides which line goes out next:

| Method | Behaviour |
| - | - |
| **Last** | The most recently added item is delivered first |
| **First** | The oldest item is delivered first |
| **Random** | A random item is delivered |

**First** suits anything with an expiry date, since it clears older stock before it becomes unusable. **Last** delivers your newest batch first. **Random** is useful when buyers can compare what they received and you do not want the order of your list to be inferable.

## Managing existing stock

The same deliverables field lets you review and edit what is loaded, so you can remove a batch that turned out to be dead without clearing the whole list.

To see what a specific buyer received, open their invoice.

## Labels and messages

**Deliverables label** renames what the buyer sees their items called. Out of the box that is **Deliverables**, with **Download Deliverables** and **Copy Deliverables** buttons next to it, on the checkout page and in the delivery email.

Set it to `License Keys` and the buyer sees **License Keys**, **Download License Keys** and **Copy License Keys** instead. `Account Details` or `Gift Codes` work the same way. Keep it short, since it has to read well inside the buttons as well as on its own.

**Out of stock message** is shown when a payment completes and no stock is left. Say what happens next, because the buyer has paid and the invoice is not delivered.

## Running out of stock

If stock runs out between payment and delivery, the invoice lands at **Out of Stock** rather than failing. The payment is kept, nothing has been delivered, and it waits for you to act on it.

<Steps>
  <Step title="Load more stock">
    Add items to the variant as usual.
  </Step>

  <Step title="Process the invoice">
    Open the invoice and process it. The buyer is delivered and emailed as though it happened automatically.
  </Step>
</Steps>

To avoid it entirely, keep an eye on stock levels and use **On Hold** visibility on a product you cannot restock immediately, which keeps the page live without taking money you cannot fulfill.

## Replacing a delivered item

If a buyer reports a dead key, you can swap it from the invoice page without refunding. Each delivered item has two options:

| Action | What it does |
| - | - |
| **Replace from Stock** | Takes the next item from that variant's stock and puts it in place of the old one |
| **Replace Manually** | You type the replacement in yourself, for a key that is not in your stock list |

**Undo Replacement** puts the original back if you swap the wrong item.

The buyer sees the new item on their checkout page, at the same link they already have. That link shows the delivered items to anyone who opens it, so keep it out of public channels. See [how checkout works](/guides/checkout#how-buyers-get-there). No new delivery email is sent, so tell them to reload the page, or resend the email from the invoice page if you would rather they got it in writing.

Replacing from stock uses a unit of stock and lowers the variant's count. If that empties the variant, you get the out of stock notification as usual.

## Next steps

<CardGroup cols={2}>
  <Card title="How delivery works" icon="truck" href="/guides/delivery">
    The other delivery types and when to use them.
  </Card>

  <Card title="Products and variants" icon="box" href="/guides/products">
    Pricing, quantity limits and checkout options.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.