Stockroom

Bills of materials, builds and part costs

Bills of materials for what you make, builds that take the components out of Shopify and put the finished goods in, raw materials in the units you measure them in, and purchase orders that add freight and duty into the cost of each part. One app, and your stock stays in Shopify.

  • Bills of materials and builds
  • Work in progress, yield and stages
  • Landed cost on every part
Making

From recipe to finished goods, on Shopify

Define what each product is made of, raise a build, issue the parts, record what you made. Stockroom moves the inventory and works out what it cost.

  • A bill of materials per product. Components and raw materials with a quantity per unit - decimals included - nested as deep as you build, with a live assembled cost and a count of how many you could make from stock right now.
  • Materials in grams, metres and sheets. A material is kept in the unit you measure it in, bought in packs if that is how it comes, and counted as inventory in the buy plan, the alerts and the stock value. It never reaches a sales channel.
  • Builds that move the stock. Issue components into work in progress and record runs as you finish them, including partial runs, over-runs, scrap and yield. Each run is one Shopify adjustment: finished goods up, components down, with the build number in the reference.
  • Stages, assignees and workstations. Name the stages your floor uses, give every build a priority, an assignee and a workstation, move it through the pipeline with one tap, and print the build sheet for the bench.
  • The assembled cost is fixed per run. Components at the cost they were issued at, labor and overhead as charges spread over the planned quantity, and scrap expensed separately. A later price change does not restate the run, and you choose run by run whether it updates the product cost.
  • Demand raises the build. Mark a product as restocked by building and the reorder engine drafts builds instead of purchase orders. The parts those builds will run short of join the buy plan, and a customer order can raise a build on its own.
  • Batches in, batch out. With lot tracking on, a build consumes the component batches you choose and mints the batch it makes, numbered from the build. Unbuild a batch and the recovered parts rejoin their own lots, so a recall can be traced through what you made.
  • Materials that are not Shopify products. A material that will never be a Shopify product can live in Stockroom alone. It is counted, costed and consumed like the rest, and the catalog sync leaves it alone.
Purchasing

Purchase orders for a workshop

Small manufacturers buy differently from retailers. Quantities are odd, the part numbers are the supplier's, and there are charges beyond shipping.

  • Search by name. Type two characters into the items field and your own product names come back with a thumbnail, the SKU and what is on hand. We built this after a manufacturer told us he does his POs from home, never scans anything, and was opening a product picker for every line.
  • Custom lines for things that are not products. Tooling, a die charge, a setup fee, a one-off part that will never be a Shopify product. Add it as a custom line and it prints on the supplier document and counts in the total.
  • Pack sizes and minimums. Per-variant pack size and minimum order quantity apply on every line, so a suggested quantity rounds to how your supplier sells it. A material's cost can be typed per pack.
  • The supplier's own part number. Each variant can carry the vendor product code, which appears on the PO lines, the PDF and the CSV export. Your supplier sees their own number, and a Shopify sync cannot overwrite it.
  • Mixed tax on one document. Per-line tax rates for the GST-and-QST case, per-line discounts, and shipping or adjustment charges that split across the lines however you say.
  • Order the shortfall from the build. A build short of three parts from two suppliers drafts one purchase order per supplier for the short quantities, with pack sizes and minimums applied, for you to review before it goes.
Receiving and cost

The landed cost of each part

A component's cost is the invoice plus freight plus duty, allocated across the parts. Your assembled cost and finished-goods margin depend on that number.

  • Freight and duty into the unit cost. Allocate a charge across the lines by value, by quantity, by weight, or by a split you type yourself, and it lands in the landed cost of each part.
  • Costs from the invoice. Unit costs are editable while you receive, and what you type is written to that receipt. The next delivery of the same part at a different price does not rewrite this one.
  • Undo a receive. If you received with the wrong costs, void the receipt. Quantities reverse, the PO steps back so a corrected receive can follow, and the voided receipt stays in the history marked as undone rather than deleted.
  • Short deliveries. A short delivery asks what you want to do: keep the order open for another parcel, or close it short. Closing short removes the remainder from Shopify incoming.
  • One shipment, several POs. When three orders arrive on one pallet, receive them in one session. Scanning matches across every included order and each one gets its own receipt at its own costs.
  • COGS at the assembled cost. Finished goods enter your cost layers at their assembled cost and the components leave theirs, so when the product sells, cost of goods sold reflects what it took to build. FIFO or weighted average, whichever your books use.
The shelf

Counting what is left

  • Stocktakes with a scope. Count by vendor, tag or location, or take the least-recently-counted items for a regular cycle count. Materials count too.
  • Adjustments with a reason. Damage, shrinkage, a miscount. Adjustments are drafted, then applied. Applied is permanent, so a correction is a new document.
  • One timeline per part. Receipts, adjustments, counts, transfers, builds that consumed it and daily sales on the same per-product history, so you can see where every unit went, including the build that issued it.
  • Value at cost, and as of a date. What the shelf is worth now, or on the last day of your financial year, on FIFO or weighted average, with work in progress reported separately.
Where Stockroom stops

What is not built

What a build does and does not do today.

  • A build is one product at one location, and there is no routing. A build assembles one product from one location's components (the output can land elsewhere). Stages, priority, assignee and workstation are labels you move the ticket through. Stockroom does not sequence operations, plan capacity across benches or time labor. That is where shop-floor software like Katana starts.
  • Nothing is reserved on Shopify until you issue. An open build claims components in Stockroom's own readiness math, so a second build on the same parts reads short. Shopify sees no reserved quantity until components are issued or a run is recorded. The movement then shows with the build number in the reference and a reason of "Other", because Shopify's API has no assembly reason yet.
  • One unit per material, and no expected scrap rate. Buy a material in the unit you consume it in. There is no unit conversion between the purchase order and the recipe. Yield and scrap are recorded on each run and expensed. The recipe carries no expected scrap rate, so the shortfall does not allow for waste you have not had yet.
  • Shopify bundles are left alone. If a finished item is a Shopify bundle, Shopify works out its stock from the components. Stockroom recognises those items and will not accept them as an output or a component.
  • Manufacturing is early access, and free. Bills of materials, builds, materials and the planning loop are in early access. We are still building them out and want to hear what your floor needs next. They are free, like the rest of Stockroom, with no trial and no credit card at install.

Common questions

Can Stockroom track a bill of materials and run a build?

Yes. Define the components each product is built from, with a quantity per unit, the unit it is measured in, and whether each line counts toward availability. Stockroom shows the assembled cost from live component costs and how many units you could build from stock. Create a build from it with a quantity, location and due date, issue the components into work in progress, and record what you make. Each run deducts the components and adds the finished goods in your Shopify inventory in one adjustment, including partial runs, over-runs, yield and scrap, with labor and overhead added to the assembled cost if you record them. You choose, run by run, whether the assembled cost updates the product cost.

We buy raw materials in bulk - how do grams and metres work?

A material carries its own unit, such as grams, millilitres, metres or sheets, and every quantity shows in that unit. Buy it in packs ("5 pails of 5,000 g") and the recipe still consumes grams. Materials are counted as inventory and stay out of the sales reports, since they never sell.

Can I take something apart?

Yes. An unbuild runs the bill of materials in reverse: take finished units apart at a location and the components go back into stock at their own costs. For example, a case into singles, a kit into parts, or a returned board stripped for its hardware.

Can I order something that is not a Shopify product?

Yes, as a custom line on the purchase order. It prints on the document your supplier reads and it counts in the order total. It is not a Shopify product, so there is no stock level sitting behind it.

We buy materials in another currency.

Each supplier carries their own currency and their orders are priced in it, defaulted to a daily reference rate and frozen when you mark the order placed. Freight and customs charges can be in your own currency on the same document.

Is there a limit on how much we can put through it?

No. There is no cap on SKUs, purchase orders, suppliers, locations or users, and no per-order pricing. Every store runs the same app.

Free on the Shopify App Store

Try it on your own catalog

Install Stockroom free from the Shopify App Store. No trials, no credit card.