Skip to content

Importing deliveries

You have a season of delivery notes in a spreadsheet and want stock levels and costs to reflect them. The deliveries import posts each row as a real delivery, dated and costed. The shared upload-map-check flow is described in CSV imports.

Field Required What goes in it
Ingredient Yes Matched by name against your inventory
Quantity Yes How much arrived
Unit No The unit of the quantity, if not the ingredient’s own
Unit cost No Cost per unit, in the same unit the row uses
Date No The delivery date; blank means today
Lot code No The lot printed on the goods
Expiry date No Best-before or expiry date
Notes No Anything worth keeping, like a delivery note number

Each committed row goes through the same stock ledger as a delivery you type on the ingredient’s card. Stock rises by the quantity; the cost folds into the weighted average cost. 20 kg of habaneros at 8.40 per kg behaves identically whether imported or entered by hand, and the movement shows up in the ingredient’s stock history like any other.

Quantities in another unit convert on the way in. A row of 25 lb with a cost per lb is restated in kg for an ingredient kept in kg: both the quantity and the per-unit cost, so the math stays right.

The date column becomes the movement’s date, so backfilled history sorts correctly in the ledger. Write dates as 2026-07-16, or day-first as 16/07/2026; the import never assumes month-first. A date it cannot read flags the row instead of guessing.

Lot code and expiry date are carried onto the delivery, so imported stock keeps its traceability.

Two boundaries to know. The ingredient must already exist; unknown names are flagged and you map them to a record (import ingredients first if the list is long). And deliveries you receive against a purchase order inside BatchDash are posted for you when you receive the order; the import is for stock that arrives outside that flow, or arrived before you started.