AWRA OpsHub Search
Inventory · Bills of materials

Write down what it’s made of. Build it from the shelf.

A bill of materials lists the components behind a kit, a pack or a finished product. An assembly order takes them out of one warehouse and puts the finished item in, all at once or not at all, at the cost of what it actually consumed.

Build and unbuild · Whole units only · Cost as built · Serials both ways · Web and mobile API

All or nonea completed order moves every line, or nothing moves
Whole unitsa build that needs half a carton is refused, never rounded
12 levelsdeep, the check that an item is never made of itself
2 directionsbuild components into a product, or unbuild it back
Why a list, not a spreadsheet

The kit on the shelf and the parts that went into it should never both be counted.

Most businesses that assemble anything keep the recipe in someone’s head and the stock in the system. So the panels, batteries and bulbs stay on the books after they have become kits, the kits arrive with no cost at all, and a stock take a month later finds both the problem and nobody who remembers it.

A bill of materials makes the recipe a record. Name the finished item, list what goes into it and how many of each, and the workspace can answer two questions before anything moves: is there enough on the shelf at this warehouse to build what you want, and what will one cost at today’s component prices. An assembly order then does the movement in one piece: components out, finished item in, cost carried across.

Kits and bundles

Solar kits, starter packs, gift hampers, school uniform sets: assembled ahead of demand and sold as one item.

Build

Light assembly

A finished product from bought-in parts, including sub-assemblies with their own list that are built first.

Build

Breaking a unit down

A bundle split back into parts for sale on their own, or a returned kit taken apart and restocked.

Unbuild

Packs and recipes

A clinic procedure pack or a kitchen recipe used up rather than stocked: every component issued in one check-out.

Issue
From list to finished stock

Five steps, and stock moves in exactly one of them.

Everything before completion is planning. That is deliberate: a half-finished build is how components disappear without a product to show for them.

01 · DEFINE

Write the list

Pick the finished item, say how many the list makes, and add each component with its quantity and a note. A component that is itself made from this item is refused, however deep the loop.

02 · CHECK

Plan against a warehouse

Choose a quantity and a warehouse. Each component shows what the build needs, what is on the shelf there, what is short and its unit cost, with a cost per finished unit at the top.

03 · RAISE

Draft an assembly order

Build or unbuild, a whole number of units. The order is numbered and copies the component list as it stands, so editing the list later leaves orders already raised untouched.

04 · SERIALS

Name the units, if tracked

For serial-tracked items, record the serials of the finished units and of the components each line uses. They are checked when the order completes, not before.

05 · COMPLETE

Move it, all at once

Every component comes out, the finished item goes in, each line records the cost it was consumed at. If any line cannot move, none does, and the reason is said plainly.

A draft can be cancelled. Nothing moved, nothing to undo. An archived list cannot be built from. Viewing, editing lists and building are three separate permissions.
A build, costed

Twenty-five kits at the Nairobi warehouse.

The order consumes each component at its own current cost and records it line by line. The finished item’s moving average then takes in the build, beside the ten kits already on the shelf.

ComponentPer kitConsumedUnit costLine cost
Solar panel 40 W1253,20080,000
Battery pack 12 V1254,100102,500
Charge controller 10 A1251,15028,750
LED bulb 3 W37518013,500
Cable, per metre102504511,250
Enclosure1253809,500
Total for 25 kits · KES245,500

What happens to the kit’s cost

Moving average: what was on hand at its cost, plus what was built at its cost, spread over the new total.

On hand before · 10 kits at 9,40094,000
Built · 25 kits at 9,820245,500
Now on hand35 kits
New average costKES 9,700

The battery pack has its own list, built on its own order first. Four cells at 850 and a protection board at 700 make it 4,100, and that figure is what the kit then consumes. Each level is a separate build you can see, rather than one opaque step.

Whole units, said plainly

Half a carton is not stock. So a build that needs one is refused.

A list can make a batch rather than one unit. When the quantity you ask for does not divide into whole units of every component, the order is refused with the component named, rather than rounded up or down. Rounding a component is quietly inventing or losing stock.

Hand sanitiser 500 ml · build 6Refused
List makes 4 · bottles 4 per list6
Pump tops, 4 per list6
Gel base, 2 litres per list3
Shipping carton, 1 per list1.5
Shipping carton: 6 units need 1.5, which is not a whole number. Build a quantity that uses whole units of every component.
Hand sanitiser 500 ml · build 8Raised
List makes 4 · bottles 4 per list8
Pump tops, 4 per list8
Gel base, 2 litres per list4
Shipping carton, 1 per list2
Every component comes to a whole number. The order is drafted; nothing moves until it is completed.
One list, three uses

Build it, take it apart, or use it up.

The same list drives all three. What differs is where the stock goes and what happens to the cost.

Build Unbuild Issue every component
Stock outEach component, at the warehouseThe finished itemEach component, merged to one line per item
Stock inThe finished itemEach component, back on the shelfNothing: the components are consumed
CostComponents at their current cost; the finished item’s average takes it inThe item’s current cost shared across the components in proportion to what they cost nowFollows the check-out reason’s accounts, as any check-out does
DocumentAssembly order, numbered ASMUnbuild order, numbered DISOne pending check-out adjustment
ApprovalCompletion by someone allowed to buildCompletion by someone allowed to buildYour ordinary check-out approval
SerialsFinished units registered; component units named as usedFinished units released; component units registered as recoveredNamed on the check-out, as usual
What reaches the books

A journal only where value actually changes account.

Building a kit moves value from components to a finished good. When both sit in the same inventory account, which is the usual case, that nets to nothing, so nothing is posted and the ledger is not cluttered with entries that cancel out.

When they sit in different accounts (components in raw materials, kits in finished goods), each component line is journalled from one to the other, referenced to the assembly order number. Unbuilding posts the same move in reverse.

Ref ASM-2026-000042 · Built Solar home kit SHS-40

Inventory · finished goods

Debit245,500
Credit

Inventory · components

Debit
Credit245,500

Shown as one total; posted as one entry per component line, each referenced to the order.

Same account on both sides? No journal at all. The quantities and the average cost still move.

What you get

Built into the stock rules you already have.

An assembly order is not a side system. Every unit it moves goes through the same path as a sale or a transfer, so the guards on that path hold here too.

Lists per item

A named list for each finished item, with an output quantity for batch recipes and a note on every component line. Archive a list to stop new builds from it.

Sub-assemblies

A component can have its own list. Build it first on its own order, then consume it; a loop where an item ends up inside itself is refused.

Per-warehouse availability

The plan checks every component against the shelf at the warehouse you choose, and names what is short before you raise anything.

Promised stock stays promised

A build cannot consume units reserved for a customer order or held by hand, and a warehouse locked for a count refuses it too.

Cost as built

Each order line keeps the unit and line cost it was consumed at; the order keeps its total and per-unit cost; the item’s moving average absorbs it.

Serials both ways

Finished units are registered as they are built and component units marked as used, with the order that used them recorded on the serial’s history.

Issue through approval

For a pack or recipe used up, one check-out lists every component, picks the bin holding the most of each, and waits for approval like any other.

Numbered documents

Orders are numbered on a yearly sequence, ASM for a build and DIS for an unbuild, and each keeps who raised it, who completed it and when.

Web and mobile API

Lists, plans, orders, serials, completion and cancellation are all available to the mobile app, behind the same three permissions.

Bills of materials and assembly — exactly what ships

What AWRA OpsHub does today

  • A bill of materials per item, with an output quantity so one list can describe a batch rather than a single unit, and a note on every line.
  • A loop check twelve levels deep, so an item can never become a component of itself through a sub-assembly.
  • A stock plan before anything moves: what a build needs per component, what is on the shelf at the chosen warehouse, what is short, and a cost per finished unit.
  • Whole units only: a build whose components come to a fraction is refused with the component named, never rounded.
  • Build and unbuild orders, numbered, drafted first, and completed all at once or not at all.
  • Cost as built: every component line records what it was consumed at, and the finished item’s moving average takes the build in.
  • A journal only where value changes account, one entry per component line referenced to the order.
  • Serial numbers on both sides of a build or an unbuild, checked at completion.
  • The reservation rule and the count lock applied to every unit an order moves.
  • Issue every component as one check-out for packs and recipes, through your ordinary approval.
  • Web and mobile API, with viewing, editing and building as separate permissions.

More we can add to your workspace

  • Yield and scrap on a build, with the variance between what the list called for and what the floor actually used.
  • Standard cost per finished item, with price and usage variances posted against it.
  • Labour and overhead absorption into the cost of each built unit.
  • A work-in-progress stage on an assembly order, holding components issued to the floor before the finished good is counted in.
  • Routings, work centres and material requirements planning, turning demand into suggested builds and purchases.
  • Versioned lists with effective dates, so a recipe change is a new revision you can compare rather than an edit.
  • Kits that explode at the till or on an invoice, selling the finished item and drawing its components in the same step.
  • Lot genealogy through a build, tracing which batch of a component went into which finished unit.
  • Multi-level builds on one order, building the sub-assemblies a product needs on the way to it.

Where we point you to a specialist

  • We will not round a component to make a build fit. A fraction of a unit is either a different unit of measure on the item or a different batch size on the list, and which one is your decision.
  • We point you to your accountant on how manufactured stock is valued for tax. The books carry a moving average; whether that is the basis your sector must report on is their call, not ours.

Every row in the middle column is scoped work on an engine that already plans, builds, costs and journals in one transaction. Tell us which one your floor needs first.

Bills of materials, answered

Frequently asked questions

What does an assembly order actually do?
It takes the components on a bill of materials out of one warehouse and puts the finished item in, in a single step. It is drafted first, so you can check it and add serial numbers, and nothing moves until it is completed. On completion every line moves or none does: if one component turns out to be short, reserved for a customer or locked by a count, the whole order is refused with the reason, and no stock is left half-moved.
How is the cost of a built item worked out?
Each component is consumed at its own current cost, and the order records the unit and line cost of every line as well as the total and the cost per finished unit. The finished item’s moving average then takes the build in: what was already on hand at its old cost, plus what was built at its build cost, spread over the new total. Ten kits at 9,400 plus twenty-five built at 9,820 gives thirty-five at 9,700.
Why was my build refused for a fraction?
Stock is held in whole units. A list can make a batch, say four bottles, and if the quantity you ask for would need one and a half cartons, the build is refused with the carton named rather than rounded. Rounding would quietly invent or lose stock. Choose a quantity that divides cleanly, or change the batch size or the unit of measure so the arithmetic is true.
Can a component have its own bill of materials?
Yes. A battery pack can have its own list and be a component of a solar kit. Each level is built on its own order, so you build the battery packs first and then the kits that consume them. The system refuses any list that would make an item part of itself, checking up to twelve levels deep.
Does building post anything to the general ledger?
Only when the components and the finished item sit in different inventory accounts. In that case each component line is journalled from the component’s account to the finished item’s, referenced to the order number, and unbuilding reverses it. When both use the same account, which is the common case, the move nets to nothing and no journal is posted, though quantities and average cost still change.
What is the difference between building and issuing every component?
Building turns components into a finished item that goes back on the shelf. Issuing is for a pack or a recipe that is used up, such as a clinic procedure pack or a dish in a kitchen: the components go out in one check-out, merged to one line per item, and nothing comes back in. That check-out waits for your ordinary approval and follows the accounts of the reason you choose.
If I edit a bill of materials, what happens to orders already raised?
They keep the components they were raised with. Raising an order copies the list as it stood, so a change to the recipe applies to the next order rather than rewriting one in flight. An archived list stays readable but cannot be built from.
Can it plan production or track work in progress?
Production planning is the layer we add on request. What ships today is the build itself: an order is a draft until it completes, and then it is finished stock. Routings, work-centre schedules, requirements planning, a work-in-progress stage, yield and scrap, standard cost, and labour or overhead absorption are all work we can scope for your workspace on top of the build engine that already plans, moves and costs in one transaction.
From parts to product

Stop counting the parts and the kit twice.

Write the list once, check it against the shelf, and let one order move the stock and carry the cost.