Purchase orders are your orders to suppliers. The Products › Inventory page has two tabs: Purchase orders and Settings. In the Purchase orders tab you record what you have ordered, see which quantities are incoming, and - when the goods arrive - receive them in one action so the products' stock and cost update automatically. The supplier's unit price plus its share of the delivery cost gives the landed cost - what the goods actually cost you.
Purchase orders are included in the Business and Enterprise plans.
The lifecycle of an order
Every order moves through clear states:
- Draft - you work on it freely; the expected quantities are not counted yet. A draft can be deleted permanently.
- Ordered - you pressed "Place order"; from now on the quantities show as "Incoming" on the products. Editing is still free - stock has not moved.
- Received - you confirmed receipt; stock was added, cost was written and the record is locked (immutable).
- Cancelled - stopped (from Draft or Ordered); the quantities stop counting as incoming.
The order list
Above the list you search by № or supplier and filter by Status, Supplier and Period (the last 7, 30 or 90 days). Sort by "Newest first" or "Oldest first". The "Value" column shows the order's total - the goods plus the delivery cost. Click a row to see its lines and summary without opening the order. On a phone the supplier filter is not shown - type the supplier's name in the search box instead.
Creating an order
There are two ways:
- New order - add lines by hand, searching existing products by SKU or name and setting a quantity and unit cost.
- Import from file - upload an
.xlsxor.csvwith SKU, quantity and unit-cost columns. Link the three columns, review what is matched and which rows have an unknown SKU, and create a draft from the matched rows.
An order works with existing products only. An unknown SKU does not create a product - create it first in Products, then add it to the order.
Landed cost (with delivery included)
In the "Delivery cost" card you enter the whole shipment's delivery cost. It is split across the lines in proportion to their value and folded into the "Landed cost" column - so every product carries its real share of the freight.
Profit projection
Above the order, five tiles show the projection at your current selling prices: total cost, projected revenue, projected profit, margin and ROI. A product with no price shows "—" and is excluded from the totals. The projection is recomputed on every open - it is a guide before you order.
Receiving the goods
When the shipment arrives, open the order and press "Confirm receipt". The dialog shows, line by line, how each product's stock and cost will change before you confirm. After confirming:
- stock is increased by the received quantity;
- cost is updated by the chosen mode (see below);
- the record is locked - quantities, unit costs and the landed cost are frozen.
The action cannot be undone - later stock corrections are made from Products. A product with no stock tracking (∞) receives only the new cost.
In the "By batch (FIFO)" mode (see below) the dialog's column reads "New batch": every line becomes its own batch with its quantity and landed cost - for example "+24 × €7.25". The product's cost is not overwritten; it follows its batches.
A line at €0.00. When an order line has no price, the dialog marks it "no price" and, above the buttons, names the products at €0.00 - usually a price was missed. In «By batch» those units would sell at zero cost; in the other modes the product's cost would drop. Close and fill in the price on the order, or confirm if the goods really are free. Such a batch's cost can be fixed later with "Edit" (see By batch) - units already sold keep €0.00.
Incoming quantities on the products
Ordered (not yet received) quantities show as "Incoming" in several places, so you don't reorder something already on the way:
- in the product editor - the Free / Reserved / Physical / Incoming strip, with a link that opens the order itself;
- in the product list - the "+N incoming" note next to the stock;
- in the daily low-stock email - the "Incoming N · Order №X" line.
Cost mode
In the Settings tab of Products › Inventory you choose how your products' cost is worked out. Each of the three modes shows the same example - you have 5 units at €3.00 and receive 5 more at €3.50:
- Landed cost (default) - the new cost is the one from the latest order, and the older units take its price: €3.50 for all 10 units.
- Averaged cost - weights the old and new cost by the units: €3.25 for all 10 units. With no prior cost or stock, "Landed cost" applies.
- By batch (FIFO) - every delivery is its own batch with its own cost, and sales use up the oldest first: the €3.00 units sell first, then the €3.50 ones.
The mode applies to every product, and the exact value for each line is shown in the "Confirm receipt" dialog before you confirm. The same tab holds the low-stock alerts - see Variants & stock.
By batch (FIFO)
Switching it on. When you save the mode, each product's current stock becomes its opening batch ("Opening balance") at its current cost. Batches start to differ from the next delivery or a batch you add by hand. Products with unlimited stock (∞) and products sold by catalogue stay on "Landed cost".
Sales. Every sale takes the cost of the batch its units came from, and the order records it - so the margin in your reports is exact. An order spanning two batches records the average cost of its units. If any of its units come from a batch without a cost, the line's cost stays unknown. A cancelled or returned order gives its units back and the batches restore themselves - nothing to do.
A product's batches. In the product editor, Selling › Pricing & stock, the "Batches" section lists the remaining batches, oldest first and marked "Selling now": number, source (Opening balance, Order №N - a link to the order - or Added by hand), date, units left and unit cost. The Cost (the average of the remaining batches) and Stock (the sum of the batches) fields are read-only - stock is added with a batch or a received order, and goes down with orders or with "Write off" in a batch's menu (three dots): you pick the batch, the units and the reason, and the units leave that batch only (see Write-offs). For a product with variants, tap a variant's units in the "Variants" card to open its batches, with the same menu.
"Edit". A batch's menu corrects its unit cost and acquisition date, and for a batch added by hand its quantity too - but only upwards (a number entered by mistake; fewer units leave with "Write off", so the reason is recorded). Before it saves, the dialog shows what changes. Units already sold keep the cost their orders recorded - the new one applies to the units left and to future sales. A batch from a purchase order no longer matches its order after such a change and is marked "corrected"; the order itself does not change.
"Delete". A batch added by hand by mistake can be deleted while nothing has left it - no sale and no write-off (undo its write-off first). Stock drops by its units and the drop is recorded in Write-offs as a "Correction". The batches after it are renumbered. A batch from a purchase order and the opening balance cannot be deleted - for damaged or lost goods use "Write off".
"+ Add batch". Enter a quantity, a unit cost and, optionally, an acquisition date. Stock rises by the quantity and the batch joins the end of the selling order. The cost and date of an opening balance or a hand-added batch can also be corrected through the spreadsheet (see below). If Finance settings count goods By purchase orders, every batch added by hand (the spreadsheet's too) goes into «Expenses» and «Profit» as goods bought - on its acquisition date, or the day it was added without one - and stays there even if you later switch «By batch» off; a corrected cost, date or quantity follows onto it, and a batch deleted as a mistake leaves it.
New products and variants. Stock entered into a new product or variant - or when stock tracking is switched on - becomes its opening batch at its cost. A product with nothing on hand can stop tracking stock (∞).
Batches in the spreadsheet. The Excel product export has a "Batches" sheet - one row per batch that still has units: SKU, product, variant, number, units left, unit cost, acquisition date, source and the batch ID (the import recognises the row by it - leave it as it is). On the "Products" sheet the stock is the sum of the batches and the cost their average. The CSV file has no "Batches" sheet.
- A new batch - a row without an ID: SKU (and "Variant" when the code is shared by the variants), quantity, unit cost and, optionally, a date. It is added as a hand-added batch and stock rises by its quantity.
- A correction - an opening balance or a hand-added batch can have its unit cost and acquisition date corrected. The new cost applies to the units still in the batch - units already sold keep the cost their order recorded. In the spreadsheet a batch received on an order follows the order - correct it with "Edit" in the editor.
- Not changed from a spreadsheet - an existing batch's quantity: for more units add a new row, and for fewer type a lower "Stock" on the "Products" sheet and choose Write off the difference on the "Batches" step (below).
The import's "Batches" step. After the preview the import shows everything the file does to the batches - nothing is written until you confirm:
- Stock mismatches - a "Stock" cell on the "Products" sheet does not match the sum of the batches (the file's new rows included). An untouched cell is never a mismatch. With more in the file you decide for each row: Add as a batch - the difference, with a quantity, cost and date you can change - or Keep today's stock. Nothing is preselected; Add all as batches and Keep all decide every row at once. With less in the file you decide too: Write off the difference - the units leave the oldest batch first, as they sell, and the row shows which batches, how many and what the stock becomes - or Keep today's stock. Write off all differences decides those rows at once. The write-off asks one reason for the whole file (at the foot of the card, «Correction» preselected), and every batch the units leave gets its own record in Products › Inventory › Write-offs - seen and undone there one by one. If the batches no longer cover the difference (the stock is above their units, say), the row is skipped and the import says why.
- New batches and Changes to existing batches - each row can be corrected or skipped before writing.
- Not applied - the rows the spreadsheet cannot change, each with why (a batch from an order, a changed quantity, an unknown code or ID).
A cost on the "Products" sheet for a batch-tracked product is not applied - correct it on the "Batches" sheet. A new product from the file gets its stock as an opening batch. Every batch is written together with its stock, so a closed tab loses nothing: the import continues from the history without adding a batch twice, and a second tab cannot start it over. If an import stops with an error, check its products' batches before importing the same file again: new rows without an ID are offered as new batches again. With Only new on, batches are not imported.
Switching it off. If you change the mode, each product's batches are averaged into one cost and deleted. You are asked to confirm first - it cannot be undone.