Restaurant inventory control: products, ingredients, and POS

Track restaurant stock from receiving to sales, waste, and physical counts, while separating sellable products from recipe ingredients.

Control what you sell and what you consume

Restaurant inventory control connects two different questions: how many units can customers order, and how much food is physically available to prepare them? A bottled drink has a straightforward unit count. A pizza consumes dough, cheese, sauce, toppings, and packaging, often shared with other menu items.

A useful inventory system keeps those levels connected without confusing them. Track receiving, transfers, sales, production, waste, and physical counts in consistent units. Then use the result to decide what the menu should offer and what purchasing should replenish. A stock counter alone cannot explain every ingredient movement.

Product stock and recipe inventory need different records

Sellable product stock counts the item a customer buys: a can, a bottle, a prepared dessert, or a portion you have already made. Each item needs a unique identifier, location, unit, available quantity, and rule for when an order reduces that quantity.

Ingredient inventory counts what the kitchen uses: kilograms of cheese, liters of sauce, dough portions, and other ingredients. A recipe maps a menu item and its modifiers to those quantities. Purchase units, storage units, and recipe units need explicit conversions. A delivery of cheese by the case cannot be compared directly with a recipe expressed in grams.

Prepared components introduce another step. Producing sauce consumes ingredients and creates usable sauce. Track that production movement and its yield, then consume the sauce in finished dishes. Otherwise, subtracting both the raw tomatoes and the sauce at sale can count the same consumption twice.

Consider a simple menu model:

  • A bottled drink reduces one sellable unit when the chosen order event occurs.
  • A standard pizza uses one dough portion plus its recipe quantities of cheese and sauce.
  • Extra cheese adds an additional recipe quantity; it should not disappear into a generic sales note.
  • A combo needs a definition of its components so each item is counted once.

Keep recipe versions dated. If portion size changes halfway through the week, applying today's recipe to all historical sales can create a variance that looks like missing stock.

Record movements where they happen

Start each ingredient or product record with an opening count. Record receipts from the quantity actually accepted, rather than automatically copying the supplier's invoice. Note damaged goods, substitutions, and supplier returns separately. A purchasing discrepancy should stay visible instead of becoming an unexplained stock adjustment.

Give each movement enough detail to trace it: timestamp, store or storage area, item identifier, quantity, unit, reason, reference, and staff member. For a transfer, record both the sending and receiving location. Goods on the way to another store should not be available to sell in both places.

For kitchen waste, record the item or ingredient, quantity, reason, and stage. Distinguish preparation loss, spoilage, an incorrectly made dish, and a returned plate. The US EPA's food-waste tools include tracking resources for food-service operations. The operational benefit of recording a reason is specific: a receiving problem calls for a different response from excess preparation or oversized portions.

A dish already prepared and then refunded still consumed ingredients. A cancellation before preparation may not have consumed them. Treat refund, sales reversal, and stock return as separate events with a clear policy; do not automatically restore edible stock whenever money is returned.

Reconcile a day's cheese stock

The quantities below are an illustrative worked example, not a restaurant result or a recommended portion size. Assume one cheese item, one location, and a common unit of kilograms:

  • Opening physical stock: 12 kg.
  • Accepted supplier receipt: 8 kg.
  • Transfer received from another location: 2 kg.
  • Transfer sent to another location: 1 kg.
  • Theoretical recipe use: 50 pizzas × 0.200 kg = 10 kg.
  • Separately recorded waste: 0.5 kg, not already included in those recipe deductions.

Expected closing stock is opening stock plus receipts and inbound transfers, minus outbound transfers, recipe use, and separately recorded waste:

12 + 8 + 2 − 1 − 10 − 0.5 = 10.5 kg.

If the physical closing count is 10 kg, the variance is 10 − 10.5 = −0.5 kg. That identifies an unexplained half-kilogram difference; it does not identify the cause.

Before adjusting stock, check the count and scale, receipt quantities, transfer timestamps, modifier sales, recipe version, and waste entries. Extra-cheese orders omitted from the recipe calculation would understate theoretical use. An already-counted waste entry recorded again would overstate it. Record the explanation and any correction so tomorrow's opening quantity is traceable.

Compare theoretical use with actual consumption over the same period. Keep known waste visible rather than hiding it inside an adjustment. A variance report is useful only if the events feeding it share the same cutoff and unit conventions.

Make the physical count repeatable

Use a defined cutoff: either pause stock movements during the count or record movements after that timestamp separately. Count by storage area in a consistent sequence, including open containers, prepared components, and stock held away from the main kitchen.

For each count line, keep item, location, unit, expected quantity, counted quantity, difference, explanation, counter, and review status. Use the same weighing convention each time, including container tare where relevant. A bag counted as a whole case one day and a partial kilogram the next will distort the comparison.

Choose count frequency by risk and turnover. Frequently used or costly ingredients may need more frequent checks than stable, sealed supplies. Recount an unusual difference before changing the ledger, and preserve who approved the adjustment.

Once counts are dependable, set replenishment rules using demand over the supplier's lead time, a deliberate buffer, storage capacity, and product life. More stock is not always more availability if it spoils before service. Review recurring waste reasons alongside purchasing and preparation decisions.

Decide which system owns each quantity

A restaurant may use one system for ingredient purchasing and recipes, its POS for sales, and Ordering.co for online ordering channels. Assign an owner to each quantity and define the direction of updates. Avoid two systems independently subtracting stock for the same order.

Square's inventory documentation describes item-level stock adjustments and sales-based updates for tracked items. This illustrates why the exact POS behavior matters: “inventory integration” does not tell you which item, location, order event, or adjustment is synchronized.

Before connecting sales to stock, answer these practical questions:

  1. Identity: which POS item and modifier map to each online product, recipe, and store?
  2. Timing: does stock change at order placement, acceptance, payment, or finalization? Are unconfirmed orders reserved separately?
  3. Exceptions: what happens to cancellation, refund, replacement, rejected orders, and items already prepared?
  4. Recovery: if an update is delayed or delivered twice, how is the original order recognized and the stock reconciled?
  5. Availability: how does the kitchen stop selling an unavailable item online, and who can override that decision?

A useful trial includes one ordinary sale, one paid modifier, one rejected order, one refund after preparation, and two nearly simultaneous requests for the last sellable unit. Inspect the ledger and menu after each event. This reveals problems that a demonstration of an unchanged stock number cannot.

Where Ordering.co fits

Ordering.co's service availability controls manage product-level quantities and sold-out availability. Operators can disable products, categories, or options and pause service when the store cannot fulfill it. The Dashboard and menu tools let the team keep what customers can order aligned with store availability.

Use that product-stock workflow to control the sellable menu. Keep ingredient purchasing, recipe consumption, production yields, and waste accounting in the inventory or POS system responsible for them. Product availability should not be treated as a complete ingredient ledger, and a POS connection does not automatically add every back-of-house inventory function.

Connections depend on the specific POS. For example, the Ordering.co Square integration describes inventory decrements in Square when an online order is finalized. That is a connector-specific event, not a promise that every integration follows the same rule. Review the POS integration paths for your system and map its actual updates to the quantity owner you chose.

Choose software by the stock problem you need to solve

For packaged items or prepared portions, product counts and availability may be enough. For a menu made from shared ingredients, require recipes, modifier consumption, unit conversions, production, waste reasons, and count reconciliation. If several stores share purchasing, add transfers, location ownership, and receiving controls.

Evaluate a proposed restaurant inventory system with your own item and recipe examples. Ask the provider to show the movement history behind a balance, not just a dashboard total. Make permissions, correction history, exports, and ownership of integration failures part of the operating decision.

See the Ordering.co demos with a product, a recipe, a modifier, and your POS flow in hand. That gives your team a concrete way to separate online availability from the ingredient controls the kitchen needs.

See it running on your own menu.

The shortest way to understand any of this is to watch an order go from a storefront to a store to a driver, on your locations.

What are you building?

Tell us and we’ll take you to the right next step.