BMS Quotes | Working with Unit Costs on Quotes


When working on quotes, MSPs would like to get estimates on the margin of profit they are making when selling an item using quotes. For better understanding and calculations based on the Cost and Price, we have made some enhancements to our Quotes and line items which are detailed in this guide.


Unit Cost field is introduced for all Line items in Quotes. Following are the modules where enhancements are made to support this feature.

  1. Admin Settings
  2. Finance
  4. Charges - Ticket/Project
  5. Bundles 

All the features detailed here are made available for New and Existing quotes. Unit Cost, Margin, and Price fields are all interconnected. Changing values on one of these will update the value on the other.

Admin Settings 

Navigate to Admin > Finance > Services > Create or Update your Service > Margin field is available. 

  • Admins can define the Margin value here. Selected Service will inherit this data when it's used on a quote. 
  • Margin will be zero by default. Margin can be left at zero or negative.



  • Navigate to Finance > Contracts > Recurring Service Contract > Add Service.
  • To update existing services, use Unit Change to update data. You can also update margin if needed. 



Navigate to CRM > Quotes.

Non-Product Items

  • T&M Labor
  • Charge
  • Fixed Price
  • Fixed Labor

For the above types, the Unit cost field is shown. This field is a manual entry on the UI. 

  • Margin can be a null value field. The field only becomes editable when the user enters a value in the Cost field. The value should be greater than zero.
  • For T&M items, the Billing rate is derived from the Admin role rate.
  • When a T&M item is added to the Quote, the Unit price as the Billing rate will be updated. The Cost field is set to 0 and Margin will be greyed out.
  • If you want to update the Cost, put a value greater than zero and the Margin will be updated based on this.


Product Items

When a product item is added to the quote, it inherits the data defined for the product under Inventory > Manage Products. Costs for products are defined at the supplier level (multiple costs for each supplier) and at multiple pricing levels. Unit price is derived by pricing level.

  • Navigate to Inventory > Manage Products
    • Create new or select existing product.
    • Under Product info, you should see the Price/Cost (Previously labeled as Pricing levels) tab.
  • You can define your costs and prices for the product here. Add Cost and Margin fields inside the Price/Cost tab.
  • For a product where Pricing level, Unit cost, and Margin is defined, the data will be auto-updated when this product is added to a quote. This data can still be overridden when adding the product to a quote.


In Quotes, add a product line item.

  • CRM > Quotes > Products > Pick a product > Pick a price level
  • Each product will have a single cost and price. This data can be overridden.
  • When you change the cost for a product, the price will be updated based on the margin. All three fields are interlinked. Unit price, Unit cost, Margin
  • Changing the price level will update the Margin and Unit price fields.



Pricing Level

  • When a product is selected on the quotes the price level is marked as default. This will auto-fill the Unit Price and Margin field.

  • Define default Pricing levels under Admin > My Company > Lists > Filter for Form Type Products >Products Pricing levels > Default: Yes


Charges - Ticket/Project

  1. Navigate to Service Desk > Tickets page > Expenses & Charges tab.
  2. Margin field is made available.
  3. Unit price in the form will be picked by the selected/default price level for the product.



When a Quote bundle is created it will inherit the data from the quotation. If Cost/Price are defined all the data will be imported to the bundle as well. All data will be shown in the Line item summary. 

Bulk Update Options

Users can bulk update the Cost data for services and products using the Import function.

For Services : 

  1. Navigate to Admin > Import Data > Import Excel. 
  2. To update Services data, download the Services Template.
  3. Fill in the details for each column. Unit Cost and Unit Price will have to be filled. Margin will be auto-calculated and auto-populated for your services after import. 



For Products : 

  1. Navigate to Admin > Import Data > Import Excel. 
  2. To update Product data, download the Product Template.
  3. A new column labeled Vendor Cost is added.
    • The values entered for Vendor Cost will go to Supplier.
  4. The values entered in Unit cost will default for quotes.
    •  The Vendor Cost replaces the old Unit Cost column, and the Unit Cost is newly introduced as the default Cost.
  5. Update all the required fields and import your products. 


For existing products

  • The user will export the product list from and update the Unit cost column and import it back.
  • The user will fill the values in the Unit cost column and import them into the system.
  • Users can also use Reports to export Product data. Use the Products category and choose your fields. 
  • For products where the pricing level is not defined, on every import, all the pricing levels will be auto-created. Users can modify this in the UI after the import. 



Additional Information

Formulas used to calculate margins are as below: 

if Margin Type is % => UnitPrice = UnitCost * (1 + Margin)
  • Where Margin is the percentage value 
if Margin Type is Ccy => UnitPrice = UnitCost + Margin
  • Where Margin is a currency value

API updates 

  • Quotes: Unit cost is added to following endpoints
    • POST : /v2/crm/quotes/{quotationId}/lineItems/{itemTypeId}/{distributerTypeId}
    • GET : /v2/crm/quotes/{quotationId}/lineItems/{lineItemId}
    • PUT : /v2/crm/quotes/{quotationId}/lineItems/{lineItemId}
  • Products : Margin is added to the following endpoints
    • GET /v2/inventory/products/{productIndexId}/pricingLevels

    • Retrieve value from DefaultCost

      • GET /v2/inventory/products/{productIndexId}/defaultcost

  • Tickets: Margin and Margin type added to GET/PUT/POST charge of tickets

Related Articles

Have more questions?

Contact us

Was this article helpful?
0 out of 0 found this helpful

Provide feedback for the Documentation team!

Browse this section