PartsBox User's Guide


What is PartsBox?

PartsBox is an online tool for managing inventory, production and purchasing 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.

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.

PartsBox also manages building electronics: projects (BOMs) can be built, subtracting used stock and adding stock to the resulting sub-assembly part. Builds can be performed in a single stage or in multiple stages, and a full history of builds is being kept.

The application is capable of lot control: it is possible to track where specific batches of parts came from and where they were used, providing full two-way traceability.

Design Philosophy

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

Unlike many ERP/MRP 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 several types of parts:

  • Linked Parts are for components with manufacturer part numbers. If it has an MPN and you can find it online, choose this option. You will instantly get a description, a datasheet link, a link to the manufacturer's site, part specifications, a thumbnail image, and PartsBox will be able to get pricing and availability information about this part from distributors.
  • 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.
    • Meta-parts group parts that are interchangeable (exact substitutes for one another).
  • Sub-assembly parts are the result of building a project and correspond 1:1 to projects.

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.

Meta-parts are used to group together parts that are interchangeable. This is useful for passives, where several part alternates can be added, or for any case where several parts are equivalent and any of them can be chosen, based solely on price and availability. PartsBox will handle meta-parts similarly to normal parts, delaying the choice of actual part to be used. When pricing projects, offers for all member parts will be considered.

Sub-assembly parts represent the results of building your projects. Whenever you build a project, stock gets added to the corresponding sub-assembly part. The part can then be used in other projects, if needed. This provides a way to build complex products that consist of a number of sub-assemblies and parts, each produced or sourced separately.

Apart from standard attributes like a name or manufacturer, parts can also have custom fields/attributes (in plans that support this feature). 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 (or will be able to 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.


A lot represents a batch of parts. Lots are used to distinguish between parts in stock: without lot control, all stock for a given part is considered to be identical.

With lot control, lots are created when adding stock (every batch of parts needs to have a lot assigned).


Orders can be in one of three states: Open, Ordered or Received. Open orders can be modified. Ordered means that you are waiting for parts to be shipped. An order switches to the Received state when all parts have been received.

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.


A build represents the result of building a project. It normally corresponds to a batch of devices that have been manufactured, or are being manufactured. PartsBox supports single-stage and multi-stage builds, and a multi-stage build can be in-progress (not completed yet).


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.

Purchase Lists

A purchase list combines parts from one or more projects (BOMs) that you intend to build, with specified build quantities. You create a purchase list by adding projects to a shopping cart. PartsBox then merges the lists of parts from your projects to create a single unified list that can be used for ordering.


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. The number of users that can access a company database depends on the plan, and it is possible to increase the number of users that have access.

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).

Access Rights

A company always has at least one 'admin' user, who can modify the billing information and grant or revoke access to other users. In plans without Role-Based Access Control, access can be granted with three basic 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.

In plans with Role-Based Access Control, any number of roles can be defined and assigned to users. Every role defines permissions for each individual operation (like 'create part' or 'add stock'). This allows fine-grained control over permissions and defining limited roles with restricted access. As an example, a 'Receiving' role could allow the user to add stock and move stock, but not modify projects or perform builds. A 'Production' role could be useful to only allow performing builds from projects defined by somebody else within the company.

Audit Trail

In larger organizations it is often necessary to keep an immutable audit trail of all modifications to the database. This is often required for regulatory reasons (such as in the case of US FDA Title 21 CFR Part 11 Compliance), but even without it being required by law, many companies decide to keep one for traceability and accountability.

In plans with the Audit Trail feature, PartsBox keeps a history of every modification done to the database. Every audit trail record stores a timestamp, the user that performed the operation, and additional data that can be used to understand what exactly was changed. Audit trail data can be exported, signed and used for regulatory compliance.

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.


When building electronics, a part often has possible substitutes: functionally equivalent parts that can be used instead. There are several ways to define substitutes in PartsBox, with different semantics.

  • Meta-parts are a way to group several substitutes (member parts) together, under a single name. That name can then be used in Projects/BOMs. Meta-parts are logical groupings: you can see the aggregate stock for all the parts in a meta-part, and you can get low-stock alerts for meta-parts.
  • Part substitutes are a way to indicate that a different part can be substituted for this one. They do not provide any stock grouping: stock for every part is still managed independently.
  • BOM substitutes indicate that a different part can be used specifically for a single Project/BOM entry.

When building or purchasing, PartsBox combines information about all the above kinds of substitutes to produce a list of all possible substitutes for a given BOM entry or a purchase list entry.

Let's look at some example of how these functionalities could be used and where they make sense:

  • Parts like 'TPS61161DRVR' and 'TPS61161DRVT', which are the same part, just in different packaging, are often best handled as a meta-part called 'TPS61161DRV'. That name can then be used in BOMs. This is a good approach for fully equivalent parts where you really don't care about which one gets used, and where you want to manage their inventory as if they were a single part. The 'TPS61161DRVR' meta-part will then show aggregated inventory for both parts.
  • For parts like passives, there are often functional equivalents (substitutes), for which you do not want to manage stock together. You just want to indicate that another part can be substituted for this one in every Project/BOM entry and every purchase list entry, globally. Part substitutes are a good tool for that.
  • Sometimes a part can be substituted for a specific BOM entry in a project, but not necessarily anywhere else. That's what BOM substitutes are for.

Using PartsBox

Adding Storage Locations

To create a new storage location, go into the Storage section in the main menu and click on 'Create'. There are three ways to create storage locations:

  • Single location: used to create just a single storage location with a specific name.
  • Row: used to create a linear row (array) of storage locations, labeled with numbers or letters (example: 'box1, box2, box3, box4, box5').
  • Grid: used to create a grid (two-dimensional array) of storage locations, using letters or numbers for rows and columns (example: 'box1-a1, box1-a2, box1-b1, box1-b2').

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. Use 'Meta part' when you need to create a virtual part that represents several equivalent part options (subsitutes).

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 Meta Parts

To create a meta part, provide a name and optionally a footprint and a description. The created meta part will be empty: it will not contain any member parts (substitutes). These will need to be added using either the 'Add part' button on the meta-part info screen, or by selecting several parts in the main parts table and using 'Selected | Add to meta-part'.


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

Search/filtering boxes also appear in many other places (in almost all tables) and can be used for filtering. These boxes are simpler than the main parts search engine and only provide exact matching.

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.
  • 'Add to meta-part…' — use it to add part alternates to a meta-part.
  • '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.
  • 'Deselect all' — clears the current selection without performing any operations on the selected parts.

Using a Barcode Scanner

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

To use a scanner, use the 'Scan' menu button. PartsBox will then show an image from your computer's camera or wait for input from an external scanner. After decoding a barcode, it will be analyzed and one of the following will happen:

  • if you already have the part in your database, you will be able to either add stock or remove stock for the part,
  • 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:

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

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

See the 'Barcode Scanners' section in this manual for more details on supported scanners and required setup.

Adding Parts to a Project

There are multiple 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.
  • By using the 'Add part' button in the project BOM section.

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.

Attrition cannot be set directly for meta-parts. When pricing projects with meta-parts, maximum attrition from all parts that belong to a meta-part will be used. When building projects, attrition will be calculated after the actual source of the parts is selected, e.g. when PartsBox knows the exact part that will be used.

Importing a BOM

PartsBox can import a BOM (Bill of Materials) from a number of CAD/eCAD packages, in CSV or TSV format.

To create a new project by importing an existing BOM, use the 'Import' button in the 'Projects' section. This will prompt for the file to be uploaded. Upload a CSV/TSV file exported from your CAD package.

PartsBox will try to parse your BOM, but most of the time you will need to select an import preset first. Presets are currently defined for:

There is also a 'Custom' setting which allows for manual mapping of CSV columns to PartsBox fields, as well as for setting the field separator.

Importing from KiCad is free for everyone, while all the other presets are available in commercial plans only.

Select the preset corresponding to your CAD package, or use the 'Custom' setting to manually map columns.

After importing a BOM into PartsBox, each line has to be matched to a specific part. If the BOM part name is the same as a PartsBox part name, this will be done automatically. However, if a part with the same name can't be found, you will need to do the matching yourself. You can either select an existing PartsBox part, or create a new one and match it to the BOM entry.

In PartsBox, BOM entries are not limited to parts. You can add services or labor, like PCB assembly, testing, or packaging. These can have offers attached just like parts, which allows for pricing of the entire production, not just the parts. Offers for service/labor BOM entries are similar to part offers: they also support multiple price breaks, MOQs, can have expiration dates, and can be in any supported currency.

Altium Designer CSV Problems

Altium Designer does not properly escape double quotes (') in generated CSV files. This means that if one of your fields contains a double-quote character (as in for example 0.156'), the generated CSV will be invalid and unreadable.

The workaround in that case is to manually edit the CSV file generated by Altium and either remove the double quotes inside fields, or prefix them with an additional double quote character.

BOM Substitutes

When editing a BOM, it is possible to add part substitutes for individual BOM entries. When building, pricing or purchasing, the main part as well as all substitutes are treated as equally valid choices.

BOM substitutes are similar to member parts (substitutes) in meta-parts and substitutes for parts. The main difference is that BOM substitutes are configured on a per-entry basis in a specific project and have no effect outside of that entry.

When combining BOMs for purchasing, PartsBox takes a conservative approach to substitutes. If there are two entries for the same part, but with different sets of substitutes, only the intersection of substitutes (e.g. substitutes that are common for both entries) will get used in the purchase list. Taking an example: if there is a BOM with Part A that has substitutes B and C, and a different BOM with Part A that has substitutes B and D, PartsBox cannot assume that Part A can always be substituted with B, C or D. PartsBox can only be certain that Part A can be substituted with B.

Pricing Projects

To estimate the BOM price for a project, go to the 'Pricing' 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 quantities 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 are 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.

If your project contains meta-parts, offers will be gathered for all parts that are grouped in the meta-part. As these parts are considered equivalent to one another, all the offers will be mixed together and the best one selected.

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.

Building Projects

Builds are used to plan and track production. You can check if you have sufficient quantities of parts for building (including attrition), prepare your build, produce a pick list, and then remove the quantities used from your stock.

Additionally, builds provide traceability: their history shows which specific parts were used in which build, to various levels of detail depending on the subscription plan.

Within a project, the 'Builds' tab can be used to access past build history, a list of multi-stage builds that are in progress and to start a new build.

When starting a build, the build table lists all project parts along with required and available quantities. In plans that support part attrition calculations, the necessary quantity will include the attrition overhead, calculated individually for each part based on part attrition settings.

The 'Stock requests' column shows where parts will be taken from. For parts stored in multiple storage locations, parts with lot control and for meta-parts this column might show multiple sources.

You can set the planned build 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 row will be listed in red with a warning.

When assigning parts to BOM entries, PartsBox uses one of several strategies:

  • FIFO (First-In First-Out): the oldest lots (sorted by acquisition date) are used first
  • LIFO (Last-In First-Out): the most recent lots (sorted by acquisition date) are used first
  • Last accessed: the most recent lots (sorted by last-accessed date) are used first
  • Largest lot first: lots with most components are used first
  • Smallest lot first: smallest lots are used first

You can also force PartsBox to use only a single part source for each BOM entry. Some plans are limited to a single source only, and in other plans it is sometimes useful to limit sources to ensure full traceability.

All assignments resulting from the selected default part source selection strategy can be changed in the table. Each row can be unrolled to show sources, select them individually, and reorder them (subject to plan limitations). It is also possible to override the quantity used on a per-entry basis.

Every row also contains an 'Exclude?' checkbox — checking it 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.

If there is not enough stock for some BOM entries, PartsBox will display a warning, but will still let you ignore the problem and proceed with the build. 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. Maximum available quantity will be removed from your stock.

Single-stage builds

In single-stage builds, once you press the 'Build & remove stock' button (and confirm), stock will be removed for all parts that belong to this project (that have not been excluded). The build will be marked as completed.

Multi-stage builds

If you select the 'multi-stage build' checkbox, PartsBox will show selection checkboxes next to each part in the build. You can use the individual boxes to select rows, select and deselect all rows, as well as use the search/filtering interface to mark parts that are to be built/placed in this stage. The filtering interface supports tags, so entering '#smd' is a quick way to select all SMD elements, which are often placed first.

Once you press the 'Build & remove stock' button, only the selected entries will be processed (in the same way as in single-stage builds).

It is sometimes useful to perform a build stage without selecting any parts — for example, to document a processing step in the build history.

A multi-stage build that has not been completed will show up in the 'In-progress' tab of the Builds interface. If you select it, you will be able to build the next stage, or finish the build, marking it as complete.

There can be any number of stages in a build. A build can also be marked as finished even if not all parts have been placed. In that case, unused entries will be marked as excluded in this build.

A multi-stage build is represented by the same ID Anything™ code, regardless the stage it is in (build progress), so that ID Anything™ labels can be attached even to incomplete devices. This allows for quick identification and access to information about builds that are in progress.

Build Configuration History

When you manage production, you typically want to keep track of build history. This normally includes information about how many units of a project/BOM were built, the build date/time, and comments. While this is enough for simple production, it doesn't cover the needs of more complex builds.

In practical scenarios, each build has its configuration. This includes additional information such as:

  • which components were excluded ('do not populate') from the build
  • stock requests generated from this build: which parts from which loactions were used, or when using lot tracking, which exact lot (with serial number) was used for this production run

All of this information is stored as build history, so that you can go back anytime and check how a particular build was configured.

Build configuration history is available in the 'Builds' tab in the Projects section. You can see the list of all builds, or limit the list to completed builds or to multi-stage builds that are still in progress.

Each build has an ID Anything™ code which can be printed on a label and attached to physical devices. This code allows quick access to build information any time in the future.

Using Sub-assembly Parts

Sub-assembly parts represent the results of building your projects. Whenever you build a project, stock gets added to the corresponding sub-assembly part. The part can then be used in other projects, if needed. This provides a way to build complex products that consist of a number of sub-assemblies and parts, each produced or sourced separately.

To create a sub-assembly part for a given project, go to the project info screen and click the 'Create Sub-assembly Part' button. This only needs to be done once. Once the part gets created, it will be visible in your parts list and you can manage it just like any other part, with the exception of renaming: a sub-assembly part always has the same name as the project that it corresponds to.

When building a project, your build confirmation screen will ask you whether to add stock to the associated sub-assembly part. If you enable this option, you will be able to choose which storage location will be used for the build, enter pricing for the produced sub-assembly (automated pricing will be coming in the future), and add comments.

Stock will then be added to the sub-assembly part for this project. Since the sub-assembly part is just like any other part, you can use it in other projects/builds, set low-stock warnings, attrition parameters, etc.

When using lot control, every build of a projects results in a distinct lot of a sub-assembly part with its own ID Anything™ code. If you attach ID Anything™ labels to manufactured devices, this lets you quickly scan the code on any mobile device and access corresponding build information.

Serial numbers

When building projects/BOMs, there are options for adding stock to the sub-assembly part associated to the project. An additional option called 'Track each resulting sub-assembly separately?' changes the build process so that individual lots are generated for each sub-assembly built. In other words, every device built is in its own, single-unit lot.

This provides incredible flexibility: lots already carry a lot of data and have unique ID Anything™ codes. Additional data can also be attached to lots as files. This can be anything: test results, repair protocols, regulatory filings, service history, or anything else that is necessary for tracking the lifecycle of an individual device.

Every lot has a uniquely generated ID Anything™ code that can be printed as a QR-code and attached to the device. Alternatively, devices can be identified by the build ID Anything™ code (pointing to a build) and an integer serial number auto-assigned within that build.

If the option to add sub-assembly part stock is enabled when starting a multi-stage build, PartsBox will keep track of stock that is in production. Information about possible abnormalities in production or test results can then be attached to each device lot individually, as the devices are being built. Completing the build changes the stock status from 'In Production' to 'Available'.



There are three kinds of orders:

  • Open: these can be modified. You can add parts, delete parts, or change quantities in an open order.
  • Ordered: the order has been placed with a distributor and there is an expected delivery date.
  • Received: everything from the order has been received.

To add something to an order, or to create an order, begin with either pricing (a list of offers) for a single part, or with a Purchase List. You can add any offer (or a group of offers) to an order with a vendor who provided the offer.

When modifying quantities in an open order, PartsBox will get the current pricing and adjust the price according to the quantity and price breaks.

Open orders can be copy/pasted into a distributor web site, or exported in case a more formal printed purchase order is required.

The best way to place an order with a vendor is to use the 'Upload cart' method and copy/paste or upload a CSV file with order information.

When you mark an open order as 'Ordered', PartsBox asks you for an expected delivery date. This is so that you know when your parts are supposed to arrive and so that ordered stock can be shown in various places in the application.

You can cancel an open order, which will switch it back to being 'Open' and stop displaying stock as being expected.

It is possible to receive parts from an order in several ways:

  • By using the order receiving interface: this lets you receive all (or some) parts from an order into a single storage location with just a couple of clicks.
  • By using the Add Stock dialog in a single part: this lets you receive against an order, pre-filling the quantity and price.
  • By scanning a barcode. Depending on how modern the distributor is, this will either show an add stock dialog, pre-fill the dialog with quantity, or (in case of barcodes that incorporate the PartsBox code) directly receive the part against a specific order, filling in quantity, pricing and order information.

Purchase Lists

When buying parts, it is frequently necessary to plan for production of several devices. Since their BOMs often share parts, it isn't always easy to determine what actually needs to be purchased, especially given that you might already have some of the parts in your local stock.

Meta-parts (part alternates) make this even more complicated: until the moment of ordering you want to be flexible as to the choice of a specific MPN (Manufacturer Part Number).

To begin purchasing, go to your 'Projects' section and start adding projects/BOMs to your project shopping cart by using the 'Add to Cart' buttons at the bottom of every project card. When adding, you will be able to specify the quantities that you intend to build.

After you've added projects to the cart, give a descriptive name to your list and click 'Create Purchase List'. You will be taken to the 'Purchasing' section and shown all your purchase lists.

Clicking on a purchase list brings up the familiar pricing interface: the same as for Project/BOM pricing. Use it to select offers, add your own offers, choose specific part alternates (for meta-parts), or limit selection to your preferred distributors.

After you are satisfied with the list, use the 'Group by Distributor/Vendor' view to see your parts split into orders for each vendor. This view lets you perform the same operations as the 'All Parts' view, so you can still change your offer choices. Additionally, you can quickly add all parts to a new or existing order with that vendor, and place the order with them.

Automatic ordering support was always planned, but remains difficult because of distributors.

Other Equipment and Software

Barcode Scanners

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. However, recently many component distributors began introducing 2D barcodes. In the future, it is likely that most barcodes will be 2D, because of their superiority. 2D barcodes allow for storing significantly more data in a small area.

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.

Supported Scanners

Any 1D scanner should work fine with PartsBox, if it supports the USB HID interface (e.g. it acts as a keyboard). If you can see the output from the scanner in a text editor, it should work fine.

2D scanners known to work well:

2D scanners known NOT to work:

  • Zebra/Symbol DS6608 (discontinued in 2007)

It is not possible to use a 2D scanner unless it can perform string replacements in scanned codes (Zebra/Symbol calls it 'ADF' for 'Advanced Data Formatting' functionality). This is a limitation of web browsers, not of PartsBox.

The best option for scanning barcodes is a dedicated hardware barcode scanner. 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. A 2D scanner can also decode 1D barcodes.

Another (less expensive) scanning option is the Barcode to PC app. This solution consists of two parts: software that needs to be installed on your PC, and a mobile application that does the actual scanning. This solution does not yet work correctly with DataMatrix codes, but this is likely to change in the future.

Known problems and limitations

  • The scanner needs additional setup if you use a non-US keyboard layout. After scanning the setup barcode above, scan the regional code for your keyboard layout from your the manual that came with your scanner.
  • Scanning does not work reliably in Firefox under Windows. Using a different browser (Chrome or Edge) is strongly suggested.


Unfortunately, barcode scanning using a USB scanner cannot be made to work 100% reliably, due to many factors outside of PartsBox's control.

If a 2D scanner does not work with PartsBox, the first step is to check its output in a text editor, such as Notepad. Scan a 2D barcode into Notepad and see if the result contains the '{RS}', '{GS}' and '{EOT}' sequences. If it doesn't, make sure the scanner was set up for these special code replacements, and if you use an international keyboard layout different from US, scan the regional setup code provided in your scanner manual.

Please also read the 'Known problems and limitations' section above, to see if your problem is listed there.

If the output in Notepad looks correct, but PartsBox can't recognize the barcode, please use the feedback form and tell us.

Control your inventory, ordering and production

Try the demo

Plans & pricing