KiCad
Setting up a KiCad BOM with real manufacturer part numbers
Build a KiCad BOM around exact manufacturer part numbers, supplier SKUs, footprints, and DNP status so purchasing and assembly receive usable data.
Published Updated
A value is not an orderable part
10k, 100nF, and USB-C are useful schematic values, but none identifies a component that purchasing can order without making another engineering decision. A production BOM needs an exact manufacturer part number (MPN) for every fitted line item, plus enough context to verify the package and source it.
Keep these concepts separate:
| Field | Example | Purpose |
|---|---|---|
| Value | 10k 1% |
Electrical meaning shown on the schematic. |
| Footprint | Resistor_SMD:R_0603_1608Metric |
Land pattern placed on the PCB. |
| Manufacturer | Yageo |
Company that defines the ordered part. |
| MPN | RC0603FR-0710KL |
Exact orderable component. |
| Supplier | DigiKey |
Distributor used for this build. |
| Supplier SKU | A distributor stock code | Convenience identifier for that distributor. |
| Datasheet | Manufacturer URL | Evidence for ratings, package, and pinout. |
The supplier SKU is not a substitute for an MPN. It can change with distributor packaging or region, while the MPN is the identity an assembler should match.
Add consistent symbol fields
In the Schematic Editor, select a symbol and press E to edit its properties. Add project-wide field names with consistent spelling and capitalization. A practical baseline is:
ManufacturerMPNSupplierSupplier SKUDatasheet- optional
Notesfor procurement constraints
KiCad already has built-in attributes for Do not populate and Exclude from BOM. Use them instead of inventing text such as DNP? in a notes field. A DNP component is often valuable in the BOM as a clearly unstuffed line; an item excluded from BOM is absent entirely. They serve different release purposes.
Use Tools → Edit Symbol Fields… to edit many components in a table. Show the custom fields as columns, filter by reference prefix or value, and paste repeated data carefully. This view makes blank MPN cells and inconsistent field names visible in a way that opening symbols individually does not.
Store the fields on schematic instances, not only in a global symbol library. A generic capacitor symbol can represent hundreds of voltage, dielectric, tolerance, and package combinations. The project instance is where the actual design choice belongs.
Choose the MPN from the datasheet and package drawing
Copy the complete ordering code from the manufacturer’s current datasheet or product page. Suffixes can encode package, temperature range, tolerance, reel quantity, lead finish, firmware, or regulatory grade. Truncating STM32G0B1KET6 to STM32G0B1 creates ambiguity precisely where mistakes are expensive.
For each new line item, verify:
- The electrical ratings meet the circuit requirements with margin.
- The ordering code maps to the intended package variant.
- The package drawing matches the assigned KiCad footprint dimensions and pin numbering.
- The part is active and available in the quantity needed.
- Moisture sensitivity, storage, or assembly requirements are acceptable.
For passives, do not let a correct nominal value hide the wrong dielectric, voltage rating, power rating, or tolerance. 100nF, 0603 may be enough for a prototype bypass location, but the released MPN should settle those remaining choices.
Group only truly interchangeable references
A grouped BOM combines references when their selected grouping fields match. Group by at least Value, Footprint, and MPN; including Manufacturer is sensible too. Grouping only by value can merge a 0603 resistor with a 1206 resistor or two capacitors with different voltage ratings.
The desired output is one line such as:
Refs,Qty,Value,Footprint,Manufacturer,MPN,DNP
R3 R7 R12,3,10k 1%,R_0603_1608Metric,Yageo,RC0603FR-0710KL,
If two approved parts are genuine alternates, do not place both strings into one MPN cell and leave the assembler to guess. Maintain an approved-vendor or alternate-parts record with explicit equivalence criteria. For a small build, a single primary MPN per line is easier to audit.
Export a repeatable BOM from KiCad 9
The Symbol Fields Table can create and save BOM presets. Build a preset containing the exact columns and grouping rules required by your assembler, then save it with the schematic. That prevents every export from becoming a new manual configuration.
KiCad 9 exposes the same BOM system through kicad-cli. A direct export can name fields explicitly:
mkdir -p build
kicad-cli sch export bom \
--output build/controller-bom.csv \
--fields 'Reference,${QUANTITY},Value,Footprint,Manufacturer,MPN,${DNP}' \
--labels 'Refs,Qty,Value,Footprint,Manufacturer,MPN,DNP' \
--group-by 'Value,Footprint,Manufacturer,MPN,${DNP}' \
hardware/controller.kicad_sch
Shell quoting matters because ${QUANTITY} and ${DNP} are KiCad field tokens; single quotes prevent a POSIX shell from trying to expand them as environment variables. Alternatively, use named schematic presets with --preset and --format-preset. Run kicad-cli sch export bom --help for the options in the pinned KiCad version.
Do not use --exclude-dnp unless the recipient explicitly wants fitted parts only. Keeping DNP lines with an unambiguous flag is useful for assembly drawings, future variants, and debugging unpopulated option footprints.
Validate the CSV as a manufacturing artifact
Open the exported CSV in a plain-text editor as well as a spreadsheet. Check that commas, quotes, line breaks, and reference lists survived correctly. Then audit:
- every fitted component has an MPN;
- quantities equal the number of references;
- no reference appears on two lines;
- DNP and excluded items behave as intended;
- package suffixes agree with footprints;
- connectors, modules, and mechanical BOM items are not forgotten;
- supplier SKUs correspond to the same MPN, not a near match.
The board and BOM also have to describe the same revision. Follow a controlled schematic-to-PCB parity workflow before export, and include BOM review in the pre-order DFM checklist.
Finally, be clear about the order type. A bare-board fabricator needs Gerbers and drills; an assembler needs the BOM, placement data, and assembly instructions as well. The distinction between PCBA and a bare PCB determines whether your carefully prepared part numbers are actually consumed.