Build and Sell a Bill of Materials (BOM) Item
A Bill of Materials (BOM) item is a kit: one PLU, one line on the receipt, one price — made up of other items you already stock. When the BOM sells, VMX leaves the BOM alone and takes the components out of inventory instead.
A holiday planter is the classic example. You sell it for one price, but what actually leaves the yard is one decorative pot, three 4" plants, and a bag of potting mix. Ring the BOM once and all five pieces come off the shelf count.
This guide walks the whole job end to end: deciding whether BOM is the right tool, creating the item, adding its components, pricing it, printing a pull list, and selling it.
The tradeoff: a BOM item has no on-hand count
Read this before you build anything. A Bill of Materials (BOM) item is not stocked. VMX tracks the components; it does not track finished units of the BOM itself.
In practice that means:
- The BOM item page has no Keep Inventory? checkbox and no On Hand row to count or adjust. There is nothing to count and nothing to adjust.
- You cannot answer "how many finished planters do I have?" from VMX. You can only answer "how many pots, plants and bags of mix do I have?"
- Nothing stops a cashier from selling the BOM. If a component is short, the sale still goes through and that component's on-hand goes negative.
- A BOM item has no Primary Vendor and cannot go on a purchase order. Adding one to an order is rejected with BOM items cannot be ordered; their on-hand quantities are not maintained. You buy the components; the kit only exists at the moment of sale.
If you need a real on-hand count of assembled units — because you build 40 planters on Monday and want to watch that number fall all week — a BOM is the wrong tool. Build the finished item as a regular item instead and use an inventory adjustment (or a Convert To) when you assemble.
If you don't need that count, and you want the components to deplete automatically, a BOM is exactly right.
Choose between BOM, Parent/Child, and Sells With
All three link items together, and they are easy to confuse. Pick by what you want the customer to see and what you want inventory to do.
- Bill of Materials (BOM) — a kit or assembly sold as one line at one price. Selling it depletes each component by its recipe quantity. The BOM itself is not stocked. Use it for gift baskets, planters, bundled kits, made-to-order combinations.
- Parent/Child — the same product in two pack sizes, such as a flat of 32 pots and the individual pot. Both sides carry a real on-hand count, and selling one converts stock from the other. Set this up on the same tab; see Parent/Child.
- Sells With — items that get added to the sale as their own separate lines whenever the main item is rung. Use it for a mandatory accessory, a deposit, or a delivery charge the customer should see itemized. The Sells With section sits directly below Materials on the same tab.
The short test: if the customer should see one line, use BOM. If the customer should see several lines, use Sells With. If it's one product in two sizes, use Parent/Child.
Prerequisites for building a BOM item
Before you start:
- Every component must already exist as an item in VMX. A BOM is assembled from PLUs, not from free text. If a piece of the kit isn't in inventory yet, create it first — see Adding a new item.
- Every component should be an inventoried item — one with Keep Inventory? ticked. Selling the BOM only draws down components whose on-hand VMX maintains; a non-inventoried component is simply skipped.
- You need permission to edit inventory. The Add form for components only appears for employees with inventory-edit permission.
- A BOM cannot contain another BOM. Components must be regular items. Nesting kits inside kits is rejected.
- Know your recipe: for each component, the PLU and how many of it go into one finished unit. Fractional quantities are allowed (up to four decimal places), so half a bag of mix is fine.
Everything below is standard VMX — there is no feature to switch on and no setup call needed.
Step 1: Create the item with Item Type "BOM"
The item type is chosen when the item is created, on the New Item Info form. Set it correctly the first time.
- Go to the Inventory page and click + Item at the top right of the Search page.
- Fill in the New Item Info form as you would for any item: Department/Subdept, Name, description, and the rest.
- In the Item Type drop down, choose BOM (Bill of Materials). The other choices are Regular (a normal stocked item) and Consignment.
- Leave the retail price blank or approximate for now — you can have VMX total it from the components in Step 3.
- Click Create. VMX opens the new item's page.
The item page for a BOM looks slightly different from a regular item: the Keep Inventory?, On Hand, Primary Vendor, and No Fractions? fields are not shown, because none of them apply to an item that is never stocked.
Step 2: Add the components on the Parent/Child tab
The recipe lives in the Materials section, which appears only on items whose type is BOM.
- Open the BOM item and click the Parent/Child tab.
- Scroll to the Materials heading. Under it, VMX explains: Components that make up this Bill of Materials (BOM) item. When this BOM is sold, inventory for each material is reduced by its specified quantity.
- In the Quantity box, type how many of the component go into one finished unit — for example
3. - In the PLU box, type the component's PLU — or start typing its description and pick the item from the suggestions that drop down.
- Click Add. The component drops into the materials table.
- Repeat for every component in the kit.
The materials table lists each component with PLU, Description, Qty, Avg Cost and Retail, and totals the retail column at the bottom as Total Retail. Click any component's description to jump to that item's page.
A worked example. A "Patio Planter" BOM might contain:
| Component | Qty |
|---|---|
| 14" glazed pot | 1 |
| 4" annual | 3 |
| Potting mix, 1 cu ft | 0.5 |
Sell two Patio Planters and VMX removes 2 pots, 6 annuals and 1 bag of mix from inventory.
Step 3: Price the BOM from its components
A Bill of Materials (BOM) item carries its own Retail Each Price, exactly like a regular item — the customer is charged that price, not the sum of the parts. You are free to price the kit above the parts (assembly labor) or below them (bundle discount).
To start from the component total:
- On the Parent/Child tab, look at the Total Retail figure at the bottom of the materials table. That is the sum of each component's retail multiplied by its quantity.
- Click Apply next to it. VMX asks Set this item's retail price to 79.50? — click OK.
- VMX sets this item's retail price to that figure and confirms with Retail price updated to $79.50, then reloads the page.
- To charge something different, go back to the Item tab and type your own figure into Retail Each Price, then save.
Apply is a one-time calculation, not a live link. If a component's price changes later, the BOM keeps the price you set until you click Apply again.
If you run more than one store, use Apply with care. The Total Retail figure is worked out from the component prices at the store you are currently signed in to, but the price it writes to the BOM is the company-wide Retail Each Price — not a store-specific one. If your stores price the components differently, applying from one store sets the kit's price for every store. Check the result before you rely on it, or set the BOM's price by hand on the Item tab instead.
How VMX calculates the cost of a BOM item
You do not enter a cost on a Bill of Materials (BOM) item. VMX maintains it for you: the BOM's Avg Cost is the sum of each component's average cost multiplied by its quantity in the recipe, kept separately for each store. Clicking Avg Cost on a BOM to type a figure in yourself gives the message BOM cost cannot be directly changed -- it's the sum cost of its child materials. To move a BOM's cost, correct the cost of the component that's wrong.
The figure is recalculated whenever:
- a component is added to the BOM, or removed from it;
- a component's quantity in the recipe is changed;
- a component's own average cost changes — for example when you receive that component at a new cost.
Because the cost is derived this way, BOM items are deliberately left out of the inventory warning about Non-inventory items with avgCost. A BOM legitimately carries a cost without carrying stock, so it is not something you need to go and fix.
Margin still works normally: the receipt captures the cost at the moment of sale, so sales and margin reports for a BOM reflect what its components actually cost that day.
Change the quantity of a component, or remove one
Edits happen in place in the Materials table on the Parent/Child tab of the Bill of Materials (BOM) item.
- Change a quantity — click the number in the Qty column (it is underlined with a dashed line and tool-tipped Click to edit quantity). VMX prompts Enter new quantity: — type the new figure and click OK.
- Remove a component — click the trash icon at the right of that component's row and answer Delete material?
- Add a component — use the Quantity and PLU boxes and the Add button above the table.
Any of these recalculates the BOM's Avg Cost immediately, for every store. They do not change the BOM's selling price — click Apply under Total Retail again if you want the price to follow the new recipe.
"This BOM has been sold. It's contents cannot be changed or past sales wouldn't be valid."
You can edit a Bill of Materials (BOM) after it has been sold. Each receipt stores the cost that was captured at the time of that sale, so changing today's recipe does not rewrite yesterday's sales, cost of goods, or margin reports.
There is still something worth thinking about before you change a recipe that has sold: afterwards the recipe on the page no longer describes the kits you already sold, so a pull list printed today won't match a job quoted last month. If the recipe has genuinely changed rather than been corrected, consider building a new BOM item instead and leaving the old one alone.
If you ever see This BOM has been sold. It's contents cannot be changed or past sales wouldn't be valid., editing after sale has been switched off for your store. Build a new BOM item for the new recipe, and contact help@vmxllc.com if you would like that changed.
Print a pull list, print a bid sheet, or export the components
Once a Bill of Materials (BOM) item has at least one component, three buttons appear below the materials table on the Parent/Child tab:
- Print Pull List — opens a printable list of the components with PLU, Description and Qty, and no money on it. This is the sheet you hand to whoever is assembling the kit.
- Print with Cost — the same list plus Last Cost, Ext Cost and Retail columns and a Totals row. Use it as an internal bid or costing sheet; don't hand it to a customer.
- Export CSV — downloads the component list as a spreadsheet file, named after the BOM's PLU and today's date. The file always includes the cost columns, so treat it as internal.
All three print or export the recipe for one finished unit. Multiply by the number of units you're building.
Sell a Bill of Materials (BOM) item at the register
There is nothing special for the cashier to do.
- Ring the BOM up by PLU, barcode, or search, exactly like any other item.
- The register line normally shows the item description with its components listed underneath, so the cashier can confirm what's in the kit. A component whose recipe quantity isn't 1 is listed as
3 x 4" annual. - Enter a quantity if the customer is buying more than one. The recipe is multiplied by the quantity sold — two kits pull two of every component.
- Tender the sale as normal.
The customer is charged the BOM's own Retail Each Price and sees one line on the receipt. Behind the scenes VMX reduces each component's on-hand by its recipe quantity for the store that made the sale. The BOM item itself has no on-hand count and is not adjusted.
A return of a BOM works in reverse: each component's on-hand goes back up by its recipe quantity.
Find out which BOM items use a component
Before you archive, re-price, or re-cost an item, check whether a kit depends on it.
- Open the component item.
- Click the Parent/Child tab.
- Look for the Part of BOM heading. It lists every Bill of Materials (BOM) item that uses this one, with PLU, Description, and Qty in BOM.
If Part of BOM doesn't appear, that item isn't a component of any BOM. Click a listed BOM's description to open it and edit the recipe.
Errors when adding a component to a BOM
These messages come up while adding or editing components in the Materials section of a Bill of Materials (BOM) item.
- "A BOM cannot contain another BOM." — The PLU you entered is itself a BOM item. Kits cannot be nested. Add that BOM's individual components to this recipe instead.
- "PLU 12345 not found." — There is no item with that PLU. Components must already exist in inventory; check the number, or create the item first and then add it.
- "BOM material quantity must be > 0." — The Quantity box was blank, zero, or negative. Enter how many of the component go into one finished unit.
- "Quantity must be a number greater than 0." — Same cause, but from the Enter new quantity: prompt when you click to edit an existing component's Qty. Type a number greater than zero.
- "Only 4 decimal places allowed for BOM material quantity" — Round the quantity to four decimal places (
0.3333, not0.33333).
Frequently asked questions about BOM items
Quick answers on Bill of Materials (BOM) items in VMX.
- Can I convert an existing regular item into a BOM? No. Item Type is chosen on the New Item Info form when the item is created, and there is no drop down to change it afterwards on the item page. The Import/Export spreadsheet won't do it either — items it creates are always Regular. Create a new item with Item Type set to BOM (Bill of Materials).
- Can a component be used in more than one BOM? Yes. The same item can be a component of any number of kits, at different quantities.
- Can a component quantity be fractional? Yes — up to four decimal places, so half a bag or a third of a flat is fine.
- Do I count BOM items during a physical inventory count? No. Count the components. The BOM has no on-hand count to reconcile.
- Does each store need its own BOM? No. The recipe is company-wide; the cost is calculated per store from that store's component costs, and the sale depletes the components at the store that rang it.