Chris Collins

Tools · electronics

KiCad BOM rollup

Turn a KiCad schematic (.kicad_sch with its sub-sheets), XML netlist or BOM CSV into a rollup for N boards: grouped by value and footprint or MPN, plus attrition and spares, checked against your Parts inventory stock, priced at Digi-Key with price breaks, and exported as a Digi-Key order CSV.

Added

Works with

How to use it

How to use it

  1. Open the schematic. Choose the root .kicad_sch and its sub-sheet files together, because a sheet used twice gives both sets of references. You can also open KiCad’s XML (kicad-cli sch export netlist --format kicadxml, or the file Eeschema hands to BOM plugins) or a BOM CSV (kicad-cli sch export bom, the legacy bom_csv_grouped_by_value plugin, or a spreadsheet with Reference, Value, Footprint and MPN-like columns). Power symbols, parts excluded from the BOM and the extra units of multi-unit parts are skipped. DNP parts are kept on their own lines and need nothing. The file stays in this browser.

  2. Group by value + footprint (KiCad’s usual grouping; 10k, 10K and 10000 group together for resistors, capacitors and inductors), by MPN, or by all three. A line that mixes different MPNs is flagged. Grouping applies when you open a schematic or XML. A CSV keeps the grouping it was exported with. kicad-cli’s grouped CSV puts DNP and fitted parts on one line, so open the schematic itself to keep them apart.

  3. Set the number of boards, the attrition (extra % for loss in the pick-and-place or on the bench, rounded up per line) and spares per line. Need = quantity per board × boards × (1 + attrition)
    spares, as Parts inventory’s build planner calculates it.

  4. Use my Parts inventory stock reads the Parts inventory in this browser (read-only). It matches parts by Digi-Key part number, MPN, or for passives by value and package and any tolerance, voltage or dielectric the line asks for, and stock used by one line is not counted twice. Each line shows what it matched.

  5. Digi-Key prices: Look up prices and stock asks Digi-Key’s Product Information API for every short line with a Digi-Key part number or an MPN, using Parts inventory’s client. It uses the first keys available:

    • the keys stored in the gitwebsite app (pair with ⚡ in the header; lookups go through the app’s relay and the page never sees the keys);

    • the keys Parts inventory remembers on this device;

    • keys you type here, kept in memory for this visit.

      Answers are cached for a week and shared with Parts inventory. Each line gets the quantity to buy with the price break applied. With buy up to a cheaper price break ticked, buying 100 can be cheaper than 22; minimum order quantities and Digi-Key’s stock are noted.

  6. Export: a Digi-Key order CSV for Digi-Key’s BOM Manager (quantity, Digi-Key part number, MPN, manufacturer, customer reference, designators), the whole rollup CSV (every line with need, stock, short, buy and prices), or copy the quick-add list for Digi-Key’s bulk add box.

Share links carry the boards, attrition, spares and grouping, never the BOM, the stock or any key. Load the sample board to try it without a file.

To build from stock and reserve or consume parts, import the same BOM as a project in Parts inventory. This tool only reads the inventory.

Limits

  • Pricing is Digi-Key only, at the site and currency set in Parts inventory (Data & APIs). Mouser, LCSC and Nexar are in Parts inventory.

  • Lines without an MPN or Digi-Key part number (most generic passives) are not looked up. Add an MPN or Digikey field to the symbols in KiCad.

  • Part numbers Digi-Key does not know show as errors. The API counts against your daily limit (1000 requests).

  • Variant and assembly-option handling (KiCad 9 design variants) is not modelled. DNP is per part.

  • Reading a schematic needs it to be annotated (no R?).

Linking to an example

Share link copies a URL with the build settings (never the BOM).

Parameter Meaning

boards

Boards to build

att

Attrition, %

extra

Spares per line

group

vf value + footprint, mpn MPN, vfm all three

stock

true / false: use the Parts inventory stock

example

A preset (below)

Runs entirely in your browser — network requests go only to the services named on this page.