Inventory Manufacturing

QuickBooks Manufacturing Bill of Materials

In my post on QuickBooks manufacturing basics I discussed the essential nuts and bolts (sorry for the pun) of building assemblies in QuickBooks. Today I’ll talk about structuring your bills of material (BOM’s). A BOM is a simple thing, right? You want to build something, you just enter in the list of all the parts that you use, and there you are. On some levels that is correct, but if you are looking for inventory accuracy, accounting accuracy, and want to make your life easy, you need to give this some more thought.

QuickBooks is only a rudimentary manufacturing system, so I’ll start off by listing some of its limitations:

  • You can only add 100 different items to a BOM if you are using Premier. Enterprise is more flexible, you can add up to 500 different items.
  • Reporting based on BOM’s is very limited
  • Although you can create multiple-level assemblies (that is, a part in an assembly can itself be another assembly), a build will only work with a single level at a time.
  • Integrating non material items in a BOM can be tricky when it comes to costing.

In this article we’ll talk about basic structuring of the BOM – we’ll go into how to use various item types in a future article.

Working with Levels

How do you look at the item you are assembling? There are different ways of listing the parts in an assembly – either a flat listing that shows all of the parts, or a nested listing that shows the parts in a tree structure with subassemblies. Each has its advantages, each has its problems in QuickBooks.

Let’s look at a simple assembly, a computer that I’m putting together from components. I have a desktop box, two monitors (it’s a dual monitor system, fancy), and a keyboard. That desktop box itself has a case, motherboard, power supply and a video card (I’m greatly simplifying this for the sake of discussion).

If I have all these parts and I make the computer all at once, then I can make a flat BOM, like the following:

This is simple to work with. I can print a listing to give to the assembler, and I can issue a single build to create the item all at once. For simple assemblies, this works well and fits within the QuickBooks approach to manufacturing. There are some drawbacks, though, which become more apparent when the product becomes more complicated:

  • If you have a more complicated product you can run into the limitation of the number of items that are allowed in a BOM.
  • If you build in stages you have no indication of what those stages are. This BOM doesn’t show you that you need to build the desktop box by first assembling the case, power supply, motherboard and video card. You also can’t use this if are building a number of desktop boxes themselves to hold on your shelves, ready for final assembly into systems.

The alternate approach is to create subassembly items and make a nested BOM. We’ll create a new inventory assembly item for the desktop box, and alter the desktop computer assembly appropriately. Here is the BOM for the desktop box (subassembly):

Here is the changed BOM for the desktop computer – note that we have dropped some of the components and have added the desktop case as a subassembly:


Now we have two assembly items – one for the desktop box, and one for the final assembled computer. There are a number of advantages to this approach:

  • You get around the limit on the number of lines in a BOM.
  • You can build the subassembly by itself so that you can stock it for replacement parts, or to hold some ready for the final assembly.
  • If you have several variations of the final product that use the same common subassembly you can make changes to that subassembly quite easily. In a simple example, let’s say that we have a number of variations of final assembled desktop computer. Some have two monitors, some have one. Some have a 17″ monitor, some have a 20″ monitor. Some use an ergonomic keyboard, some use an economy keyboard. All use the same desktop box as a starting point. If you use a flat BOM then you have to enter all of the components for the desktop box for each of your final assemblies, rather than just adding the one subassembly component. If you have to make a change to that desktop box – such as changing to a different type of video card, you would have to make the change in each final assembly if you use a flat BOM, where you only have to make one change if you use the nested BOM.
  • Your printed BOM more closely mimics the assembly process – you have one BOM for the desktop box, you have another BOM for the final assembled computer.

However, there are tradeoffs. Your manufacturing process in QuickBooks is more complicated, your QuickBooks reports don’t show you as much information as you had before.

  • If you want to build an assembled computer you now have a two step process instead of one. You must first issue a build for the desktop box subassembly. When that is done, you then have to issue a build for the assembled computer. QuickBooks won’t issue a multiple level build – that is, you can’t issue the build for the top level assembly and have it take care of all the parts of the subassemblies.
  • There is no way in QuickBooks to print a complete BOM of the top level assembly including the parts of the subassembly. You can only print a single level BOM.
  • When you look at the top level assembly in the build assembly window, which tells you if you can build the required quantity of the assembly, you don’t have a way of seeing if you have any shortages of the lowest level parts in the subassembly. You can’t see if you can build this item. You first have to look at the subassembly, then at the top level assembly.

These limitations make it difficult to work with multiple level BOM’s in QuickBooks. If you have a simple product, or a limited number of products, you might be better off working with flat BOM’s. If your products are more complex, though, that might not be an option. With complicated products you need the ability to print a BOM for a subassembly, and you may need the ability to manufacture quantities of the subassembly separate from the final assembly itself. If you often have changes to the composition of your subassemblies you will find it hard to achieve accuracy if you have to go through all of your assemblies to make a change, rather than just editing the common subassembly one time.

Working with nested BOM’s in QuickBooks can be done, you just need to pay close attention to the order in which you are building assemblies, and keep careful records of your assembly listings.

BOM Costs

Now that you have an understanding of a BOM in QuickBooks, I recommend that you also read my article about the Total Bill Of Materials Cost field in the BOM.

Working with 3rd Party Programs

If you are working with complicated products and need to maintain multiple level BOM’s then you may find it worthwhile to work with one of several 3rd party add-on programs that work with QuickBooks. At this time we won’t go into a detailed description of those that are available – you can find information on them in the QuickBooks Solutions Marketplace. These 3rd party programs fall into a few broad categories (note – I’ll list a few examples, but these are not necessarily endorsements) :

  • Inventory replacements: Some programs, like Fishbowl Inventory, maintain a complete inventory system outside of QuickBooks. This gives the product more flexibility in how inventory can be managed, but can be more expensive and means that you have to manage a completely separate program and database.
  • Closely integrated: Another approach is to work with the inventory records in QuickBooks while generating reports and managing data in ways that QuickBooks doesn’t do, such as CCRQBOM. With this approach you do more of your work in QuickBooks where things are familiar, and you don’t have to manage a separate database. Often this approach is less expensive, but you still have to live with some of the restrictions in QuickBooks.

I’ll admit that I have a bias here – my company produces CCRQBOM. This is a low cost approach to providing the features that most small manufacturers need. The product lets you print a multiple level indented BOM that shows all levels of a complicated product structure, and it provides requirements reports that let you see if you have any shortages at the lowest level of an assembled product. However, you may find that you cannot live within the restrictions of the QuickBooks inventory system, and you may require a more expensive approach.

Share This Article


  • Many questions and I appreciate this site. I use Premier 2009…Manufacturing. I make soap. What if my unit of measure is an ounce and some of the components of my assemblies (a bar of soap) are less than an ounce? I think I could have a 30 bar mold full of soap be an assembly, but that wouldn’t give me the per bar level of information I want.

    Thank you

  • Thanks for all the information, but I noticed that you haven’t mentioned labor costs at all, which are an integral part of the cost of a product. Is there a way to include them in the inventory assembly?

    • Angel, I’ve been avoiding that question for awhile because it is a bit complicated to answer sometimes. Here is a quick answer, but it might not be a complete answer.

      QuickBooks isn’t going to track ACTUAL costs of things that are variable in an “build”. The best you can do is to enter an estimate of your labor costs.

      Let’s assume that your labor costs are being posted to an expense account by your payroll system. The actual costs of labor are usually posted to a bunch of accounts (depending on how you deal with payroll, etc.), but we’ll pick the one that employee time is posted to.

      Create an “other charge” item and check the box that says it is used in an assembly item. Set the “cost” to be your “standard” cost for the kind of labor you use in the assembly. Set the expense account to be the payroll labor account referred to earlier. Then add the other charge item to the BOM in the appropriate quantity.

      When you build, this is going to take the estimated cost of labor out of your expense and add it to the asset cost of the assembly.

      Note that this is an ESTIMATE of the cost (or perhaps a “standard cost”) and not the actual cost. Also note that some accountants don’t like this approach. You can do other variations, where you pick a different account in your COA to handle that cost.

      That is a brief answer, best I have at this moment. The real answer is to “ask your accountant”…

  • Help, I am trying to control inventory better and just upgraded to Premier 2009 from Pro 06. I manufacture frames. I buy a 10′ piece of moulding, then we cut it into a finished frame, a 4×6″ frame takes 3 feet, a 5″ x7″ 3 1/2 feet etc. We have over 5000 non inventory parts for our sales items in Pro. (style no. 55-46 size, 55-57, 55-810 etc.) Will Premier deduct 3 feet of moulding from style 55 when I input an order for a 4×6″ frame?

    • Laurie – that depends on how you set things up. You say that you have “non-inventory items” – so in that case you aren’t counting the quantity on hand. So when you say “deduct 3 feet” – it doesn’t make sense. You would have to make the moulding into an inventory part, and the frame either into a group item or an assembly item. Then you can assign the appropriate amount of moulding to the frame, and it will be deducted when you sell it (for a group item) or when you build it (for an assembly item). NOTE that you don’t necessarily want to change all of your non-inventory items into inventory items and assemblies, because that creates major changes in your financial statements that you might not like…

  • Thanks Charlie, I spoke with my accountant today when I tinkered and realized that changes would be made to the P&L. We are going to do the initial set up together to protect the accuracy of the financials. Thanks for your help, I am sure I will be a faithful on your site!

  • We make meat products, how can we use receipt to build up assembly items? For example, we make 100lb A product and use 100lb raw material B and 10lb raw material C in one day, but in other day, maybe we need 110 lb B and 11 lb C to make 100lb A. that meas the receipt is not constant, there are little bit difference. what should we do? Thanks.

    • Bob, there are several options, but the best answer depends on things I don’t know about your situation.

      -If you upgrade to Enterprise 10, the build feature includes the ability to alter the quantities when you build the assembly.

      -With other versions, you can issue the build and then do an inventory adjustment for the variation. A bunch of different ways to handle that depending on what you want to accomplish.

      -Instead of using inventory assembly items, use group items. Then on the sales receipt you can vary the amount of the raw materials used. There are tradeoffs, though.

  • Thanks Charlie. I don’t upgrade my Quickbooks to Enterprise 10, so I don’t know its build feature. But I think, if Quickbooks can provide a function that we can directly build our products by total raw materials used, not by receipt, it should be more convenient for users. For example, we directly open the build assemblies, enter the total amount of each raw material used and the total amount of finished goods we got, that’s all.

    • Bob, in Enterprise 10 (not Premier, not any older versions) they have added a new feature that I haven’t gotten around to writing about yet. You still create your bill of materials for the assembly item, but when you issue the “build” you have the ability to edit the quantities in that build. So if your BOM says that you need 10 of a part, you can change that to be 11 of that part just for that build. You can add parts. You might be able to delete parts (haven’t tested that to see if it causes problems yet). So you don’t have to go to the BOM and edit it and save it, you can just do an edit “on the fly” that only affects that build.

  • I hope you can help me figure this one out. We manufacture organic animal care products and I am trying to figure out how to manage our inventory better. The question I have is how do you take into effect the fluctuation of one ingredient such as water. The inventory assembly consists of multiple items that are fixed every time we make our shampoo base. Those items have a certain cost value, but that can change with the amount of water we use which fluctuates the total output of base being made each time. We then take the shampoo base assembly and use it to build our individual shampoo items and then sell these finished items. If the total output of base is changing each time because of the water being added (which has no $ value)this then changes the value of the base. How do you justify the value of this assembly item?

  • I’m not sure I follow your description in detail, but in general there are a couple of things you can try.

    QuickBooks Enterprise 10 has the ability to adjust the amount of the individual component items that you use in a particular build. Very useful.

    In other versions/years of QB you can modify the BOM itself before the build, then change it back after the build. I don’t usually like this, but some people do it. If you change the BOM structure it does NOT affect existing builds, only those that you make using the new BOM.

    You can do a “value inventory adjustment” to post the value of the extra components that are used into the value of the inventory assembly item. That is a bit of a pain to do, but it works well.

  • We are considering using a product management program (Arena) to get BOM updates into QB Premier. We currently use the Intuit web connector to get finished-goods data into other versions of QB – but not BOMs.
    Does anyone know if its possible to create & update BOMs in QB Premier, using an external program and Intuit’s web connector API?
    Thanks in advance –

    • Sohail: I don’t use the Web Connector, but I know that the regular SDK will let you add and update a BOM – but there may be some restrictions.

  • Hi Charlie,

    I have just purchased QB Pro 2010 for our t-shirt printing company. As i am entering all my data into the software i noticed that there is no BOM option. What do i do?

    Help 🙁

    Thank you