Desktop platform icon This functionality is currently available only on Onshape's browser platform.

iOS platform icon This functionality is available on Onshape's iOS platform, but in a limited capacity.

Use the Onshape Bill of Materials (BOM) functionality to automatically create a BOM from any workspace Assembly. You can insert parts and assemblies into an Assembly post-release, from an Onshape version, or assemble the parts and sub-assemblies and then release the Assembly all at once. For more information on Release management, see Release Management.

Onshape BOMs include a default set of properties as columns, and you can add or remove columns at will. Define Custom Properties and include those in the BOM as well, if you wish. You can also supply Display names for all Onshape-supplied properties through the Custom properties page of Company/Enterprise settings.

Your company or Enterprise administrator can also create a default template to use for your Bill of Materials.

Loading and viewing the tableCopy link

All Onshape Assemblies have a BOM table icon on the far right of the graphics area, below the View tools icon.

  1. In an Assembly, click the BOM table icon on the right edge of the graphics area.

    BOM Table Icon

  2. When the table opens, Onshape retrieves the data for the Assembly and populates the table (if there are parts or assemblies present, see the top example below). If no parts or assemblies are present, Onshape opens with default column names (properties) displayed (see the bottom example below):

    example of loading and viewing the table

    Bill of materials with parts listed shown on a browser, above

    Screenshot of BOM table in iOS

    Bill of materials with a part listed shown on iOS, above

    example of loading and viewing the table

    Bill of materials with no parts listed shown on a browser, above

  3. To populate an empty BOM, simply create your assembly in the Assembly tab, following the instructions in Insert Parts and Assemblies.
  4.  In the BOM panel, select how to view the information (through the BOM type menu):
    • Flattened - This view provides a simple list of parts by item number, with no indication of subassemblies.
    • Structured - This view provides a list of parts including indication of expandable subassemblies. Subassemblies are indicated with small right-facing caret; for example: 

      When viewing in Structured format, double-click the cell with the caret (the subassembly) to expand the list below the cell and see the parts included in the subassembly, labeled with the subassembly item number followed by a dot and then the part item number (9, 9.1, 9.2, and 9.3 in the example below):

      example of double clicking the cell with the subassembly to expand the list below

      The item numbers assigned to the subassemblies and parts reflect the order of the instances in the Instances list. If you reorder the instances in the list, the BOM table updates to reflect that new order.

      Before, 002c-Oil Tank Nozzle is seventh in the Instances list and item number 7 in the BOM table:

      example of Instances list before being reordered

      After the part is moved to first place in the Instances list, it is updated to item number 1 in the BOM table:

      example of Instances list after being reordered

Sorting BOM table itemsCopy link

You can sort items in the BOM table alphanumerically by a column variable. Each column variable heading cell act as a three-way toggle, from (1) unsorted to (2) ascending sort order to (3) descending sort order. Double-click on the header to toggle from one sort state to the next.

BOM table items sorted by ascending (left) and descending (right) Quantity.


  • The Item column is fixed and cannot be sorted.
  • Table data can only be sorted by one column at a time.

Locating items in the model and Instances listCopy link

To locate items from your Instances list in your model, click the item name in the Instances list and the selected item is highlighted in the model. Concurrently, in the BOM table, the associated item row is highlighted and scrolls into focus. Alternately, click the item name in the BOM table, and the selected item is highlighted in the model and Instances list.

Generating part numbersCopy link

If you have automatic part numbering turned on in the Release management settings, in a BOM you can:

  • Generate part numbers for a particular part - Right-click the Part number cell of the part and select Generate next part number.
  • Generate part numbers for any parts in the table that are missing part numbers - Right-click the Part number column header and select Generate missing part numbers.

Additional table dataCopy link

Item number, Quantity, Part number and Description are the default properties displayed for parts and subassemblies as columns in the BOM table. You can add more columns, according to the properties defined for your account.

  1. Click the Add column drop down and select a property to insert from the list of properties. Additional columns are added at the far right side of the table.
  2. For properties marked as editable (in your account Properties), you can click in the cell and add data. This data is saved for the specific part, in the specific property and is available throughout your document and company for that part.

    For example, you can enter information in the Vendor cell for each part. That information is saved in that part's Properties, Vendor field:

    The Vendor cell with a value in a BOM table:

    example of the Vendor cell with a value in a BOM table

    The Properties dialog for the part:

    example of a Properties dialog

    Pay attention to where you allow a property to be edited, however. When creating a property (through the Properties tab in your account settings), you can mark it Edit value in workspace, Edit value in version or both. If you mark it Edit value in version only, you can edit that value in a BOM table for any released parts since released parts become part of a version. However if Edit value in version is not marked, you would have to branch a workspace from that version, edit the values, then either create a version, or re-release the parts.

  3. To choose to exclude a specific part or subassembly and its corresponding data from the BOM table without deleting it from record: right-click in the row and select Exclude from BOM. The row of data is removed completely from the table but the part still exists in the Assembly. The remaining items are renumbered accordingly.
  4. To leave a record in the table of the information that's being excluded, you can click on the overflow menu at the top right of the table and select Show excluded. This displays the row in the table, however, the item number is replaced with a dash, indicating that the item is not included. This construct works the same for subassemblies; when a subassembly is excluded, all the of the parts are also excluded.
  5. When items are excluded from the BOM, the remaining items are renumbered accordingly.
    To include an item in the BOM again, select Show excluded, then right-click the row to re-include and select Include in BOM.

  6. Another way to exclude/include items from a BOM is to use the Exclude from BOM checkbox in the parts Properties dialog.

You can choose how to list a subassembly in a BOM, either as the assembly and its components, as the assembly only, or as the components only:

  1. Open the Properties dialog for the Assembly (the tab or the subassembly listed in the Instances lists).

  2. Scroll to the Subassembly BOM behavior field:

  3. Select one of the options:

    1. Show assembly and components - In a Structured view of the BOM, the assembly is listed along with individual line items for each of the assembly components.

    2. Show assembly only - In a Structured view of the BOM, only the assembly is listed (no components).

    3. Show components only - In a Structure view of the BOM, only the components are listed (no assembly line item).

  4. Click Apply to register the change, or Save to register the change and close the dialog, or Close to close the dialog without registering the change.

The changes to the Assembly property affect all BOMs the assembly is inserted into, including BOMs in drawings.

Adding Items

You can insert non-geometric items (items not modeled in CAD, like glue, tape, paint, thread locker, etc) into your bill of material, through the BOM panel in an Assembly tab. Onshape refers to these types of entities simply as items.

There is some setup required in order to have the information available for insertion into the bill of material. Refer to Managing Your Onshape Professional Subscription if you have a Professional subscription or to Managing Your Onshape Enterprise Subscription if you have an Enterprise subscription. Once you have items added to your subscription (in your company/enterprise settings Properties), you can follow these instructions to insert those items into a bill of material within an Assembly tab.

  1. In the Bill of Material panel, select the Insert items icon at the top of the panel:

    Bill of Materials Table with arrow pointing at Insert Items Icon

  2. In the dialog:

    Insert Items Dialog

  3. Select the item to include in the BOM, and the quantity. You can search the items and also filter by classification (click the down arrow next to Classification all).
  4. Click Insert to add the selected items to the BOM.
    1. When you click Insert, the item is added to the Items list in the Instances list first. You can click Undo to remove items, if you change your mind about an item.
    2. When you click the checkmark to accept your actions and close the dialog, the items appear in the BOM panel.

    Instances List

    Bill of Materials Table

    You can edit the items through the Instance list.

    Right-click an item to:

    • Edit - Change the quantity
    • Suppress - Temporarily take the item out of the BOM (and assembly)
    • Add comment - Add a comment to the assembly that directly references the item
    • Delete - Delete the item from the assembly and the BOM

Bill of Materials templates

Once you have edited the Bill of Materials format, you can save that as a template and use it. Click the three-dot menu in the upper right corner of the Bill of Materials table, and click Save as template...

BOM 'save as template' option

This opens the Create template dialog box, where you can name and create your new BOM template.

BOM 'create template' dialog box

New templates you create can be applied by clicking the Apply template dropdown at the top of the panel, and selecting a template from the list:

BOM 'Apply template' dropdown menu

The selected template appears in your BOM table.

You may also have templates in that list created by your company or Enterprise administrator.

Export to CSVCopy link

Use the overflow menu's Export to CSV command to export the entire BOM table to a comma-separated file. If subassemblies are not expanded, the entire BOM will not be exported.

Formatting the tableCopy link

Resize the table in the following ways:

  • Click and drag the left-most edge of the panel to resize the panel, larger or smaller. There are limits to how large and small you can make the panel.
  • Resize rows by clicking and dragging the column header border to the left or right. Note that the first column is stationary for reference; it cannot be moved or resized.
  • You have the ability to move any column to the right or left, or remove it from the table through the context-menu on the column name:

    example of Formatting the table

  • To add a removed column back to the table, use the Add column drop down at the top right of the panel.

Considerations around released or releasing partsCopy link

Keep in mind that when using imported or released parts in an Assembly, the properties will display in the BOM table as read-only. To create a BOM with editable fields, you can branch from the version to create a new workspace. The fields in the BOM will be editable per the settings for each property (through the account settings).

When you insert released (revisioned) parts into the Assembly and then create the BOM table, the state property will be Released.

Using BOMs in drawingsCopy link

You can insert Onshape BOM tables into your drawings. See the Insert BOM topic.