The bill of materials is the document that turns a design into a product. It tells us which components go on the board, where each one sits, and how many of each we need to buy. Everything downstream - the quotation, the purchase orders, the kitting list, the pick-and-place program, the inspection criteria - derives from it.
It is also, reliably, the single most common reason a quotation takes longer than it should. Not because bills of materials are hard to produce, but because a BOM that is complete enough for the design team is often not complete enough for the people who have to buy the parts.
What a BOM has to contain
There is a much smaller set of genuinely mandatory columns than most templates suggest:
| Column | Why it is required |
|---|---|
| Line number | An unambiguous handle for every query we raise back to you |
| Reference designators | Which positions on the board this part occupies |
| Quantity per board | How many to buy, and a cross-check against the designator count |
| Manufacturer part number | The authoritative identity of the part |
| Manufacturer | The same MPN can exist at more than one manufacturer |
That is the working minimum. Everything else is verification data.
This surprises people, so it is worth being explicit about why. The manufacturer part number already encodes the value, the tolerance, the voltage rating, the temperature coefficient and the package. A buyer purchases against the MPN, not against a description. Columns for value, tolerance, rating and footprint are extremely useful -- they let us catch the case where the MPN and the description disagree, which is a genuine and frequent error -- but they are cross-checks, not the specification. A BOM that gives a rich parametric description and no MPN cannot be bought from.
Two rules about reference designators cause more back-and-forth than any other part of a BOM:
- Every designator must be unique, across the whole board. Two parts called C14 will stop a kitting list.
- The designator count must equal the quantity, and both must reconcile with the pick-and-place file. If line 12 says quantity 5 and lists four designators, we do not know whether to buy four or five, and we do not know which position is missing. This mismatch between the BOM and the centroid file is one of the most common causes of an assembly hold.
Do-not-place parts
Parts that appear on the schematic but must not be fitted are flagged with one of several interchangeable abbreviations: DNP (do not populate), DNI (do not install), DNS (do not stuff), NF (not fitted) or NL (not loaded). You will find vendors who assert crisp technical distinctions between them. Those distinctions are not standardised and vary by company and by CAD tool, so do not assume the assembler will infer a subtlety from your choice of abbreviation. Define the term on the BOM.
What matters is how it is communicated:
- Keep the line in the BOM. Retain the reference designators and the MPN. Deleting the row destroys the information that the position exists and is deliberately empty.
- Set the quantity to zero and flag the status in a dedicated column.
- Never signal do-not-place with cell colour alone. Colour does not survive a CSV export, and it is invisible to every automated import.
A silently dropped part and a wrongly populated part cost the same amount to fix, and both are avoidable here.
Approved manufacturers and approved suppliers
These are two different lists and the terms get used interchangeably, to everyone's cost:
- AML -- approved manufacturer list. Which manufacturers and which MPNs are approved for a given position. This is about who made the part.
- AVL -- approved vendor list, also called an ASL -- approved supplier list. The two are effectively synonyms. This is about who you may buy it from: the distributor or supplier.
A single AML entry can be sourced through many suppliers on the AVL. When a BOM says "AVL" but means "these manufacturers are approved", a buyer facing an allocation shortage cannot tell whether an alternative manufacturer is permitted or merely an alternative distributor. Say which you mean. If a position has approved alternates, list them explicitly and mark which is primary.
BOM structures
Some of the terms in this area describe genuinely different things and some describe the same thing viewed differently.
Flat and multi-level are representations, not types. A single-level or flat BOM is one list with no hierarchy. A multi-level or indented BOM shows sub-assemblies as parents with their children indented beneath them. They can describe the same product; one is easier to read when the product has real sub-assembly structure.
Modular and configurable are real structural types. A modular BOM groups reusable modules for platform products. A configurable or variant BOM carries selectable options that resolve to a specific build, which avoids maintaining a separate BOM per variant.
EBOM and MBOM are different documents for different audiences. The engineering BOM describes the product as designed, straight out of the EDA tool, organised functionally. The manufacturing BOM describes the product as built: it adds solder, adhesive, labels, packaging and consumables, and it is structured by assembly sequence and workstation. EBOM to MBOM is a transformation performed after the EBOM is frozen, not a rename.
"SBOM" means two entirely different things and this is the most dangerous ambiguity in the vocabulary. In classic PLM usage, alongside EBOM and MBOM, an SBOM is a service BOM: the parts needed to maintain and repair the product in the field. In security and compliance usage it is a software bill of materials: a machine-readable inventory of software components and dependencies, formalised by CISA and NTIA and exchanged as SPDX or CycloneDX. If your organisation uses the acronym, state which one you mean the first time it appears in a document.
Standards and exchange formats
BOM exchange is standardised, which is not widely known:
- IPC-2578 -- Sectional Requirements for Supply Chain Communication of Bill of Material and Product Design Configuration Data (PDX). This is the dedicated standard for exchanging BOM, AML and ASL data between an OEM and a contract manufacturer, including component data and change history. It sits in the IPC-2570 (PDX) series alongside IPC-2571, which defines the generic container.
- IPC-2581, also called DPMX -- an open, single-file XML format carrying fabrication, assembly and test data: stack-up, impedance, netlist and BOM. Its parts-list section is defined by IPC-2588.
- ODB++ -- the competing intelligent data format, originated by Valor and now owned by Siemens.
- IPC-1752A, with IPC-1751A providing its header schema -- materials and substance declarations for RoHS, REACH and similar regimes.
IPC revision letters change. Confirm the current edition before citing one in a contract.
Change control
The draft BOM you send us and the BOM we build from must be the same document. The mechanism for that is revision control, and the vocabulary is more precise than "change order" suggests:
- ECR -- engineering change request. The proposal. Somebody reports a problem or suggests an improvement, and it is circulated for review.
- ECO -- engineering change order. The approved directive. It authorises the change and specifies how to implement it: which drawings, which BOM lines, which parts.
- ECN -- engineering change notice. The communication. It tells purchasing, production, quality and suppliers that the approved change is now in effect.
The flow is ECR, then ECO, then ECN. The failure mode we see most often is an ECO that was approved internally and never reflected in the BOM that reached us, so the board gets built to the previous revision. Give every BOM an unambiguous revision identifier and an effective date, and state the release status.
Lifecycle and compliance data
For anything beyond a prototype, the following are commonly needed and are far cheaper to supply than for us to research line by line:
- RoHS and REACH/SVHC status, declared per IPC-1752A
- Lifecycle status -- active, NRND, last-time-buy, EOL, or obsolete. These are distinct states, not synonyms; see our article on product change notifications
- Lead time, which drives the sourcing and alternate decisions
- MSL, the moisture sensitivity level. Two standards govern this and they are often conflated: J-STD-020 classifies the component at qualification; J-STD-033 governs how it is stored, handled, baked and its floor life managed at the assembler
- Country of origin, for customs and trade-agreement eligibility
- ECCN and HTS/HS codes. These are not interchangeable. The ECCN is an export-control classification; HTS and HS are customs and tariff classifications
Why BOMs delay quotations
In our experience the same handful of issues account for most of the queries we send back:
- Missing or partial MPNs, or a generic description in place of one. We cannot price "10 k resistor 0603".
- Reference designator count that does not match the quantity, or does not reconcile with the pick-and-place file.
- Multiple MPNs crammed into one cell with no indication of which is primary and which is an approved alternate.
- Ambiguous do-not-place status, causing parts to be quoted that should not be bought, or omitted when they should.
- Obsolete, NRND or long-lead parts discovered during BOM scrubbing rather than at design time. A single part at a forty-week lead time sets the schedule for the whole build.
- No approved alternates on high-risk lines, which leaves us nothing to do but stop and ask.
- A revision that does not match the Gerber and pick-and-place data supplied alongside it.
BOM submission checklist
Before you send a BOM, check that:
- Every line carries an accurate manufacturer part number and manufacturer
- Reference designators are unique, and their count matches the quantity on every line
- The designator set reconciles with the pick-and-place / centroid file
- Do-not-place parts are retained as rows, flagged in a status column, with quantity zero
- Approved alternates are listed explicitly, with the primary part identified
- Value, tolerance, rating and package are present as cross-checks against the MPN
- The revision level, release status and effective date are stated
- All approved engineering changes have been applied
- Obsolete and unused components have been removed
- Lifecycle and compliance data is attached where the product requires it
The BOM travels with the rest of the manufacturing data package. For what else we need alongside it, see our design checklist for PCB assembly, and for the practical shortcuts that get a quotation back faster, our tips for a faster PCBA quote.
A complete, current, well-structured BOM is the cheapest quality measure available to an electronics project. It costs an afternoon to get right and it saves weeks. If you would like us to review a BOM before you formally release it, send it over -- we are happy to look.
Sources
- IPC-2578 -- Sectional Requirements for Supply Chain Communication of Bill of Material and Product Design Configuration Data (PDX)
- IPC-2581 (DPMX) and IPC-2588 -- Part List Product Data Description
- IPC-1752A / IPC-1751A -- Materials Declaration Management
- J-STD-020 -- Moisture/Reflow Sensitivity Classification for Nonhermetic Surface Mount Devices
- J-STD-033 -- Handling, Packing, Shipping and Use of Moisture/Reflow Sensitive Surface Mount Devices
- CISA -- Minimum Elements for a Software Bill of Materials; SPDX (ISO/IEC 5962) and CycloneDX (ECMA-424)
