Inventory CONSUMPTION: Inventory Items, Products, Recipes, and Order Tags

Inventory Consumption Elements

The SambaPOS Inventory System is made of 5 main things when it comes to Inventory Consumption:

  • Inventory Items
  • Inventory Products (V5+ only)
  • Recipes
  • Order Tag mappings for Recipes (V5+ only)

Inventory Items are things you Purchase from a Supplier, like Soda, or Ground Beef, or Eggs.

Inventory Products are things you can “build” or “pre-prep” that are made of Inventory Items and/or Inventory Products as defined by a Recipe. They can also be used in a powerful and special way that I call an Inventory “Container”, which let’s you “encapsulate Recipe ingredient lists”.

Recipes define which “ingredients” comprise a Product, whether that Product is a Menu Item Product (a Product we Sell), or an Inventory Product (a pre-prepped Product made of Inventory Items or other Inventory Products).

Order Tag Mappings for Recipes allow specific Order Tags to be mapped to a Recipe Ingredient. This feature allows for a great deal of flexibility in building “dynamic” Recipes.

This guide has the following parts which detail the setup and usage of the above Inventory Elements:


When to use Inventory Items vs. Inventory Products

When we build Recipes in SambaPOS, we can use one or both of the following “ingredients” in those Recipes:

  • Inventory Items
  • Inventory Products (V5 only)

Inventory Items are things you Purchase from a Supplier, like Soda, or Ground Beef, or Eggs.

Inventory Products are things you can “build” or “pre-prep” that are made of Inventory Items and/or Inventory Products as defined by a Recipe.

:warning: Inventory Products vs. Menu Item Products

First of all, we need to make a very clear distinction here. SambaPOS has 2 things that are referred to as Products:

  • Menu Item Products: these are things that we Sell from our Menu. They are defined in Manage > Products > Product List.
  • Inventory Products: these are Products that are (in general) pre-prepped from Inventory Items (and/or other Inventory Products). They are defined in Manage > Inventory > Products.

The above “Products” are somewhat the same, but they have different uses and properties, and when we are trying to distinguish between Inventory and things we Sell, it is important to know which “Product” we are talking about.

To this end, this Tutorial makes very distinct use of the terms “Menu Item Products” (Sell Products) and “Inventory Products” (pre-prepped Inventory Products), so pay very special attention when reading so that you do not confuse the terms.

When to use Inventory Items

You sell Soda in Cans. You also sell it in 6-packs. Maybe you even sell it by the Case.

You buy Soda from a supplier by the Case (24 Cans) or by the Pack (6 Cans), or maybe you even buy it by the Single (1 Can).

You want to track Stock by the Can, not by the 6-pack or Case.

Define your Inventory Item as such…

:bulb: Tip: if you leave the Transaction Unit BLANK with the Multiplier set to 0, then your Stock will be tracked by the Base Unit instead of by a fraction of the Transaction Unit.

Menu Item Products using Portions

The Menu Item Product that you sell might look like this:

Recipes for Menu Item Products that use Portions

This type of Recipe definition is for those Menu Item Products that have multiple Portions.

:exclamation: NOTE: Recipes can only use the BASE Unit of an Inventory Item.

Menu Item Products without Portions

You might decide that you do not want to use Portions for your Menu Item Products; instead, you might want to define a distinct Products for the things you sell. In that case, your Menu Item Products might look like this:

Recipes for Menu Item Products that do NOT use Portions

This type of Recipe definition is for those Menu Item Products which have only 1 Portion.

When to use Inventory Products

You sell Sliders and Subs. A slider takes 1 Meatball, while a Sub takes 3 Meatballs.

You make your own Meatballs from scratch. You don’t buy packages or cases of pre-made frozen Meatballs from a Supplier. Inetead, you buy Meatball Ingredients from a Supplier such as Ground Beef, Oatmeal, and Eggs.

When you make a Meatball, you don’t make 1 at a time. You make them in Batches. But you don’t sell Batches of Meatballs - you sell 1 Meatball, or 2, or 3, or 4, which are part of a larger Recipe for your Slider or Sub Menu Item Products.

How do you define the Recipe for a single Meatball? Do you take all of the ingredients in the Meatball Batch and divide each of those ingredients into minuscule measurements depending on the number of Meatballs you can make in a Batch? You could… but thankfully, we don’t need to.

Define the Inventory Product

We sell single Meatballs, but we make it in Batches, so we define the Inventory Product as such:

Here is another example: you make Chili by the Pot, but you sell it as part of something else by the Ounce…

Inventory Items

When we make our own Meatballs by the Batch, (or Chili by the Pot), we use some of these Inventory Items in our Recipes:

Recipes for Inventory Products

Now we can define the Recipe for Meatballs. We define the “master” Recipe as the Batch, and a Sub-Recipe as a Ball being a portion of the Batch.

Recipes for Menu Item Products

Now that we have defined what a Meatball actually is, we can use that Inventory Product in a Menu Item Product Recipe.


Inventory Product “Containers”

As described in the previous post, we can create Inventory “Sub-Products” by defining the Units of the Inventory Product. We did this with Meatballs when we defined Units for “Ball” and “Batch”, and with Chili, we defined “sub-product” Units of “Ounce” and Pot".

When we create Recipes for Inventory Products, the Units (or Sub-Products) become the Portion identifier in the Recipe. Quick recap picture…

There is an even grander usage case for Inventory Products (or rather Sub-Products) that lets us do some very cool things, allowing a great deal of flexibility. I don’t know if @emre ever intended for Inventory Sub-Products to be used in this way, but it can “simplify” Recipe building quite a bit.

:bulb: At this point, I am going to coin a new term for Inventory Products and Sub-Products, because I am about to show you a use-case that I belielve to be “outside the intended use”. And because other terms like “Category” and “Group” are already used in many areas of SambaPOS, I want to use a different word to avoid confusion.

So the conceptual term for this idea henceforth will be Inventory ProductContainers”.

Take a look at these Inventory Product definitions, which I call “Containers” …

What can we do with that ^ crazy looking bunch of Inventory Products? Glad you asked - we create Recipes for all of them…

BREADS Container Recipe

The Recipe for the BREADS Container includes all of the types of Bread that could be used to build a sandwich or Wrap.

Because the ingredients in the Recipe are mapped to Order Tags, only the selected Order Tags will be consumed. In this example, the “Flour Tortilla” is the only Order Tag selected, so the Recipe will only “consume” a single Tortilla, and will NOT consume any of the other Breads from the Recipe.

MEATS Container Recipes

Recipes for MEATS.Slider and MEATS.Wrap

When you look at these Container Recipes, you notice that the Ingredients are the same. The only difference is the Inventory Product Unit (Portion) and the Quantity of Units for each Ingredient. Because of this, we can rapidly create Other Container Recipes by cloning an existing MEATS Container Recipe, and all we need to do is change a few things:

  • Inventory Product (MEATS)
  • Inventory Portion (the Container UNIT like Philly, Wrap, Slider, Dog, etc)
  • Ingredient Quantities

CHEESES Container Recipes

Again, once we create ONE Container Recipe, we can CLONE it and change just the Portion and Ingredient Quantities.

Recipes for CHEESES.Slider and CHEESES.Wrap

Other “Container” Recipes

The rest of the “Container” Inventory Product Recipes are much the same, but contain related Ingredients for the Container, for example:

  • Condiments contains things like Ketchup, Mustard, Relish, etc
  • Produce contains things like Lettuce, Tomato, Onion, etc.

The variants in the Recipes (based on the Inventory Product Unit/Portion) is the Quantity of Ketchup or Mustard that goes on a Slider or Wrap, etc, and the Quantity of Lettuce or Tomato that goes on a Slider or Wrap, etc.

“MASTER” Menu Item Product Recipes

So there is a little more to it than what you see above, and we need one more step in our Inventory System… we need to define the “Master” Recipes for our Menu Item Products that we actually Sell.

But because we defined the “Container” Inventory Products and Recipes, we are a step ahead of the game, and our “Master” Menu Item Product Recipes are simplified greatly.

MASTER Recipes for Pulled Pork Wrap.Slider and Pulled Pork Wrap.Wrap

When you look at these “Master” Recipes, you notice they are identical other than the Menu Item Product PORTION and the Ingredient UNITS.

You might ask: "why go through all of this “complication of nested Products and Recipes?”.

Again, the answer is: because you can CLONE the Recipes. And when you do that, you only need to quickly change 3 things:

  • Menu Item Product
  • Menu Item Portion
  • Ingredient Units of each of the Container Inventory Products

The rest of the “Recipe work” involving how much of this MEAT or that CHEESE which goes on this Bun or that Wrap has already been done in the Container Recipes.


Order Tag Mappings for Recipes

One of the major new features that V5 introduced for the Inventory System is the ability to map Order Tags to the “ingredient” lines in Recipes.

We touched on this feature in the previous posts, but it deserves a more complete explanation, and with that we gain an understanding of how powerful this feature is, and why you should use it.

In previous posts, our “Sandwich Shop” custom built made-to-order sandwiches where we could pick the Bread, Meat, Cheese, Produce, and Condiments. Because we defined each Bread Choice as a Menu Item Product Portion, we could define Recipes according to the Bread Choice (Portion) to control the Quantity of “ingredients” that would be consumed depending on the Bread. Because of this, we could actually design some crazy looking Sandwiches which really made no sense according to the Menu Item Product Name. For example, look at this Order for a “Pulled Pork Wrap”:

The PORK WRAP shown above does not use a WRAP, and it does not use PORK. Instead it uses a Slider Bun, Meatballs, and Bacon. This rather defeats the purpose of the Name “Pulled Pork Wrap”, but the idea illustrates the power of Product.Portions and Order Tag mappings in Recipes, because that Order as configured will not consume a Wrap, nor will it consume Pork. It will consume 1 Slider Bun, 1 Meatball, and 1/2 slice of Bacon, 1/4 slice of Cheddar, and a small amount of Lettuce and Tomato, based on our Recipe for the Slider Portion and the Recipe Order Tag Mappings.

Menu Item Product Portions

The above scenario makes things a bit abstract for us and somewhat difficult to wrap our head around, so as we discuss Order Tag Mappings in Recipes, let’s go with a more “traditional model” when it comes to Portions…

We have a build-to-order Pizza Shop, and our Pizzas come in 3 sizes: Small, Medium, and Large. Menu Item Product Portions fit more “naturally” in this scenario because Sizes map to Portions in a more traditional way.

:bulb: TIP: The more Portions we define, the more accurate control we will have over the Quantity of consumption of ingredients on a Pizza as a Whole, Half, or Quarter, in any base size of Small, Medium, or Large. But keep in mind: more Portions necessitates defining more Recipes!

So we could define our Pizza Portions like this:

Medium Whole
Medium Half
Large Whole
Large Half
Large Quarter

But to simplify things for the purpose if explanation, the Portions we will concentrate on for our Pizza Menu Item Products will be these:


Here are a few Menu Item Product examples with identical Portion Lists:

Order Tags

Here is a quick look at some of our Order Tag Groups which contain modifiers for things we can put on our Pizza …

Recipes using Order Tag Mappings (no Containers)

The idea of Mapping Order Tags to Recipe Lines is that the Recipe will only consume those items which have been selected on the Order.

Cheese Pizza Small

Now we can Clone that ^ and change the Portion and Unit Quantities for Medium …

Clone the Recipe again and change the Portion and Unit Quantities for Large …

Let’s see how it works so far. We place a few Orders …

The 1st Order will consume only Mozza (5 oz).
The 2nd Order will consume only Parmesan (4 oz).
The 3rd Order will consume both Mozza (12 oz) and Parmesan.(8 oz).

Let’s build the Recipe for Small Meat Lover Pizza. We can start by Cloning the Small Cheese Pizza, changing the Product, and Portion, so that the Cheese choices are already in the Recipe.

So that ^ is getting to be a big list of Items for a Recipe, and we haven’t even added the Items for Veggies (10 Tags), Sauces (8 Tags), or Crust. By the time we’re done all that, the Recipe will contain at least 30 Items for all the Order Tags. And that is just a single pizza Recipe for 1 size.

What happens when we have 10 Pizzas, each with 3 sizes? That makes 30 Recipes. We can easily Clone a “well thought out” Recipe that contains all the correct Items, and just change the Product, Portion and Quantity of Units.

But what happens when we add a new Meat choice? Or Cheese choice? Or Veggie? Or Sauce? We will need to edit 30 Recipes to include the new choices. This leads me to why you should use Inventory Containers…

Recipes using Order Tag Mappings and Containers

We introduced the concept of the Inventory Product “Container” in previous posts. Now we will demonstrate what makes this concept so powerful and easy to use when it comes to Recipe creation.

First, let’s configure our “CHEESES Pizza” Container …

We can Clone the above Inventory Product Container for our other “Ingredient Groups”, and simply change the Container Name (Inventory Product Name) …

Now let’s create the Recipe for the “CHEESES PizzaInventory Product Container, for the Small Unit/Portion, Medium Unit/Portion and the Large Unit/Portion. We will do our Order Tag mappings in the Container Recipes…

:bulb: New Cheese choice? Edit 3 Recipes instead of 30.
The only differences in the above Recipes are the Portion and the Quantity of Units. Now if we want to add a new Cheese choice, we simply edit 3 Recipes (Small, Medium, Large) and add the new Cheese choices. This is a far cry better than editing 30 Pizza Recipes to add new Cheese choice to each of them when made without Containers.

Before going on to showing how we use these Containers in the MASTER Product Recipes, we need to create the “MEATS Pizza” Recipes for Small, Medium, Large, and do the same for Veggies and Sauces. When it’s all done, we have these 12 Container Recipes…

Now let’s see how easy it is to build the Recipe for that Meat Lover Pizza using Containers instead of individual ingredients…

The Recipe on the Left for Medium Meat Lover compared to our older Small Meat Lover on the Right shows how simple the Master Menu Item Product Recipes can be. Notice there are no mapped Order Tags - we mapped them already in our Container Recipes. Also we match the Container Recipe Unit/Portion to the Unit of the Master Product Unit. One of the great things about this type of Master Recipe is that it never needs to be touched ever again. Instead, we modify Container Recipes to suit our ingredient additions.

Making the Large Meat Lover Recipe is as easy as Cloning and changing the Product, Portion, and Units. Here is how it all ties together, from the Order Tags, to the Inventory Product Container Recipes, to the Master Menu Item Product Recipe…


… reserved for updates …

1 Like

… reserved for updates …

1 Like

I am trying to follow you tutorial, but my recipe screen is very different, why?

How do i get the option to add products and not just inventory items to a recipe?


Dont you make an inventory product - option above recipe?
Its like a grop of inventory items / sub recipe?
Dont use inventory so not 100% but thats my understanding.

Looks like your on an older version. What version are you running?


An old version… DOH!!!

I’ve just updated to v5.6

everythimg looks like yours now.

Thank you

So I’m updated, and then…

1st. What does the multiplier under Portion Prices do?

2nd. If it doesn’t multiply inventory consumption based on portion size, is it necessary to create a separate recipe for each portion size? And if the recipe contains many items, is it possible to clone the original recipe, rename it and adjust the consumption? (Reading your post it seams so, but I cant work out to do it)

Thanks in advance

So I’m updated, and then…

I actually also sell amongst other things pizza (seems to be a theme)

But I only have 1 size and one type of dough, so I followed the tutorial to making recipes using order tags and not containers.

I’ve added prices to the Order Tags, as I want to use them to modify pizzas as well.

But now when I run a sale through, it doesn’t consume items in my warehouse.

Where am I going wrong?


1 Like

IIRC, the Portion Multiplier has something to do with Weight/Scales. It does not multiply consumption, unfortunately.

Yes, that is the quickest way to do it. Right-click on a Recipe and select Clone. The Product and Portion will be blank in the clone, so set them appropriately. You also need to give the Recipe a unique name, which is why they might be named as such:

Pizza Captains Breakfast.Whole
Pizza Captains Breakfast.Half

… or by your example, the Recipes might be:


Ensure that your Inventory Purchase Transaction uses the same Target Warehouse as the Department Warehouse (found in Settings > Departments > [Restaurant]). By default, it would be Local Warehouses Type, from the warehouse named Local Warehouse.

I renamed the default Local Warehouse to “SHOP”, and my Restaurant Department uses the SHOP Warehouse.

Then I have a Supplier Warehouse (one for each vendor) that the applicable Inventory Items are assigned to, and the Inventory Purchase Transaction is configured to use the Supplier Warehouses Type as the Source (which Supplier can be chosen during the Purchase) and SHOP as the Target.

I’ve checked all the settings and it looks like its all fine. Before I added Order Tags to the recipes, they were consuming from the warehouse.

I’ve tried to include every screenshot so you can follow the flow.

In the recipe for Flight 52, I tried to delete the Order Tag on the Petit Rose, and the run a sale through. As you can see from the 2 Warehouse shot, the Petit Rose decreases, but every other item remains the same.

As you can see from the order tag screen, there isn’t anything special about that setup, but it seams adding them to the recipe stops the warehouse from updating.

Strange. Take a look at the following, and see if you can spot anything different …

Something else to consider: do you have any duplicate Order Tags, perhaps as members of different Order Tags Groups?

The only differences is the name of the Transaction Type and that the order screen doesn’t display Inventory Items

Im stumped

You should set the Source Warehouse Type. The Default Source Warehouse can be left blank so that you may choose the Supplier Warehouse when you make a Purchase.

If you don’t want to show Supplier Warehouses, then you can set them to Hidden…

You can also create Supplier Entities and set their Warehouse per-entity …

I didn’t have supplier warehouse, so I set up a new one, but the options are different.

Sorry, wrong screen shot

The result is still the same. When I make a sale of P2 the only Item that is consumed is the Petit Rose that hasn’t got an order tag.