Suite Utils
Back to Blog
NetSuite TipsAug 20, 2026 • 6 min read

How to Calculate Total BOM Cost in NetSuite

NetSuite has a built-in BOM cost report, but it only works under standard costing. Here is how to get total BOM cost on average or FIFO instead.

Sarah Jenkins, CPASarah Jenkins, CPAPrincipal Finance Automation Specialist
How to Calculate Total BOM Cost in NetSuite
On this page

Your predecessor's spreadsheet system dies with them. You now need the total cost of a bill of materials without maintaining hundreds of Excel files. The good news: NetSuite has a built-in report that does this. The catch: it only works with standard costing. If you run average costing, the native report returns nothing useful.

Here's the fix, and it's simpler than rebuilding that spreadsheet empire.

Why the Built-In Costed BOM Report Fails

The native report at Reports > Cost Accounting > Costed Bill of Materials requires standard cost on your items. When you open it with average cost items, you get blank or zeroed-out costs. That's the dead end you hit.

The reason is in how NetSuite structures the report. It pulls from the standard cost engine, which only populates when you run standard cost updates. Average cost items store their value differently, so the native report has nothing to read.

The SuiteApp That Fixes It

Oracle publishes a free SuiteApp called Costed Bill of Materials that extends this report to work with average cost. Install it from the SuiteApp marketplace, and the same report path suddenly works. The Manufacturing Guide confirms the SuiteApp calculates total cost based on a BOM revision, manufacturing routing, and cost templates, adding up component costs.

Here's the setup:

  1. Go to Reports > Cost Accounting > Costed Bill of Materials
  2. Select your Subsidiary from the dropdown
  3. Pick the Assembly Item you want to cost
  4. Choose the Location if you track costs by location
  5. Set the Build Quantity (defaults to 1)
  6. Select the BOM Revision and Effective Date
  7. Click Refresh

The report then shows the full cost explosion. You get total material cost, assembly cost, labor setup, machine run times, and the unit cost per assembly. The Item Record Management Guide explains that the sum of cost across cost categories generates total item cost, which is exactly what this report surfaces.

The Dropdown That Solves Your Price Problem

Here's the part that directly addresses your situation. The report has a Cost Type dropdown. You're not stuck with average cost.

The options include:

Cost SourceWhat It UsesWhen To Use It
Item CostAverage cost from inventory valuationWhen you want what actually hits the books
Purchase PriceThe purchase price field on the item recordWhen you want current procurement estimates
Last Purchase PriceMost recent PO priceWhen you want the last actual paid amount

Your predecessor manually updated base price, purchase price, and vendor price. The SuiteApp pulls purchase price directly from the item record. That eliminates the manual Excel lookup entirely.

The Base Price Problem

Your team sells using base price, which they set at the highest last purchase price plus a margin. The SuiteApp won't give you that number directly, because base price is a sales-side field, not a costing field.

But you don't need a spreadsheet for this. Here's the workflow:

  1. Run the Costed BOM report using Purchase Price as the cost source
  2. Export the result to CSV. The report supports this via the printer icon at the top of the inquiry page, which exports to Excel or CSV
  3. Apply your percentage markup in the CSV or a pivot table

That's one file instead of hundreds. And if you want to eliminate the export step entirely, you can add a custom formula field or saved search that multiplies the purchase price by your markup percentage.

Worked Example: The 3.5 Quantity Gotcha

The report multiplies component unit cost by the BOM quantity. If a component costs $0.27 and the BOM calls for 3.5 units, the report shows $0.945 for that line. That seems obvious, but it trips people up when they verify against item records.

The item record shows $0.27. The BOM shows $0.945. Both are correct. The component's on-hand, on-order, and backordered quantities display on the item record and match the inquiry. The difference is the multiplier.

When you're validating the report against your old Excel sheets, check this first. If your predecessor's spreadsheet had a formula error here, the SuiteApp will expose it. That's a feature, not a bug.

What About the "We're Losing Money" Argument?

Your team thinks average cost understates what they should charge. They're using base price because they believe it reflects replacement cost. That's a pricing strategy question, not a costing one.

The SuiteApp gives you both numbers side by side. Run it once with Item Cost and once with Purchase Price. The difference between those two is your margin risk. If purchase price is consistently higher than average cost, your team is correct that average cost understates replacement cost. If they're close, you're fine.

One caveat: the SuiteApp report reflects what's in NetSuite. If purchase prices on item records are stale, the report is stale. You still need someone to maintain those fields. The SuiteApp eliminates the spreadsheet maintenance, not the price data entry. The Item Record Management Guide notes that average costing is the default method, and your inventory reports reflect whichever costing method you choose.

The 30-40 Hour Win

Your example showed a $614 average cost, $621 last purchase price, and $678 list price. With the SuiteApp, you get the first two automatically. The third is a markup calculation.

The percentage adder approach works if your markup is consistent across items. If your predecessor was applying different margins per BOM, you'll need to document those before you kill the spreadsheets. Run the report with purchase price, apply the historical margin, and compare against the old Excel outputs for a few items. Once they match, you can retire the spreadsheets.

This won't replicate the exact methodology if your predecessor was using judgment calls. But it will get you 90% there with 5% of the effort. For the remaining 10%, you're better off with a documented pricing policy than an undocumented spreadsheet that only one person understood.

If you need to handle multiple price lists or customer-specific pricing on top of this, a price management tool becomes worth the cost. For a single base price with a markup, the SuiteApp plus a calculation column gets the job done.

About the author

Put these ideas to work.

Suite Utils builds small NetSuite tools that fix the specific thing breaking your day. Each one runs as a native SuiteScript SuiteApp inside your account. No sales call, no onboarding.

Browse the Tools

Enjoyed this one?

Get NetSuite tips like this in your inbox. No spam. Practical guides only.

Keep reading