# Tracking products and stock movements

Create a product, record stock coming in and going out, view its history and link a payment request when the movement is chargeable.

Language : en
Updated : 2026-09-07
Source : https://app.bookelio.app/docs/en/stock

## Product, quantity and movement

The stock module tracks the organisation's product quantities and explains changes to them. A product describes what you count; a movement records an increase, decrease or correction, including stock before and after the operation.

A movement can be linked to a payment request, but not every movement is a sale. Restocking, a loss or an inventory correction can change stock without requesting money from a customer.

Access: **Dashboard → Stock**. For a chargeable operation, prepare the [customer record](/docs/en/customers), price and VAT information. The permissions required may differ between creating a product, adjusting quantities and creating a payment request.

Some of these screens currently retain French labels. 'Ajuster le stock' means adjust stock, 'Inclure les inactifs' means include inactive products, 'Voir l’historique' means view history and 'Marquer la demande comme payée' means mark the request as paid. The functions are described in English below.

## Creating a product

1. In the Stock module, open product creation.
2. Give it an identifiable name and, where useful, a description.
3. Optionally enter a **SKU** reference to distinguish the product from similar references.
4. Choose a clear unit: item, box or another unit matching how you count.
5. Enter the actual initial stock.
6. Optionally set the low-stock alert threshold.
7. Add a default unit price excluding VAT and a VAT policy if needed.
8. Save and check the displayed quantity.

A SKU already used by another product in the organisation is refused. Search for the existing reference before creating an almost identical variant.

Initial stock above zero creates an incoming movement labelled 'Stock initial' (initial stock). This gives the history a traceable starting point. After creation, use movements to change the quantity rather than treating the product record as a counter to overwrite.

### Choosing a consistent unit

If you count boxes, a movement of `+10` represents ten boxes, not automatically ten items. Keep the same convention across the team. The total units across several products adds their quantities; it does not convert boxes into items or calculate the stock's financial value.

The default unit price helps prepare a payment request. This price does not mean that a product is automatically offered for sale on a public website.

## Reading the indicators and finding a product

The page shows the number of active products, units in stock and number of products at the low-stock threshold. A product is considered low when its quantity is less than or equal to its configured threshold.

These indicators follow the loaded product list, including the current search. If you search for a single reference, do not read the counters as a complete inventory of the entire organisation.

Use the search field and **Include inactive** option to find a deactivated product. Inactive products are hidden by default. The active status is changed in the product record; deactivating a reference does not erase its previous movements.

The low-stock signal is a dashboard indicator. Do not confuse it with confirmation that a supplier order or restocking email has been sent.

## Recording stock coming in or going out

1. Find the product, then open **Adjust stock**.
2. Check the product and current quantity.
3. Select the type: adjustment, incoming, outgoing, sale, restocking, loss or return.
4. Enter the **change**, including its sign: `+10` to add ten units, `-2` to remove two.
5. Optionally add a reason and an internal note.
6. Enable the payment request only if this operation should be charged.
7. Save, then check the resulting quantity and the new movement.

The dialog defaults to an outgoing movement. The type describes the movement; always reread the signed change, which determines the quantity added or removed.

Example: stock is 12 units and you give 3 units to a customer. The change is `-3` and the new stock is 9. To record restocking of 8 units, the change is `+8`: do not enter 17, which would be an additional change rather than the intended total.

The reason is optional: if you leave it blank, Bookelio generates one. A note remains useful for an inventory discrepancy, a damaged parcel or a return that needs to be matched to a previous operation.

An operation that would make stock negative is refused. If another manager changes stock between you opening the dialog and confirming, Bookelio may also refuse the operation and ask you to reload the page. Check the new quantity before trying again.

## Creating a payment request with the movement

In the adjustment dialog, the payment request option adds the financial information.

1. Select the billing customer.
2. Check the unit price excluding VAT suggested from the product.
3. Check the VAT rate, unit and other tax information displayed.
4. Adjust the description and buyer reference if necessary.
5. Tick the option for payment already received only if the money has actually been collected.
6. Save, then open the payment request linked to the movement to check the result.

The billed quantity is the absolute value of the change. With an outgoing movement of `-3` units at €10 excluding VAT, the base is €30 excluding VAT, before VAT. The negative sign of an outgoing movement therefore does not create a negative invoice.

The **Already paid** option creates a completed external payment for the request's amount. It records money received elsewhere; it does not charge the customer. Do not enable it merely to indicate that the customer will pay later.

The movement and its request are saved together. A payment request is not necessarily an invoice already issued: continue tracking it in [Payments](/docs/en/payments) and [Invoices and credit notes](/docs/en/invoices-and-credit-notes).

## Viewing and correcting history

The page shows the organisation's **50 recent movements**. A product's **View history** action loads up to **200 movements** for that product. These are limited lists, not a guarantee that every older movement is visible on screen.

Each movement shows the date, type, change, stock before and after, reason and any payment request, among other details. Use this view to explain why a quantity changed.

The **Edit** action on a recent movement lets you correct its type, reason and note. It does not let you rewrite the historical quantity or the stock before and after. Changing the type from 'Outgoing' to 'Return' therefore does not put units back into stock.

If the quantity was wrong, enter a new correction movement after checking the actual inventory. Example: a decrease of 5 was recorded instead of 3; an adjustment of `+2`, with an explanatory note, restores the quantity while preserving a record of both operations.

## Checks when there is a discrepancy

First check the unit, sign and difference between the change and the intended total. Then review the product history and notes before creating a correction.

If a sale is cancelled, distinguish the physical return of products from the financial correction. An incoming stock movement does not automatically refund the customer, and a refund does not automatically restore a quantity in this module. Handle each part explicitly to avoid a correct inventory associated with an incorrect payment, or the reverse.
