Receive a delivery manually
Receiving records what you took in from a supplier so current stock, cost history, weighted-average pricing, and price alerts all stay accurate. The manual receive screen is the fastest path when you have a paper invoice or no auto-ingestion set up.
Steps
Open Receive → New.
Set the received date (defaults to today; change it if the delivery actually arrived earlier).
- Pick a supplier (filters which products show up below).
For each line: search the product, enter quantity, pick the receiving unit (case if you've set case size; otherwise default unit), enter the cost per unit, and optionally an expiration date and notes.
- Tap Save.
What gets updated when you save
- Current stock increases by
quantity × unit conversion. - The product's case cost is overwritten with this receipt's per-case price.
- Weighted-average cost recomputes for any report whose date range includes this receipt.
- A price alert fires if the cost change vs. the previous receipt exceeds the dashboard threshold (default 5%).
- An expiration alert is queued if you set an expiration date within the warning window (default 7 days).
See how cost is computed for the full picture of which cost ends up where.
Receivable units
A product's receivable units come from its setup:
- Default unit is always available (the unit you count in).
- Case appears if
caseSize > 0. - Weight, volume, or count conversions appear if you've configured them on the product.
The default selection when you start a line is "case" if a case size exists, otherwise the default unit. Recipe-output products and non-inventoried products are deliberately excluded from receiving — the receive screen won't surface them in the product search.
Record-only receiving
The Record-only toggle saves the receipt for cost-history and price-alert purposes but does not add to current stock.
Use record-only when:
- You took a physical inventory count after the delivery already landed (so the count already includes the received product).
- You're back-filling old invoices for reporting purposes.
Don't use record-only for a new delivery that hasn't been counted yet — you'll under-state current stock.
Example
Receiving 4 cases of chicken from US Foods
- Date: today
- Supplier: US Foods
- Product: Chicken Breast
- Quantity:
4 - Unit:
case(since case size is set to 4 lb per case) - Cost per unit:
$47.99 - Expiration:
+5 days - Notes: blank
Result: stock increases by 16 lb (4 cases × 4 lb), case cost updates to $47.99, weighted-average cost in reports moves slightly toward $47.99, and an expiration alert fires in 5 days (within the default 7-day warning window).
Common mistakes
Using record-only when you shouldn't
Record-only skips the stock update. If you toggle it on for a new delivery that hasn't been counted, current stock is wrong from then on. Default to off.
Searching for a recipe-output product and not finding it
Recipe outputs (marinara, dough) can't be received — they're produced by recipes. If you can't find a product, check whether it's set as a recipe output.
Surprised by the price alert threshold
Default is 5%. A case of fryer oil moving from $42 to $48 triggers an alert. Adjust the threshold in dashboard settings if it's too noisy.