How to Build a BOM (Bill of Materials): A Step-by-Step Guide for PCB Projects
What Is a Bill of Materials (BOM)?
A bill of materials is a structured list of every component required to build a product — for a PCB, that means every resistor, capacitor, connector, and IC, each tied to a specific location on the board. It's often described as a recipe: the schematic and layout define the design, but the BOM is what tells a manufacturer, a distributor, or an assembly line exactly what to buy and where to put it.
A BOM isn't just a shopping list, though. Because it's used by design, procurement, and manufacturing teams alike, it also functions as a contract document — when you hand a design off to an assembler, the BOM defines exactly what's supposed to get built. Ambiguity anywhere in it (a missing part number, an unclear tolerance, an unlabeled do-not-populate position) tends to surface as a hold or a clarification request during assembly, not before.
Why a Complete BOM Matters Before You Order
A well-built BOM affects far more than whether assembly goes smoothly. It's the document most of your downstream decisions are actually based on:
Lead time — long-lead components (certain MCUs, power ICs, connectors) need to be flagged early enough to source alternates or order ahead.
Cost — accurate MPNs and quantities are what make a BOM quotable; vague entries force estimating from generic assumptions.
Design for manufacturability — package types and footprints in the BOM need to match what was actually drawn in the layout.
Supply chain risk — single-source parts and long lead times are easiest to catch and mitigate at the BOM stage, not after a shortage hits.
Most of this is easiest to catch during a DFM review before the design is finalized, since that's the point where component or footprint mismatches can still be corrected without touching the layout.

EBOM vs. MBOM
Larger projects, and any product going into repeat production, tend to split the BOM into two versions used at different stages:
| Aspect | Engineering BOM (EBOM) | Manufacturing BOM (MBOM) |
|---|---|---|
| Created by | Design engineers, usually generated from the schematic in an EDA tool | Procurement / production planning, built from the EBOM |
| Purpose | Captures design intent — what the circuit needs | Captures build instructions — what to buy and assemble |
| Detail level | May list alternates or design-stage placeholders | Fully resolved: exact MPNs, quantities, populate status |
| Used by | Design and engineering review | Assembler, contract manufacturer, procurement |
How to Build a BOM: Step by Step
Step 1: Finish your design and generate your Gerbers first
A BOM can't really be started in earnest until the design is settled. Component packaging, footprint, and manufacturer all constrain the layout — deciding these after routing is done tends to force rework later. In practice, that means: complete the schematic, finish the layout, and export your Gerber files before you lock down the BOM. If you need to double-check that your Gerbers are complete and correctly structured before moving on, a free viewer such as PCBGogo's Gerber Viewer will let you inspect the layer files without needing separate CAM software.
Step 2: Export a raw BOM from your EDA tool
Most EDA tools can generate a starting BOM directly from the schematic netlist, which avoids manual transcription errors between the schematic and the parts list. This raw export is a starting point, not a finished BOM — it typically includes reference designators, values, and footprints, but rarely includes manufacturer part numbers, distributor information, or populate status unless you've maintained those as component properties during design.
KiCad: Tools → Generate BOM (schematic editor), or File → Fabrication Outputs → BOM from the PCB editor for a simpler, footprint-only export.
Altium Designer: Reports → Bill of Materials from the schematic, which lets you choose which component parameters to include as columns before exporting.
Whichever tool you use, treat the export as a skeleton. The next steps are about filling in what it leaves out.
Step 3: Add the fields your export is missing
This is where most of the actual work happens. At minimum, add a manufacturer part number (MPN) for every line — a generic description like "100nF capacitor" leaves room for a distributor or assembler to substitute a part that meets the basic spec but differs in dielectric type, voltage rating, or tolerance. See the field checklist further down for the full list of what a production-ready BOM needs.
Step 4: Specify tolerance, voltage, and composition for passive components
For any passive part you're comfortable leaving as "any/open" (not tied to a specific manufacturer), you still need to fully specify the electrical parameters, or the substitute selected could behave differently than intended:
Resistors: tolerance and power rating, at minimum. A 1kΩ 1% resistor and a 1kΩ 5% resistor are not interchangeable in a precision circuit.
Capacitors: tolerance, voltage rating, and dielectric type. A 10μF X7R ceramic and a 10μF electrolytic behave very differently at high frequency, even at the same nominal value.
Inductors: core composition, DCR, and saturation current should be fully specified rather than left open — inductors are specialized enough that "any/open" substitutions are risky.
Step 5: Handle DNP/DNI positions and alternates explicitly
Do Not Populate (DNP) or Do Not Install (DNI) positions — used for optional circuit variants, debug access, or future revisions — should still appear in the BOM with full component data, just flagged with an explicit populate status. Leaving a position out of the BOM entirely gives the assembler no instruction for it, which tends to get resolved inconsistently.
If you're pre-qualifying alternate parts for anything single-sourced or long-lead, note them as approved alternates only once they've been verified for footprint, reflow compatibility, and the actual operating conditions of your design — not just electrical equivalence on a datasheet.
Step 6: Verify against your schematic and layout
Before submitting, cross-check that every reference designator in the BOM matches what's on the schematic, the layout, and the pick-and-place file. A single RefDes that shifted during a layout revision but wasn't updated in the BOM can cause an entire panel to be loaded with the wrong component at that position. This is also the stage where a DFM check is worth running — PCBGogo runs DFM checking on submitted files, which catches footprint and package mismatches between the BOM and the layout before they become an assembly-line problem.
Step 7: Choose a file format and submit
Spreadsheet formats (.xls, .xlsx, .csv) remain the most universally accepted BOM format for PCB assembly submissions, since they're easy for both procurement and assembly teams to open and cross-check without special software. Keep a version-controlled naming convention (a revision letter or date stamp) so it's clear which BOM revision matches which layout revision.
BOM Field Checklist
Item number — a stable row identifier that doesn't shift between revisions.
Reference designator (RefDes) — e.g. R1, C5, U3 — must match the schematic, layout, and pick-and-place file exactly.
Quantity per board — the count needed for one assembled unit, separate from any buffer for rework or attrition.
Component value — resistance, capacitance, inductance, or voltage, in a consistent notation (4.7k, not 4K7 and 4.7k mixed).
Description — enough detail (tolerance, voltage rating, dielectric type) to define what a substitute part would need to match.
Manufacturer part number (MPN) — the single field that unambiguously identifies the exact part.
Manufacturer name — prevents substitution with an electrically similar but mechanically different part from another maker.
Package / footprint — the physical form factor (0402, SOIC-8, QFN-32) matched to the layout's land pattern.
Populate status — explicit DNP/DNI flag for any position that should not be assembled.
Alternate part number(s) — optional, but should be engineering-verified rather than just datasheet-equivalent.
Common BOM Mistakes That Cause Delays
Most assembly holds trace back to one of a handful of recurring BOM errors:
1. Quantity errors — a component used in multiple positions listed as qty 1 instead of the true total, which surfaces as a shortage mid-run rather than during procurement.
2. Reference designator drift — a RefDes renumbered during a layout revision without a matching BOM update, which misaligns the pick-and-place file.
3. Generic descriptions with no MPN — leaves the part selection to procurement or the assembler, without engineering review.
4. Missing DNP entries — a position that exists in the layout but isn't listed at all in the BOM, leaving the assembler without instructions for it.
5. Inconsistent value notation — mixing formats like "4.7K" and "4K7" across the same BOM, which slows down manual verification.
Frequently Asked Questions
Do I need special software to build a BOM?
No — a well-organized spreadsheet is enough for most projects. Most EDA tools (KiCad, Altium) can also export a starting BOM directly from the schematic, which you then enrich manually with the fields the export leaves out.
What's the difference between package type and footprint?
Package type describes the physical form factor of the component itself, as defined by its manufacturer (SOIC-8, QFN-32, 0402). Footprint describes the land pattern drawn on the PCB layout — the copper pads and courtyard. Both should be specified and cross-checked against each other, since a mismatch between the two is a common source of assembly interference.
How many boards do I need to order for a first BOM-based build?
This depends on your manufacturer's order policy. PCBGogo, for example, has a 5-board minimum order for PCB fabrication.
Should DNP components be removed from the BOM entirely?
No — DNP/DNI positions should stay in the BOM with full component data, just flagged with an explicit populate status. Removing them entirely leaves the assembler with no instruction for that position at all.