Apps · Operations

Manufacturing

Define what goes into a product, raise a work order, and turn components into finished goods — on the same stock and the same books you already run.

User guideApps › Manufacturing

Before you start

Manufacturing is a real app you install from the app directory, and it needs Point of Sale — installing Manufacturing installs POS too if it isn't there already.

That dependency is the whole design. Manufacturing owns no catalog, no warehouses and no stock ledger of its own. Components and finished goods are the same products in the same catalog; issuing and producing write the same stock movements as receiving and selling. So a finished good sells at the register or the storefront like anything else, and the cost it sells at is the cost it was built at.

ScreenWhat it's for
ProductionThe working console — raise work orders, issue, complete, cancel.
BOMsAuthor bills of materials: what goes into each product and how much.
Work ordersThe plain list of every work order, for filtering and reporting.
ReportsWIP valuation, production history, component consumption.
Admin

Reading the four screens needs access to the Manufacturing app. Every action that moves stock or touches the ledger — create, issue, complete, cancel, add a build cost, save a BOM — needs the Build (work orders) capability, granted under Settings → Module Access. Admins always pass, and the server enforces it regardless of what the screen shows. See Permissions & access.

Building a bill of materials

A BOM says: to make one of this, you consume these, in these amounts. That's it — everything else is bookkeeping the app does for you.

  1. Open BOMs and hit New BOM The editor opens beside the list.
  2. Pick the Product to build The finished product, from your existing catalog. There's no separate "manufactured items" list to maintain.
  3. Set the Version and Status Versions let you keep the old recipe around. Status is Draft, Active or Archived.
  4. Add component lines Add component, pick the material, and enter Qty / unit. Repeat for every ingredient.
  5. Save BOM
Qty / unit means per ONE finished unit

Not per batch. If a loaf takes 0.5 kg of flour, enter 0.5 — the work order multiplies by however many you're building. Entering the batch quantity here is the single most common way to end up consuming ten times too much flour.

Only Active BOMs can be built

A draft won't appear in the work-order picker. And because a product can only have one buildable recipe at a time, activating a BOM archives the product's other active versions. That's how you switch recipes: activate the new version, and the old one steps aside on its own.

Finding the right products in the pickers

Products can carry an optional Product Type — Raw material, Finished good or Sub-assembly — set on the product record. It changes nothing about how the product behaves; it simply groups the BOM editor's pickers under Raw materials, Finished goods, Sub-assemblies and Other / unclassified, which is a real time-saver on a catalog of any size.

Sub-assemblies

A component that has its own active BOM is a sub-assembly, and the app flags it with a badge wherever it appears. Today it's treated as stock like any other component: build the sub-assembly with its own work order first, then the parent work order consumes it from stock. Raising a work order for the parent does not cascade into building its sub-assemblies.

Circular recipes are refused — if A is built from B, you can't make B out of A.

Running a production order

Everything transactional happens on Production. The flow is always the same: create → issue → complete.

1. Raise the work order

  1. New work order
  2. Pick the Product / BOM and the Build qty The picker only lists products with an active BOM.
  3. Choose Components from The warehouse the materials come out of.
  4. Choose Finished goods to Leave it on Same warehouse unless the finished product belongs somewhere else.
  5. Check the shortage preview, then Create work order As soon as a BOM, a quantity and a warehouse are set, the panel explodes the recipe and shows each component with Per unit, Required and On hand. Anything short is flagged in red.

The order is created as Planned with a number like WO-20260727-0001. Creating it moves no stock. A shortage doesn't block creation either — you'll get a message naming how many components are short so you can receive or build them before issuing.

2. Issue the components

This is the step that consumes stock. Select the work order to open its detail panel; the lines show Planned, Issued, On hand and an Issue now box per component.

  • Leave the boxes empty and Issue components issues each line's outstanding planned quantity — the normal case.
  • Type a number into a line to issue exactly that much of it instead.

The first issue flips the order from Planned to In progress. The value of what you issued moves into WIP on the cost summary.

Issuing is repeatable. If a batch needs more material than planned — spoilage, a spill, a mis-cut — issue again and the extra tops the work order up, landing in WIP with everything else.

Issue is all-or-nothing, and stock can't go negative

If any component is short, the entire issue is refused and nothing moves. There's no overselling on the shop floor — you can't consume material you don't have. Receive or build the missing component, then issue again.

3. Add labour and overhead optional

While the order is open, Extra build costs (labor / overhead) lets you add cost lines — pick Labor, Overhead or Other, give it a description and an amount, and Add. Each one capitalizes into WIP, so it ends up inside the finished unit's cost rather than sitting on the P&L as a separate expense.

Build costs can be added or removed right up until the order is completed or cancelled. There's no time tracking or routing — the amounts are entered by hand.

4. Receive the finished goods

Once the order is In progress, the completion block appears:

  1. Enter Good units How many usable units came off this run. It's capped at what's still outstanding on the order.
  2. Add Serial numbers if the product is serial-tracked One per unit.
  3. Tick Close short if this is the end of the run Only when you're finishing with fewer units than planned — see below.
  4. Receive finished goods Stock of the finished product goes up in the finished-goods warehouse, valued at what the build actually cost. The confirmation tells you the value received.

You can complete in stages. Receive 40 of 100 today and 60 next week; the order stays In progress until every planned unit is accounted for, then becomes Completed.

Closing short

If a run produced fewer good units than planned and the rest is never coming, tick Close short (scrap the rest) on the final completion. The leftover work-in-progress value is written off as scrap variance rather than sitting on the books forever, and the order closes. The confirmation names both figures — what was received and what was written off.

Cancelling

Cancel work order is offered only while nothing has been completed.

  • A Planned order with nothing issued just cancels — it's paperwork.
  • An In progress order returns every issued component to stock at the cost it was issued at, and tells you the value that came back.
  • An order with units already completed can't be cancelled. Use Close short instead — the finished goods exist and can't be un-made.

Work order statuses

StatusMeans
PlannedRaised; no components issued yet. No stock has moved.
In progressComponents have been issued; value is sitting in WIP.
CompletedFinished goods received; the order is done.
CancelledCalled off; any issued components were returned to stock.

What it does to stock

StepStock effect
Create the work orderNone.
Issue componentsEach component comes out of the component warehouse — one consume movement per line.
Receive finished goodsThe finished product goes into the finished-goods warehouse — one produce movement.
CancelIssued components go back into stock, reversing the consumption.

Lot- and serial-tracked products behave the same way they do everywhere else. Lot-tracked components are consumed earliest-expiry-first; serial-tracked units are marked consumed against the work-order number. A completed lot-tracked product gets a production lot named after the work order, and serials you enter at completion are registered as in stock. Cancelling restores exactly the serials that work order consumed.

The full picture of how stock moves through the workspace is in Stock lifecycle, and the production loop end-to-end is walked through in Make to stock.

How a build is costed

The cost summary on each work order shows the arithmetic as it happens: Components, Extra costs, WIP, Variance and Unit cost.

  • Components are relieved at the product's current cost — the same cost receiving maintains and selling reads. Consuming material never changes that average.
  • Each issue and each build cost adds its value to WIP.
  • Completing takes value back out of WIP and puts it into the finished product's stock, so unit cost = (components + extras) ÷ good units.
  • On a partial completion, units are valued at the current WIP average per remaining planned unit. The final completion sweeps out whatever WIP is left, so rounding can never strand value in a closed order.
  • Receiving the finished goods updates that product's own average cost, exactly as if you'd bought them in.

Workspaces running FIFO costing instead of weighted average get the same loop with cost layers: components are relieved from their actual layers, and completion mints a production layer at the built unit cost. See Stock & warehouse.

What it does to the ledger

As with the rest of inventory, this comes down to Inventory method under Settings → Accounting. Under periodic — the default — manufacturing posts nothing. Stock still moves, work orders still cost themselves, the reports still work.

Under perpetual, each step posts a balanced journal as it happens:

StepJournal
Issue componentsDr Work in progress 1320 / Cr Inventory 1340
Add a build costDr Work in progress 1320 / Cr Production costs absorbed 7250
Receive finished goodsDr Inventory 1340 (built cost) + Dr scrap 7110 (any close-short variance) / Cr Work in progress 1320
CancelDr Inventory 1340 / Cr Work in progress 1320
Sell the finished goodDr COGS 7100 / Cr Inventory 1340

Value walks Inventory → WIP → Inventory → COGS and nets to nothing once the goods are sold, which is what makes the inventory account and the physical stock reconcile. Finished goods capitalize into the same inventory account the sale relieves — that's deliberate, and it's why the two sides always agree.

The account used for work-in-progress defaults to 1320 and is editable under Settings → Accounting. More in Accounting.

Make to order

Not everything is built ahead. A kitchen doesn't hold a stock of finished sandwiches — it holds bread and fillings, and the sandwich exists only once it's sold.

The Selling default control at the top of Production sets which behaviour your manufactured products use:

ModeWhat selling one does
From stock (build ahead)Relieves finished-goods stock, like any other product. Build with work orders first.
Make to order (produce on sale)Consumes the product's active BOM ingredients from stock on the spot. No pre-built stock, no work order.

The setting is a company-wide default; individual products override it with their own Fulfilment field, so a bakery can hold stock of packaged goods and make coffee to order in the same workspace.

In make-to-order mode the cost of the sale is the cost of the ingredients consumed, so the books stay correct without a work order ever existing. Selling never creates one — building to stock stays a deliberate act.

Short ingredients block the sale

If a make-to-order product's ingredients aren't on hand, the sale is refused — unless the register has Allow overselling switched on, in which case ingredient stock is allowed to go negative. Check the ingredient stock before turning a product make-to-order.

Reports

ReportAnswers
WIP valuation (open builds)How much value is currently tied up in unfinished work orders. Under perpetual inventory the total should reconcile to the Work in progress account (1320).
Production history (completed builds)What you've built, how many units, and what each one actually cost.
Component consumptionHow much of each material production has eaten, in quantity and value.

Production history is where recipe problems show up. A unit cost that drifts run after run usually means the BOM quantities don't match what the floor is really using.

Everyday questions

My product doesn't appear in the work-order picker

It has no Active BOM. Open BOMs, find its recipe, and set the status to Active.

The run used more material than planned

Issue again. Type the extra quantity into the component's Issue now box and issue — it tops the order up and lands in WIP, so the finished units carry the true cost.

We made more than we planned

Enter the real number of good units. Completion sweeps the whole remaining WIP into the units you receive, so the cost per unit comes out right rather than leaving value stranded.

I need to change a recipe that's in use

Create a new version of the BOM and activate it. The old version archives itself, work orders already raised keep the recipe they were exploded from, and you keep the history of what changed.

The buttons are there but disabled

You can read Manufacturing but don't hold the Build (work orders) capability. The page says so next to the disabled controls; an admin can grant it under Settings → Module Access.