Skip to content

Receive a delivery

A delivery arrives at the back door. The driver hands over the boxes and a paper note. Somewhere in the system there’s already a purchase order (PO) — the list the head chef wrote up the night before, sent to the supplier, expecting to be filled. This page is about the flow that closes that loop: open the PO, walk the lines, confirm what actually came in, and the pantry goes up by the right amount with the right cost stamped on each row.

This is the default path on most shifts. The chef knows there’s a PO. The delivery is against it. Two or three taps later the back door is cleared and service prep can resume.

Why this page exists

Every kilo that enters the kitchen has to land on the right pantry row, at the right cost, with the right quantity. If a delivery is recorded by memory — “I think the tomatoes came in” — by the end of the week the pantry numbers disagree with what’s on the shelf, the dishes that use those ingredients are costed against a number that’s a guess, and the order for next Tuesday is built on the same guess. Receive a delivery is the gate that keeps that from happening. One PO, one confirmation, one source of truth.

The other thing it solves is the imperfect delivery. Suppliers don’t always send what was ordered. They short the tomato line because they ran out at the warehouse. They send a slightly different cheese because the requested one was unavailable. They charge a higher price because the supplier’s price list moved. The receiving form is the place where reality is written into the system — what actually arrived, what was actually paid — so the pantry, the dish costs, and the next reorder list reflect the kitchen as it really is, not the kitchen as it was meant to be.

The rule

Every delivery against a PO ends with one confirmation. The quantities on the form are what arrived, not what was ordered. The prices on the form are what the supplier charged, not what was quoted. Stock goes up from there; cost gets stamped from there; the PO closes from there.

How to use it

Open /admin/receiving. The hub lists every PO currently out in the wild — sent to a supplier, expected to arrive, not yet fully received. Tap the blue Receive a delivery button at the top right; a full-screen picker opens, grouped by supplier, with a search bar at the top.

Find the supplier on the delivery note in the picker — Mauro Foods, Caseifici Sant’Angelo, whatever you ordered from — and tap the matching PO. The receiving form opens with every line that was ordered pre-filled: the product name, the quantity expected, the unit price quoted.

Walk the lines one by one. For each:

  • If the supplier sent the full quantity at the quoted price, leave it alone.
  • If they shorted you, edit the quantity down to what actually arrived. The line stays open on the PO for the missing amount, so the next reorder picks it up.
  • If they substituted or sent a slightly different pack, edit the quantity and the unit to match.
  • If the price changed, edit the unit price to what the invoice charges.
  • If a line wasn’t delivered at all, untick it.

When the lines reflect what came in, tap Confirm Receipt & Update Stock at the bottom. The form closes; the hub list refreshes; the PO either disappears (if it’s fully received) or stays in the list marked as partial (if some quantity is still outstanding).

If you also have a paper delivery note in your hand, photograph it inside the form before confirming — there’s a Scan delivery receipt button at the top of the form that uses the camera. The AI reads the photo, fills the quantities and prices for you, and you only adjust where it got something wrong. The photo is also kept on the PO for later — useful if you ever need to argue a charge with the supplier. Any phone works — iPhone or Android — so just snap the note as it is; the photo is prepared for you automatically.

If there is no PO at all for this delivery (a phone order the chef placed, a one-off purchase, a supplier you didn’t expect), scroll to the bottom of the picker and tap No PO for this delivery. That path is documented in Scan a delivery — it sends the paperwork to the accounting team and skips the kitchen-side stock update.

What happens behind the scenes

When you tap Confirm Receipt & Update Stock, the system walks every line on the form. For each line it finds the pantry row the line points at, adds the received quantity to stock, and stamps the unit price you confirmed as the row’s new Last purchase price. The pack chain on the row — how many tins per case, how many grams per tin — converts the supplier’s pack into the recipe unit, so the cost-per-gram or cost-per-millilitre that recipes use is the fresh number.

That last step is where the leverage shows up. Every recipe that uses any of the received ingredients gets recomputed in the cascade. A new tomato price flows into the bolognese base; the bolognese flows into the lasagne; the lasagne menu item picks up a fresh food-cost percentage on the morning dashboard. Nobody touches a recipe. One confirmation, dozens of numbers reconciled.

On every line where the received price differs from the ordered price by more than 1%, the system also writes a price-variance entry. The cost dashboard reads those entries the next day, so the owner sees a small chart of suppliers whose prices are drifting before anyone has to ask.

The PO status flips. If every line came in at the ordered quantity, the PO is marked Received and disappears from the open list. If any line was short, the PO is marked Partially Received — it stays in the open list with the outstanding quantity, and the next reorder shortlist will surface the shortfall against that supplier. When the missing amount is never going to arrive, you can finish the order yourself rather than leave it open forever — see When the rest is never coming below.

Photos of the delivery note, if you took any, are attached to the PO record. Available later if you ever need to dispute a charge.

When the rest is never coming — closing a short order

Leaving a partial order open is the right default when the missing amount is genuinely still owed — the supplier shorted you two kilos of tomatoes and will send them with the next van. The shortfall sits on the open list and feeds the next reorder, exactly as it should.

But some shortfalls are never going to be filled. You ordered 5 kg of octopus and 4.9 kg came across the scale — nobody is going to send the last hundred grams, and you wouldn’t want to reorder it. The supplier ran out of a cheese and simply isn’t back-ordering it. In those cases an order left open is just noise: it nags you to receive goods that will never arrive, and it clutters the back door’s open list.

For those, open the order — tap it from Admin → Orders, on the Purchase Orders tab — and use the Close as complete button in the order detail. A short confirmation appears listing exactly which lines came up short, line by line (Octopus: 4.9 / 5 kg received). Confirm it, and the order moves to Closed and leaves the open list for good.

Closing this way changes nothing about your stock. Stock only ever counted what physically arrived — the 4.9 kg, not the 5 kg — so there is nothing to undo. Close as complete simply says “this order is finished; whatever didn’t arrive isn’t coming.” You won’t be able to receive more against it afterwards, which is the point.

Three endings for an order: leave it open when the rest is still owed and you want it on the next reorder; Close as complete when what arrived is all that’s coming and you accept it; Cancel when nothing useful arrived and the whole order should be written off.

Worked example — Tuesday morning tomatoes

It’s Tuesday morning at your venue. Monday afternoon the head chef wrote a PO to the produce supplier for 20 kg tomatoes at €1.20/kg, 5 kg basil at €18/kg, 10 kg potatoes at €0.80/kg — three lines, €127 total expected.

The driver pulls up at 8:40 with the boxes. He hands Marco, the sous chef, a paper delivery note. Marco reads it: tomatoes are short — only 18 kg in the crate, the warehouse was out, the supplier rang the chef yesterday afternoon to flag it. Basil and potatoes are the full amount.

Marco opens /admin/receiving on his phone, taps Receive a delivery, scrolls to the produce supplier, taps the Monday PO. The form opens with the three lines pre-filled at the ordered quantities. He edits the tomato line from 20 kg to 18 kg; he leaves the basil and potato lines alone; he taps Confirm Receipt & Update Stock.

The pantry updates: +18 kg of Tomato, fresh; +5 kg of Basil, fresh; +10 kg of Potato. The tomato row’s Last purchase price is stamped at €1.20/kg — same as last week. The basil and potato rows pick up the same confirmation. The cost cascade fires: every recipe that uses tomatoes, basil, or potatoes is recomputed; the dashes on the morning dashboard refresh.

The PO flips to Partially Received because 2 kg of tomato is still outstanding. It stays in the open list with a small badge. The next morning, when the chef runs the reorder shortlist, the 2 kg shortfall against the produce supplier surfaces alongside the rest of the week’s needs — so it doesn’t slip.

Marco closes the page. Total time at the back door: 35 seconds. The next coffee is on the counter before service prep starts.