# Inventory

Inventory is where Kwik Nkap keeps the real stock count for the things a merchant sells. Each product you sell has a name, a price, and a quantity on hand, and every change to that quantity is recorded. Inventory items back the products you put on a [Storefront](/en/products/storefronts) and the line items you bill on an [invoice](/en/products/invoices), and stock is reserved and deducted automatically as sales move through Mobile Money.

:::note
Inventory is managed in the Kwik Nkap **dashboard** ([app.kwiknkap.com](https://app.kwiknkap.com)) today. It is not yet exposed on the public developer API, which is currently limited to Mobile Money collections (`POST /v1/payments`, `GET /v1/payments`, `GET /v1/payments/{paymentId}/status`). Exposing inventory on the public API is planned. The concepts and behavior below describe the real product as it works in the dashboard.
:::

## What Inventory is

Inventory is your catalog of the real things you sell, with a live count of how many you have. Instead of guessing what is in stock, you keep one source of truth that every other Kwik Nkap product reads from: a Storefront grid, an invoice line item, and a Nudle menu all draw on the same inventory.

The point of tracking stock live is simple: a product cannot be oversold. While one buyer is approving a Mobile Money prompt on their phone, the quantity they are buying is already held, so a second buyer cannot purchase stock that is about to be gone.

## Inventory items

An inventory item is one product in your catalog. It carries:

| Field | What it is |
| --- | --- |
| Name | The product's name, shown wherever it is sold. |
| Price | The unit price in whole XAF francs. |
| Quantity | The total stock on hand. |
| Reserved quantity | The portion of that stock currently held by pending sales. |

The quantity a buyer can actually purchase is `quantity - reservedQuantity`. That available figure, not the raw quantity, is what a Storefront shows so that stock already held by a checkout in progress is not offered twice.

When you create an [invoice](/en/products/invoices) with line items, those items are synced into your business inventory catalog, so billing a customer for a product and tracking its stock stay in step.

## Stock levels and stock movements

Inventory tracks two numbers for every item:

- **Quantity**: how many units you have in total.
- **Reserved quantity**: how many of those units are held by pending sales and cannot be sold again until they clear or expire.

Every change to stock is recorded as a stock movement, so an item carries a history of how its count got to where it is: increases when you restock, decreases when a sale is confirmed, reservations when an invoice is published, and releases when a reservation expires. The movement history lets you see why a count changed, not just what it is now.

## Adjusting stock

You adjust stock from the dashboard. An adjustment changes an item's quantity and is itself recorded as a stock movement:

- **Increase** the quantity when you receive more stock or correct a count that was too low.
- **Decrease** the quantity when you write off, damage, or correct a count that was too high.

:::tip
Adjustments change the on-hand quantity directly. They are separate from reservations, which are created and released automatically by invoices and Storefront checkouts. Use an adjustment to restock or fix a count, not to undo a reservation.
:::

## How Inventory connects to the rest of the platform

Inventory is the stock layer underneath several Kwik Nkap products. Two connections matter most.

### Selling inventory items on a Storefront

A [Storefront](/en/products/storefronts) item can reference an inventory product, so the product you put on a hosted store is backed by real stock you track. On a published store, the available quantity a buyer sees is `quantity - reservedQuantity`, the same live figure inventory tracks. Because the store reads the available figure rather than the raw quantity, products already held by pending checkouts are not oversold while a buyer is approving a Mobile Money prompt.

### Reserving stock on an invoice

Publishing an [invoice](/en/products/invoices) reserves inventory stock for the items on that invoice. The reservation holds the stock so it cannot be double-sold while the customer is paying:

1. **Publish.** Matching inventory stock is reserved for 7 days. The reserved quantity goes up, so the available quantity goes down.
2. **Pay.** When the Mobile Money collection settles and the invoice is marked `PAID`, the reservation is confirmed and the stock is deducted from the on-hand quantity.
3. **Expire.** If the invoice is never paid, the reservation expires and the held stock is released back to available.

```text
Published invoice  ->  stock reserved (7 days)
Successful payment ->  reservation confirmed, quantity deducted
Never paid         ->  reservation expires, stock released
```

This reserve-on-publish, deduct-on-payment flow is what keeps stock honest across the platform: a Storefront checkout in progress and a published invoice both hold the stock they need, and the same item's available quantity reflects every hold in real time.

## Searching items

As your catalog grows you can search your inventory by name to find a specific item quickly, whether you are pricing a new Storefront product, adding a line to an invoice, or adjusting a count. Search works over the same catalog every other product reads from.

## Where this lives

Inventory is a dashboard product. Create items, adjust stock, and review stock movements at [app.kwiknkap.com](https://app.kwiknkap.com). The reservations and deductions described above are driven automatically by the products that consume inventory, so you do not have to manage holds by hand.

## Next steps

- See [Storefronts](/en/products/storefronts) to put your inventory products on a hosted, no-code store.
- See [Invoices](/en/products/invoices) to bill a customer for inventory items and reserve their stock until the invoice is paid.
- Read [Payments & Collections](/en/payments/overview) to understand the Mobile Money collection that settles every sale and confirms a reservation.
