SimpliServDocs

Inventory logic & stock control

Stock, reservations, serial numbers and stock movements explained simply

→ Open stock levels in SimpliServ

This document explains how stock is tracked in SimpliServ, when products are reserved and how serial numbers are handled. It helps you understand day-to-day stock movements better – from goods receipt to sale.

The basic principle of stock control

For each product and warehouse the system works with three stock values:

  • quantity_total – total physical stock in the warehouse
  • quantity_reserved – reserved stock (e.g. for orders)
  • quantity_available – currently free, available stock

The central rule is:

quantity_available = quantity_total - quantity_reserved

That way it's always clear what's physically there and how much of it is already tied to open orders.

Goods receipt

A goods receipt increases the stock in the warehouse.

Non-serialized products

Typical examples are screws, cables or consumables.

When a quantity is booked on receipt (e.g. +10), stock increases directly:

  • quantity_total rises
  • quantity_available rises
  • quantity_reserved stays unchanged

Example:

  • Before: total = 5, reserved = 1, available = 4
  • After goods receipt (+10): total = 15, reserved = 1, available = 14

Serialized products

Typical examples are iPhones, laptops, routers or other devices with a serial number.

For serialized products you can, on goods receipt, capture a list of serial numbers alongside the quantity.

Example:

  • Goods receipt: 10 units
  • Serial numbers captured: 7 units

Then this happens:

  • A serial-number entry is created for each captured serial number
  • The remaining quantity is still booked as stock (even without a serial number)

That means:

  • Stock rises to the full booked quantity
  • Part of it is already cleanly captured via serial numbers
  • Part of it is temporarily in stock without a serial number yet

This is deliberately allowed so that goods receipt isn't blocked.

Reservations

Reservations arise from orders.

Important:

  • An invoice alone doesn't reserve stock
  • Only an order builds up a reservation

When an order is created:

  • quantity_reserved rises
  • quantity_available falls
  • quantity_total stays the same

So the goods are still physically in the warehouse but already earmarked for an order.

Example:

  • Before: total = 10, reserved = 0, available = 10
  • Order for 3 units
  • After: total = 10, reserved = 3, available = 7

When is stock actually taken out?

This is the most important distinction day to day:

  • Creating an order = goods are reserved (warehouse stock unchanged)
  • Sale / dispatch / installation = goods are actually booked out

There are four different trigger points for booking out:

TriggerWhenDelivery note?
Order → Dispatch (delivery-note mode)Shipment to customerCreated + sent immediately
Order → Dispatch (pickup mode)Customer picks up in storeNo
Order → Parts installedService repair, parts used in the deviceNo
ShopOrder → Finalize delivery noteShipping a shop orderDelivery note was a prerequisite
POS quick saleCounter sale without a prior orderNo

POS quick sale / quick invoice

In a POS quick sale (fast sale at the register) the goods are taken out of stock immediately.

This also applies when a quick invoice is created internally in the background.

A direct stock outflow happens here:

  • quantity_total falls
  • quantity_available falls
  • quantity_reserved stays the same

There's no upstream reservation here like with an order.

Order — dispatch or install parts

With a CRM order the flow is two-stage:

  1. Create the order Goods are reserved (no physical outflow yet)

  2. Ship, dispatch or install parts Only now are the goods actually booked out of the warehouse

In every booking-out case (dispatch with or without a delivery note, parts installed):

  • quantity_reserved falls
  • quantity_total falls
  • quantity_available normally stays the same (because the goods were already reserved beforehand)

Difference between dispatch and parts installed:

  • Dispatch: goods leave the store (shipment, pickup) — optionally with a delivery-note document
  • Parts installed: goods go into the customer's device during a repair — no delivery note, since the device itself isn't a shipping object

Both paths trigger the same stock operation (SHIP_RESERVED).

ShopOrder — delivery note as the trigger

For shop orders (Shopify, Wix) processing is also two-stage, but always via a delivery note:

  1. Receive the order from the shop Stock is reserved immediately (webhook-triggered)

  2. Create the delivery note Status draft, stock still unchanged. Serves as a picking list.

  3. Mark the delivery note as shipped Only now: quantity_reserved falls, quantity_total falls. Shipping status updates automatically. Stock is pushed back to the shop.

More on this in Shop orders and Delivery notes.

Dispatch for serialized products

For serialized products it must be clear on dispatch which specific devices leave the warehouse.

That's why the serial numbers have to be selected or scanned on dispatch.

The system assigns these serial numbers to the shipment or sale and reduces stock accordingly.

Direct sale and serial numbers

In a direct sale (e.g. a POS quick sale) stock is reduced immediately.

Non-serialized products

Stock is reduced directly:

  • quantity_total falls
  • quantity_available falls
  • quantity_reserved stays the same

Serialized products

There are two possible cases here.

Serial numbers already captured

If serial numbers already exist in the system:

  • The system shows available serial numbers
  • The user selects or scans an existing serial number
  • Exactly that serial number is sold

Serial number not yet captured

If not all serial numbers were captured on goods receipt, a serialized product may have stock but not yet a serial number in the system for every unit.

In that case, on sale or dispatch a new serial number can be entered – as long as there's still free stock without a serial number.

The system then creates that serial number automatically and processes the sale straight through.

Important rule for serialized products

For serialized products, by the time of sale, dispatch or stock count at the latest, every unit should be uniquely traceable via a serial number.

Stock count

A stock count is a stock correction based on the real warehouse stock.

The principle: the stock count is the "truth from the warehouse".

Non-serialized products

In a stock count you enter the actually present quantity (actual stock). The system sets the stock directly to that value.

Example:

  • Actual quantity: 23

Then:

  • quantity_total = 23
  • quantity_available = quantity_total - quantity_reserved

Reservations remain in place.

This means quantity_available can even go negative if more is reserved than is physically present.

Example:

  • quantity_total = 5
  • quantity_reserved = 8
  • quantity_available = -3

This indicates a shortfall.

Serialized products

For serialized products the stock count is stricter.

Here you don't just enter a quantity – the actual present serial numbers are captured (e.g. by scanning).

The system syncs stock exactly to that list:

  • Serial numbers in the system but not scanned → are removed or treated as not present
  • Serial numbers scanned but not yet in the system → are created or assigned to the right warehouse

Afterwards stock matches the number of captured serial numbers.

The stock count is therefore the point at which serialized stock is fully and cleanly reconciled.

Transfer between warehouses

In a transfer, stock is moved from one warehouse to another.

Non-serialized products

For quantity items, the system checks whether there's enough free stock in the source warehouse.

Then the quantity is moved:

  • In the source warehouse, quantity_total and quantity_available fall
  • In the target warehouse, quantity_total and quantity_available rise

Serialized products

For serialized products, specific serial numbers are transferred.

The system checks:

  • Does the serial number exist in the source warehouse?
  • Is it available (available)?
  • Is there no conflict in the target warehouse?

Only available serial numbers may be transferred. Already reserved, shipped or sold devices can't be transferred.

How reservations behave day to day

Reservations remain in place until they're actively released.

Typical cases:

  • Goods receipt → reservation stays, available stock rises
  • Create an order → a reservation is built up
  • Dispatch an order or install parts → the reservation is released, stock falls
  • ShopOrder received → a reservation is built up (channel reserve, no echo push to the shop)
  • Finalize a ShopOrder delivery note → the reservation is released, stock falls, new stock is pushed to the shop
  • ShopOrder cancelled in the shop → the reservation is returned (Shopify/Wix decides on restocking itself)
  • Order cancelled → the remaining, not-yet-delivered reservation is released automatically
  • POS quick sale → direct stock outflow without a reservation
  • Stock count → reservations remain (availability can go negative)
  • Transfer → only available stock may be moved

Capturing serial numbers on goods receipt or later

In SimpliServ, serial numbers for serialized products can be captured as early as goods receipt – that's the cleanest way.

If that isn't fully possible on receipt, missing serial numbers can also be added later, for example:

  • on sale
  • on dispatch / delivery
  • during a stock count

This gives day-to-day flexibility without blocking the stock logic.

Recommendation for daily use

For clean traceability we recommend:

  • capturing serial numbers on goods receipt where possible
  • fully scanning serialized devices during stock counts
  • assigning POS registers to a fixed warehouse so sales are unambiguously booked from the right stock

POS and warehouse assignment

For quick sales (POS quick sale) each register should be assigned to a warehouse.

Only then is it unambiguously defined:

  • which warehouse is sold from
  • which serial numbers are shown
  • which stock is reduced

This is especially important for serialized products, since serial numbers are tracked per warehouse.

Summary

The stock logic in SimpliServ follows a clear principle:

  • Goods receipt increases stock
  • Order and ShopOrder reserve stock
  • Dispatch, install parts and finalize delivery note reduce reserved stock physically
  • POS quick sale reduces stock directly
  • Stock count reconciles system stock with reality
  • Transfer moves available stock between warehouses

That way it stays traceable at all times what's present, reserved and actually available in the warehouse.

Audit trail of all stock movements

Every movement is recorded in an immutable movement log (append-only). You can view the full history per product or per warehouse:

  • Who triggered the movement (user)
  • Which type (goods receipt, reserve, release, dispatch, cancellation, transfer, stock-count correction, …)
  • Which quantity change per stock value (available, reserved, total)
  • Which serial numbers affected
  • Which document reference (order, shop order, delivery note)

That way, even months later, it's traceable why stock is what it is — important for accounting, stock-count clarification and error analysis.

How is this guide?

On this page