Batches and expiry dates
Every delivery of an item is kept as its own batch, with its cost and, when you give one, its expiry date. Sales take the earliest-expiring stock first.
Checked against the product on 13 October 2026
Otura keeps each lot of stock separately: the 20 bought in March at $1.10 and the 24 bought in April at $1.20 are two batches of the same item. A batch carries its quantity, its unit cost and, when you give one, a lot number and an expiry date.
Where batches come from
| How the stock arrived | Its batch |
|---|---|
| Opening stock, on the New Product form or StockInventoryAdd Location | OPEN-…, at the unit cost you entered |
| A goods receipt against a purchase order | GRN-…, at the order’s cost, with the lot and expiry you enter on the receipt |
| A stock adjustment upwards | ADJ-…, at the stock record’s cost |
| A transfer received | The same lots, with the costs they left the other location with |
| A count that found more than the books | A new batch for the difference |
The Batches page
StockBatches lists every batch with its Batch Number, Lot Number, product, Location, Quantity left and Initial Quantity, Expiry Date, Cost per Unit and Status. The cards count Active Batches, Expiry Alerts (batches expiring within the period you choose: 30 days by default) and Expired Batches. Search by product or batch number.

Which batch a sale takes
A sale and a transfer take stock earliest expiry first, then oldest batch first. Batches with no expiry date go after those that have one. The sale is costed at the batch it took, so profit reflects what that stock actually cost.
Not selling expired stock
SettingsWorkspaceStock defaults has Do not sell stock past its expiry date. With it on, a sale takes the earliest-expiring stock that is still in date, and is refused when only expired stock is left. A medicine pack whose own code says it has expired is refused at the till. It is on from the start for a pharmacy.
