MHelp
← Ops
Browse all topics
Step 4 of 7 — Make · parts into finished goods

A kit will not build even though the app says it can

Troubleshooting6 min read

Short answer

Buildable is counted per location, so the usual cause is components sitting somewhere else: the headline figure on a product list is org-wide and can pair a part in one warehouse with a part in another. Next most likely, the kit contains sub-kits nobody has built yet, or component stock is already allocated to orders. An unapproved order blocks it too.

Last checked 7 Aug 2026Step 4 — MakeView as Markdown

The fix described here needs the Execute (pack kits) permission.

What is this?

Nothing can be assembled out of parts that are in another building.

That sentence is the whole article. A kit is buildable at a place, not in general, and the number you were reading may not have been about the place you are standing in.

When a build refuses, Mossery names the component that stopped it and what it found — something of the shape "need 40, have 12". Read that line first; it usually points straight at one of the checks below.

Work through them in that order. The first two explain most cases.

Check 1: are the components at this location

The buildable figure on a product list is an org-wide estimate. The one an assembly order obeys is per location. They are different numbers, and the org-wide one is always the larger.

Here is why. A product list adds up every component everywhere and then works out how many kits that would make. That arithmetic will happily pair a lid held at one warehouse with a base held at another, and count a kit that can be assembled at neither.

ComponentWarehouse ARetail 1Total
Base31013
Lid10313
Kits buildable336, not 13

The org-wide sum says 13. Warehouse A can build 3. Retail 1 can build 3. Nobody can build 13, and an assembly order at Warehouse A will stop at 3.

Fix it

  1. Open the product and find the Stock by location card. It gives the real per-location answer.
  2. Build the quantity that location can actually make.
  3. If you need more there, transfer the short component in first, then build.

Treat the org-wide figure as a planning hint, never as a promise for today.

Check 2: does the kit contain sub-kits nobody has built

A build consumes the recipe's direct components, from stock. It does not build their parts for you on the way down.

The buildable figure is more generous than that. When a kit is made of other kits, it counts each sub-kit's own build capacity as well as the finished sub-kits on the shelf — the assumption being that you could build the sub-kits first. That is genuinely useful for planning, and it is exactly the gap you fall into when you try to build today.

So a kit can honestly read "8 buildable" while the shelf holds 2 finished sub-kits and enough loose parts for 6 more. An assembly order for the parent will build 2 and stop, because the other 6 do not exist yet.

The fix is an order of operations, not a setting:

  1. Run an assembly order for the sub-kit first, at that location.
  2. Then run the assembly order for the parent kit.

If you had previously set a kit to build "from finished components only", that switch is gone. Sub-kit capacity now always counts towards the buildable figure, for every kit, because the old behaviour meant two kits could report different numbers for reasons nobody on the floor could see.

Check 3: is the component stock already spoken for

A component's availability is what is on hand minus what is already allocated to orders. Assembly only gets what is left.

Sixty units on the shelf with fifty allocated to open orders leaves ten for building. The shelf looks full and the build still refuses at ten, which is correct — those fifty belong to customers who have already bought them.

Read the failure message. It names the component and reports what it found, and that figure is the availability, not the shelf. If it says "have 10" while you can see 60, allocation is the difference.

If the build genuinely matters more than the open orders, someone has to resolve those orders first. Assembly will not quietly take stock out from under them, and that is the point.

Check 4: has the assembly order been approved

An assembly order has to be approved before it can be executed. A draft one cannot run, no matter how much stock is available.

If the message you got was about approval rather than about a component, this is the whole problem — and the fix is not yours. Approving assembly orders is a separate permission from executing them, on purpose: one person decides what gets built, another does the building.

Send the order reference to whoever approves assembly work and ask for it to be approved. Nothing about the stock needs to change.

Check 5: does every line of the recipe point at a real product

A recipe line that does not resolve to a product forces the buildable figure to zero.

This happens when a component was entered as a code that no product matches — a typo, a product code changed later, or a product removed while a recipe still referred to it. The app does not guess. It marks the line unresolved, reports the kit as buildable zero, and names that unresolved line as the thing holding it back.

Open the kit's bill of materials and look for a line flagged as unresolved. Fixing it means pointing that line at the right product, which needs whoever owns product data and their bill-of-materials permission — not the person doing the build.

Still refusing after all five?

Two quieter causes are worth ruling out before you escalate.

Wastage. A recipe line can carry a wastage allowance, which raises what each kit actually consumes. A line needing 10 with 5% wastage draws 10.5, so 100 on hand builds 9 kits, not 10. Small percentages produce exactly this kind of off-by-one argument.

"Always available". If every component in a recipe is made to order rather than stocked, the kit is reported as always available instead of as a number. That is not a bug and it is not a promise that a build will run — it means nothing in the recipe is being counted, so nothing is constraining it.

If none of that fits, capture four things and pass them on: the kit's product code, the location you were building at, the quantity you asked for, and the exact message including the component it named. Those four identify the problem without anyone having to reproduce it.

Explore

Running an assembly order. The normal path, from picking a quantity to recording what was actually consumed. Learn more →

The three numbers of a built product. Built, buildable, and available — why a kit needs three figures instead of one. Learn more →

Building a bill of materials. How a recipe is put together, including wastage and unresolved lines. Learn more →

Read next