PartsBox User's Guide


What is PartsBox?

PartsBox is an online tool for managing a collection of electronic components. It keeps track of where components are stored, what the current stock levels are, and which components are used in which projects. It displays component specs, allows for attaching documents (datasheets, 3D CAD models) to parts, and searches the entire database quickly.

Ever wondered where that chip was? Ever ordered components only to discover later that you already have them? PartsBox allows you to easily manage parts inventory.

PartsBox can also price projects (BOMs) automatically. It handles price breaks, currency conversions, MOQ and order multiples, so that you can instantly see an always up-to-date BOM pricing. In addition to online offers, your local offers from suppliers can be added, with multiple price breaks, in any currency, and with validity periods (expiration dates), minimum ordering quantity (MOQ) and order multiples.

Design Philosophy

PartsBox was designed to be fast, unobtrusive and easy to use. Searching, navigating around, checking stock, accessing projects — everything happens instantly. Multiple users get instant updates when anything changes.

Unlike many ERP tools, PartsBox is supposed to be easy to introduce and cause as little friction as possible within a company. It is supposed to be a tool that people like to use, not one they are forced to use.



PartsBox is all about electronic components, so a "part" is a fundamental concept. A part represents an electronic or mechanical component.

There are two types of parts: linked and local.

  • Linked Parts are for components with manufacturer part numbers. If it has a part number and you can find it on Octopart, choose this option. You will be sharing data for this component with other PartsBox users. You will also instantly get a better description, a datasheet link, a link to the manufacturer's site, part specifications, a thumbnail image, and a link to the Octopart page with current pricing and ordering information. It is still your part: your stock information is local, as are your notes, and other info, you are just making use of additional online information.
  • Local Parts are for everything else: generic and no-name components, PCBs, custom parts, mechanical parts, and anything that does not have an exact part number. Data about local parts is not shared in any way, they exist only within your collection.

Note that for generic and no-name components (e.g. a no-name NE555 in a DIP package) it's usually better to use local parts. There are hundreds of versions of the NE555 and your particular version might be slightly different from someone else's. So use linked parts only for exactly matching components (for example if you have a "NE555PWG4" from Texas Instruments, link it).

Parts are abstract: they describe the component, but until you add actual stock, they don't represent physical things. Even parts without stock are useful — for example, you can add them to projects (BOMs) in order to get pricing for your projects.

Linked parts have two names: the local (internal) name and the official MPN (Manufacturer Part Number). In the free hobbyist plan, the local name must be the same as the MPN. In commercial plans, both names can be used and the local name can be different from the MPN. Local name can be changed by renaming the part.

Apart from standard attributes like a name or manufacturer, parts can also have custom fields/attributes. Like the "Notes" field, these can be used to store any data, but in a more structured manner. Some usage examples include: Distributor, Distributor Part Number, Supplier Part URL, Weight or Container Tare Weight. Custom fields are indexed for searching.


Once you have created a part, you can add stock. Stock represents actual physical copies of an electronic component which exist somewhere you can reach.

A part can contain stock in multiple locations. This becomes useful once you start buying reels of components: you often want to keep a full reel in one location, and a small amount on cut tape in another location. It is also useful as you are working with contract manufacturers, as you can keep track of stock that is physically located outside of your office.

The separation of parts and stock is intentional. You could think of parts as bags that may contain actual components (stock). Parts with zero stock are useful: you know what you need to order, you can keep track of pending orders, your projects (BOMs) may use parts that you don't physically have, but your manufacturer will.

PartsBox considers stock history as permanent and there are limited ways of editing it. The last entry can always be removed, but older entries can't, and their quantities can't be edited.

Storage Locations

A storage location is a place where components can be stored. It can be a room, a drawer, a shelf, a box, a compartment within a box, or anything else you can think of. How you organize your storage is up to you. Some people throw all their parts into two or three boxes, and some use a more fine-grained approach.

You can name your storage locations anything you like, but there is a suggested naming scheme:

Start with a letter. You could use b for boxes (with compartments), but you might also have shelves (with reels), or cabinets with drawers. A two-digit number follows, that is the number of your box, shelf, cabinet or drawer. Then, if the location has sub-compartments, we use a chess-grid system: a1, a2, b1, b2, and so on, depending on the size of the grid. This results in names like "b01-a4", which means "box 1, row a, column 4", or "s12-l1-r2" which is "shelf 12, level 1, reel 2". Use whatever lets you easily find components.

Sample books with resistors or capacitors can be labeled like boxes, with no sub-compartments, because it's easy to find a particular value within a sample book.

Your storage location names can be changed at any time, but choose them carefully, as once you print your labels/stickers, changing them becomes slightly more difficult.

Companies working with CM/EMS (contract manufacturers) often prefix some of their storage locations with the manufacturer's name, so that they can easily filter locations and see what the CM has in stock right now.

CM/EMS companies, on the other hand, often prefix some storage locations with customer names, to get per-customer storage locations for consigned parts.


PartsBox allows attaching arbitrary files to parts. This can be used to keep datasheets, 3D CAD models and other files together with part information.

If you need to store a component-related file, just add it to a part as an attachment. You do not have to worry about naming files, creating directories, and finding the right place on the file server.


A project corresponds to a BOM (Bill of Materials) and represents a list of parts that go into a particular design or device.

Projects can be used either to build actual devices, or as a concept, drafting or pricing tool, when working on new designs.


Offers from suppliers/distributors can be attached to parts, to be used when pricing projects that require the part. Offers can have multiple price breaks, as well as validity periods (expiration dates), minimum ordering quantity (MOQ) and order multiples.


Reports allow you to get overview information about your data.

Like everything else in PartsBox, reports update in real-time. As an example, if you keep a "Low Stock" report open, and somebody else removes stock (which will cause the stock for a particular component to go below a threshold), your report will be instantly updated.


A company/organization allows multiple people to share a single database. Every change is reflected in real-time to everyone who is logged in.

A company always has at least one "admin" user, who can modify the billing information and grant or revoke access to other users. Access can be granted with several levels:

  • Admin: full access, can read/write database data, grant access to other users, change billing information, delete all data, or cancel subscription.
  • Read/Write: can read/write database data, but not manage users, billing information or subscription.
  • Read Only: can only access database data, not modify it.

The number of users that can access a company database depends on the particular plan.

To grant someone access to a company database, that person must first create a PartsBox account.

In addition to the company database, every PartsBox user has a free private database. You can switch between the databases you have access to by using the menu at the top of the app screen (it shows the current database name).

Part Attrition

SMT pick&place machines are not perfect, and during the assembly process some parts will get lost or rejected. Additionally, the mechanical construction of the tape feeders requires a certain length of tape (the "leader") to be present before parts can be picked up automatically. This results in part attrition, also known as part wastage.

PartsBox supports setting attrition parameters on a per-part basis.

Using PartsBox

Adding Storage Locations

To create a new storage location, go into the Storage section in the main menu and click on "Create".

After creating a storage location, the dialog window will remain open and text will not be deleted. This is intentional: when creating multiple storage locations (e.g. from "shelf01-box01" to "shelf01-box20", this can be used to quickly modify the last used name to create a new location.

Adding Parts

In order to add parts to PartsBox, you first create a part, and then add stock to it. Until you add stock, parts don't represent physical things, but can still be useful — for example, you can add them to projects (BOMs) in order to get pricing for your projects.

Creating Parts

Adding a new part is done from the Parts section in the main menu. Use "Create" to go into the create part dialog.

"Part Type" determines what kind of part will get created. Use "Linked part" for components with a unique MPN, and "Local part" for generic components and anything else that you need to keep track of.

Creating Linked Parts

Commercial users can immediately assign a local (internal/company) part number to a linked part.

There are two ways to search for linked parts:

  • Match exact component name (MPN): beginning of the part name has to match (prefix search). E.g. "TPS40210" will match "TPS40210DGQ". This is the preferred way of matching components.
  • Search: this is a fuzzy search, good for things like "adafruit 1063".

After filling out one of the boxes and clicking either "Match" or "Search", results are presented. You should choose the part that matches exactly what you need. Please be careful, as often small variations in naming can mean large differences in actual components. When you select one of the results, its specs are shown, there is also a datasheet link next to every component, if a datasheet is available.

Creating Local Parts

When creating local parts, you only need to provide the part name, everything else is optional.

Some plans allow for uploading datasheets, images, CAD models and other information and attaching it to parts; this is done after the part is created.

Creating Parts Using a Barcode Scanner

If you have a barcode scanner, you can use it to quickly process incoming shipments, adding stock and creating parts if necessary.

Barcode scanners that generate keystrokes are supported (that includes most, if not all, USB scanners). The Zebra LS2208 is an example of a 1D scanner that is inexpensive, reliable, and works well.

For scanning 2D barcodes, in addition to having a 2D scanner, you also have to configure it to replace special non-printable characters with ASCII sequences, so that it can work through a browser app. In particular, ASCII codes RS, GS and EOT need to be replaced with strings "{RS}", "{GS}" and "{EOT}", respectively. Fortunately, there is an easy way: if you have a Zebra DS2208 scanner, just scan the provided barcode and the scanner will be configured properly for PartsBox. The barcode can be downloaded as a small PNG, large PNG or a PDF page.

To use a scanner, use the "Scan" menu button instead of the usual "Create" (or "Add Stock"). PartsBox will then wait for input from the scanner. After receiving a code, it will be decoded and one of two things will happen:

  • either you already have the part in your database, in which case the "Add Stock" dialog will be shown,
  • if the part doesn't exist, you will be asked to choose it from matching online parts. Once it gets created, you will be presented with the "Add Stock" dialog.

PartsBox supports the following barcodes:

  • 1D barcodes from Digi-Key, Mouser, Farnell, RS Components, and most others that encode the MPN (Manufacturer Part Number) in the barcode,
  • 2D barcodes: DataMatrix and PDF417 containing ANSI MH10.8.2 data encoded using ISO/IEC 15434:2006 (Digi-Key, Wuerth).

If quantity is encoded in the bar code, it will be prefilled in the "Add Stock" dialog.

If you haven't bought a scanner yet, PartsBox recommends a 2D scanner, in particular the Zebra DS2208. More and more distributors will be migrating to 2D barcodes, which can store significantly more information. And a 2D scanner can also decode 1D barcodes as well.


The search box appears at the top in Parts and Storage sections. It lets you narrow down the list of displayed parts or storage locations and is an essential tool when working with PartsBox.

Search in Parts is significantly more complex than in Storage. This is because one usually has a small number of storage locations and simple filtering is all that is needed. For parts, however, a full search engine is necessary.

Parts search has a fuzzy-match engine, which means that even things that don't match exactly will be shown in the results. Exact results will be separated from the rest using background color, so that you can quickly see what matched exactly and what matched only partially.

The following fields are searchable: name, MPN (Manufacturer Part Number, if different), description, footprint, part notes, and all custom fields.

The search box also accepts tags, entered with a # character in front. Tags are matched exactly, and if you enter several tags, a component has to have all of them in order to make it into results.

You can combine tags and search words as needed, to narrow down the list of results.

Selecting and Deselecting Parts

Every part has a checkbox next to its name, allowing it to be selected for certain operations. PartsBox remembers selections, so you can mix selecting and searching freely — select several parts, perform a search, select some more, and your selection will steadily grow.

To select all parts, or deselect everything, use the "Selection" menu and the "Select All" or "Deselect All" menu options.

The "Selection" menu can be used for a number of operations:

  • "Add to project…" — use this to add parts to a Project (BOM).
  • "Add/remove tags…" — use this to edit tags on selected parts.
  • "Set low-stock levels…" — allows you to set the low-stock level for all selected parts.
  • "Set part attrition…" — use to set part attrition parameters.
  • "Download as CSV" — allows you to download the list of selected parts as a table in CSV format for importing into a spreadsheet.
  • "Delete…" — deletes the selected parts.
    • "Select all" — selects all parts in the database.
  • "Deselect all" — clears the current selection without performing any operations on the selected parts.

Adding Parts to a Project

There are two ways to add parts to a project:

  • By selecting a number of parts in the parts table and choosing "Add to project…" from the "Selection" menu. This can be used to add either a single part or multiple parts.
  • By clicking the "Add to project" button from the "Part Info" screen. This can be used to add that one part.

Using Tags

Tags are a powerful mechanism that allows you to quickly find a subset of your parts.

When searching, if you enter a tag in the search box, the search will be limited to parts having that tag. Tags are matched exactly, and if you enter several tags, a component has to have all of them in order to make it into results.

Tags can be added to parts either from the part info screen (by clicking on the "Add Tags" button, or by selecting many parts and using the "Add/Remove Tags…" menu item from the "Selection" menu.

Tags begin with a # character, but you do not have to enter it when adding tags. A part can have any number of tags attached to it.

To make things easier and automate tags creation, PartsBox creates auto-tags for you. These are based on part specifications and are created automatically, so that you do not have to add them. They are independent from your tags: you can assign a tag with the same name again.

Setting Part Attrition Parameters

PartsBox allows for defining attrition/wastage on a per-part basis. There are two parameters:

  • Percentage-based: this number represents the percentage of components that are expected to be lost/wasted. Rates usually vary between 0.1% and 3% for production runs.
  • Quantity-based: the minimum number of extra components that always needs to be reserved, even if percentage-based calculation would indicate otherwise. This is usually related to the length of leader required to feed a reel into a machine.

These parameters can be set either individually, or for many parts at once. To set parameters for a number of parts, select them in the parts table (or use "Selection | Select all parts"), and then use "Set part attrition…" from the "Selection" menu.

When building or pricing Projects/BOMs, PartsBox will take part attrition into account, so that the number of components actually taken from stock or ordered will be higher than what is strictly required.

Building Projects

The "Build it" tab in the project menu lets you plan production and automatically remove stock for all parts used in a certain Project/BOM.

The table lists all parts with the necessary quantities, showing also the number of parts on hand (current stock). Storage location for each part is shown, and if a part exists in multiple storage locations, you can choose the location you will first use when building this project.

In plans that support part attrition calculations, the necessary quantity will include the attrition overhead, calculated separately for each part based on part attrition settings.

You can set the planned quantity by either entering the number or using the +/- buttons. As you adjust the quantity, you will notice that everything is instantly updated. If there is not enough stock of a component, that part will be listed in red with a warning sign.

Each row also contains two checkboxes:

  • Ignore? — this checkbox appears if there isn't enough stock for a part and lets you simply ignore the problem. When building, PartsBox will still remove the maximum available quantity from your stock (thus setting it to 0), but will not do anything about the missing stock. This is sometimes useful if you know you have additional stock on hand that has not been entered into PartsBox, or if you want to produce some boards that are not fully populated.
  • Exclude? — checking this box will exclude the part from the build. This is essentially equivalent to a DNP (Do Not Populate). No stock will be removed for parts marked as Excluded.

For the "Build it!" button to become enabled, you have to resolve all warnings, either by ignoring them or by excluding the missing parts from the build.

Once you press the "Build it!" button (and confirm), stock will be removed for all parts that belong to this project (that have not been excluded from the build). For parts where quantity needed exceeds available stock and the problem has been marked to be Ignored, maximum available quantity will be removed from stock (thus setting the available stock in that storage location to 0).

Pricing Projects

To estimate the BOM price for a project, go to the "Price it" tab in the project menu. This opens the main pricing table, as well as filtering and pricing options.

Pricing Options

Build/batch size is the number of units that you want to estimate pricing for. Several common quantites are provided for quick access, but any quantity can be entered in the input box.

Total per-unit price and total price are displayed in large type on the right side. The unroll button next to them allows for quickly comparing pricing for the whole range of common build quantities, without entering them manually.

If there is a red exclamation mark warning sign next to per-unit and total price, it means that PartsBox was unable to calculate the pricing, because some information was missing. The problematic parts are highlighted in red in the pricing table below.

Part sourcing options allow for choosing where the parts come from. "Only local stock" will only consider the parts you already have, using their average purchase price for BOM pricing. "Only buy" will ignore local stock and only use online prices and stock information. "Use local stock, then buy" will first use up all local stock, and then if it isn't enough, consider online offers.

Note that if your stock history does not contain prices, you will not get correct pricing information if you try to use local stock in Project/BOM pricing. You can always go back and edit the stock history in order to add prices.

Offer filtering options allow narrowing down the list of offers:

  • "Preferred distributors only" checkbox will exclude offers from distributors that are not on your preferred list (one rarely buys from distributors on the other side of the globe). You can modify the list of preferred distributors in Settings.
  • "Authorized distributors only" will only consider offers from distributors who are authorized by the manufacturer to resell a part.
  • "In-stock only" will only consider offers where the distributor said the part is in stock.
  • "Check stock levels" goes a level deeper, and actually checks the number of parts that the distributor has in stock. Some distributors do not provide exact in-stock information, so checking this will exclude their offers.

Pricing Table

The main pricing table lists all the parts from a project along with their pricing information. Columns of note:

  • Batch Qty: the number of parts needed to build a given quantity of a Project/BOM. This takes part attrition parameters into account, so the number could be higher than the number of units you're building, depending on attrition settings for this particular part.
  • Qty Bought: the quantity that actually needs to be purchased, given the sourcing options above. As an example, if 100 parts are needed, but you have 25 available locally and you chose "Use local stock, then buy if needed", then Qty Bought will be 75.
  • Best Offer: the best offer that PartsBox selected for you.

It is possible to "lock" a particular offer by using the padlock icon. This locks the offer selection for this project entry, and that particular offer will be used to calculate BOM price.

Every row in the pricing table has an "exclude" checkbox, which allows for quickly excluding that item from pricing, and a padlock icon, which locks the currently selected best offer in place.

Every row in the table can be unrolled using the chevron icon on the left side. This lists all the offers for a given part.

Offer Selection

For every BOM entry that is linked to an online identity (Manufacturer Part Number), PartsBox gathers online offers, and selects the best (least expensive) one. There are often as many as 20-40 offers for any given part. In the main BOM pricing table, only the best offer is displayed.

The selection process is quite involved, as it has to handle:

  • price breaks, which can be different for every offer,
  • availability and stock information,
  • Minimum Order Quantities (MOQs),
  • order multiples,
  • multiple currencies.

PartsBox normally selects the best offer based on "Price Discarding Excess". That is the price paid for parts, assuming that any excess inventory that has been purchased will be thrown away. Why not just use the price from price breaks? Well, in case of restrictions such as MOQ or order-multiple, we do not want to discard offers just because the quantity we need is too small. It is sometimes better to buy more, because of price breaks: the price might be competitive even assuming we will discard anything we don't need. This is why quantities are rounded to order multiple, and if the quantity is below MOQ, PartsBox will round it up to MOQ, just to see how the offer ranks.

The ranking of offers changes based on your build quantity, and so does the best offer. One can often discover new, unexpected sources of parts that become attractive at certain quantities.

Every offer can be unrolled to show details like packaging, quantity on order, on order estimated time of arrival (ETA), factory lead time and factory order multiple.

Local offers

While some components are bought from major distributors, one often deals with other suppliers, or gets custom offers for specific quantities, with discounts. This is why PartsBox allows for entering your own offers, which are then considered and ranked together with online offers.

A local offer can be added either from within the project pricing table, or directly to a part from the part info screen. Like every offer, it can have multiple price breaks at any quantities, as well as a minimum quantity (MOQ) and order multiple. These parameters will be used by the pricing algorithm.

Apart from additional info fields like order reference/number, date or comments, an expiration date can also be entered. An offer will not be considered if it has expired.

Any supported currency can be used in an offer. PartsBox will take care of converting it to your display currency everywhere using up-to-date conversion rates, while keeping the original prices and currency intact.

Currency Handling

PartsBox takes care of multiple currencies for you. Just select your preferred currency in the settings, and it will be used to display every price. You can change the currency at any time.

European Central Bank (ECB) rates are used for currency conversion. The rates are updated regularly.

For offers which you entered yourself, you can pick any supported currency, and it will be handled correctly.