AWRA OpsHub Search

Production Without a Bill of Materials

There is no bill of materials here, no production order, and no yield variance report. This is what a small Kenyan factory can and cannot do on that basis — written plainly, because six of our own manufacturing articles were built on the assumption that a recipe existed.

Manufacturing & Agribusiness Washingtone Aura 14 min read

A miller buys three tonnes of maize, mills it, bags flour, and sells it. Somewhere in that sentence is the entire discipline of manufacturing accounting, and the object most software puts at its centre is the recipe: this much maize makes this much flour, so measure the run against the recipe and the difference is your yield. Every serious manufacturing system is built around that object.

We do not have it. There is no bill of materials, no recipe, no production order, no work order, no assembly and no kit — not partially, not in a limited form. A search of the codebase for any of those returns nothing, which is a more useful answer than a feature list. This article is about what remains, because what remains is more than nothing and is genuinely enough for some manufacturers and genuinely not enough for others.

Why this article exists at all

The manufacturing landing page named recipe-based issuing in its title, its description and two of its feature cards, while its own honesty block correctly listed bills of materials and production orders as unbuilt roadmap. Everything a visitor read first contradicted the one block written to be truthful. That copy has been corrected, and this is the article it should have linked to.

What a bill of materials actually buys you

It is worth being precise about what is missing, because "no BOM" sounds like one absent feature and it is really four.

  • An expected quantity. The recipe says a tonne of maize should yield 920 kilos of flour. Without it there is no expectation, and without an expectation there is no variance — the arithmetic simply has nowhere to start.
  • A version with an effective date. Recipes change: a supplier substitution, a moisture adjustment, a reformulation. A BOM with versions lets you ask what the recipe was in March, which is the question that arises when March's margin looks wrong.
  • A production order to issue against. This is the object that turns material leaving the store into consumption, and that lets a confirmed customer order ring-fence the raw material behind it.
  • Yield and consumption variance. The report every processor actually manages on, and the by-product receipt that goes with it.
Three panels: a fully built raw store with batch identity, landed cost, quality holds and bin locations; a dashed empty panel where the bill of materials would sit, listing expected quantity, versions, production orders and yield variance; and a built finished-goods panel where stock is received and valued at the item's standing price. Below, the three things that bridge the gap: an issue with a reason charged to a job, a finished-goods receipt valued at a standing price rather than the run's cost, and a production sheet outside the system.
The two ends are strong and the middle is absent. That shape decides everything about whether this fits your factory.

The layers underneath production — landed cost, quality holds, batch traceability — are the harder half to get right, and they are done. The layer on top is the one everybody demonstrates, and it is the one missing.

What you can do instead, precisely

Material leaving the raw store is recorded as a stock issue, and that issue carries more than most people expect. It requires a reason chosen from your own list. It can be charged to a job, at which point the job carries the material at the item's cost. It can come from a specific warehouse and bin, and from held stock where you are working from a reserved allocation. It moves the stock and posts the accounting entry at the moment it is approved, not when it is requested. And above a value you set, it cannot be approved without an elevated permission.

So the record you end up with is not a consumption variance. It is something different and, for a certain kind of manufacturer, better: a dated, reasoned, attributable, approved account of exactly what material left the store, who released it, and which job carried the cost.

What the system holds

Recorded as it happens, by the person doing it.

  • Every issue out of the store, with a reason from your own list and an approver.
  • The material charged to a job at the item's cost, so the job accumulates what it actually consumed.
  • Batch and lot identity on the input, with true landed cost written onto the batch.
  • Quality holds that exclude quarantined, expired or damaged stock from being issued at all.
  • The finished goods received back onto stock as their own batch, traceable onward to the customer.
  • Blind cycle counts with valued variance against the store.
  • The recall chain in both directions, from a supplier lot to every customer who received it.

What stays on your production sheet

None of this is computed anywhere.

  • The expected quantity. What this run should have consumed, and therefore the variance.
  • Getting the run's cost onto the finished good. A receipt is valued at the item's standing buying price, and there is no cost field on the receipt — so the run's actual cost does not reach the output unless you edit the item master first.
  • Yield percentage and its trend, by product, by shift, by supplier lot.
  • Overhead absorption. Nothing spreads factory overhead across a run.
  • Committed stock. A confirmed order does not reserve the raw material behind it.
  • By-product valuation. Bran, cake and offcuts can be received onto stock, at a value you decide.
  • Rework. It goes back on as an adjustment, not as recorded input against an expectation.

What crosses the seam

  • Actual material cost per job, which is the input to your yield sheet rather than a substitute for it.
  • The batch identity, which is what lets a yield figure be attributed to a specific supplier lot.
  • The landed cost on the batch, which is the only number in this whole picture that is genuinely hard to compute by hand.

The honest summary of the seam: we will tell you accurately what a run cost. We will not tell you what it should have cost. If your margin problem is that you do not know your input costs, that is solved here. If your margin problem is that yields are drifting and nobody can say by how much, it is not.

Which manufacturers this actually fits

This is the section a vendor normally leaves out, and it is the only one that matters if you are evaluating.

Four kinds of factory, honestly assessed

What your operation needs Job shop / fabricator Processor / miller Food & beverage Assembly
Know the true landed cost of imported inputs Yes Yes Yes Yes
Charge material to a specific job at cost Yes Partly — configurable by you Partly — configurable by you Partly — configurable by you
Batch traceability and a recall chain Partly — configurable by you Yes Yes Partly — configurable by you
Quality holds enforced at the allocation Yes Yes Yes Yes
Measure yield against an expected quantity No No No No
Explode a multi-level product into components No No No No
Reserve raw material behind a confirmed order No No No No

Built and maintained Configurable by you, not maintained by us Not built

The pattern in that table is the whole answer. A job shop — a fabricator, a furniture workshop, a metal shop building to order — fits well, because its natural unit of cost is a job and it rarely has a fixed recipe anyway. A processor or miller gets the costing and traceability half and has to run yield on a sheet, which is workable but is the thing they most wanted. An assembler with a multi-level product is the worst fit and should look elsewhere for the production layer.

If your unit of work is a job

This fits, and the job coding is the point

Fabricators, workshops, made-to-order producers. Charge material to the job, add time entries, add purchases, and the job's cost is built from source records rather than estimated. No recipe was ever going to help you.

If your unit of work is a batch with a known recipe

Take the costing half, run yield yourself

Millers, bakers, dairies, feed and oil processors. Landed cost, holds and the recall chain are genuinely strong and are the expensive things to build. Yield goes on a sheet for now, fed by the actual consumption figures. Budget for that discipline being manual.

If yield variance is the reason you are buying

Say so in the first call

We would rather scope the production layer properly as a build, or tell you to buy a manufacturing-specific system, than have you discover the gap in month three. That is not modesty — a factory that bought us for yield reporting is a factory that will leave.

Running yield on a sheet, properly

If you are in the second case, the manual discipline is worth doing well rather than grudgingly. Three rules make the difference between a sheet that catches drift and a sheet that gets abandoned in week five.

  1. Make the run the unit, and give it a number

    Open a job per production run — not per month, per run — and charge every issue to it. The job number becomes the key that joins your sheet to the system's cost figures, and without a shared key the two records drift apart within a fortnight.

  2. Take actual consumption from the system, never from memory

    The issues charged to that job are your actual input, already costed and already approved. That is the one column you should never be typing twice. Your sheet supplies the expected figure and the output weight; everything on the input side is a lookup.

  3. Record the output as a receipt the same day — and set the price first

    Finished goods come back onto stock as their own batch, but the receipt is valued at the item's standing buying price and there is no cost field on it. So compute total job cost divided by good output, put that figure on the item master, and then receive. Skip that order and the output is capitalised at whatever price was last on the item, which for a manufactured good is usually a number nobody has revisited.

One milling run, costed from records and yielded on a sheet

Maize issued to job MILL-0412, from two batches, at landed cost KES 148,500
Packaging issued to the same job KES 19,200
Labour, from time entries against the job KES 24,000
Total job cost — every figure from a source record KES 191,700
Good output received back onto stock as a batch 2,760 kg
Unit cost you must put on the item master before receiving: 191,700 ÷ 2,760 KES 69.46/kg
Yield — the one figure that came off the sheet, not the system 92.0%

Three tonnes in, 2,760 kilos of flour out. The 92% is arithmetic you did, and the expected 94% you were measuring against lives in your own record. The input side — the landed cost of two separate maize batches, the packaging, the labour — came from the system without anybody retyping it, which is the real value here. The output side does not: that 69.46 has to be written onto the item master by hand before the receipt, because a receipt carries no cost of its own. That manual step is the weakest link in this whole arrangement, and it is the one to put in somebody's job description rather than hope for.

Production — the straight answer, without the recipe

What AWRA OpsHub does today

  • Stock issues that require a reason from your own list, and that can be charged to a job at the item's cost.
  • Approval before the stock and the ledger move, and an elevated permission required above a value you set.
  • True landed cost — freight, duty and clearing allocated across a receipt by value or by quantity, written onto the batch and carried into weighted average cost.
  • Quality holds that are enforced by the allocation query itself, so quarantined, inspection-pending, damaged, expired and returned stock cannot be issued or sold.
  • Batch and lot identity, with expiry, manufactured and received dates, supplier and source purchase order.
  • Traceability in both directions, from a supplier lot forward to every customer and from a finished batch back to its inputs, with a recall status per batch.
  • Stock by warehouse and bin, transfers between them with shrinkage recorded, and blind cycle counting with valued variance.
  • Custom fields on items, adjustments and transfers, so a grade, a moisture reading or a run number can be captured and required.

What it does not do

  • No bill of materials, recipe, kit, assembly or component model of any kind. Not limited, not partial — the object does not exist.
  • No production or work order. Nothing turns material leaving the store into consumption against an expectation.
  • No expected quantity, and therefore no yield or consumption variance report.
  • No multi-level explosion. A product made of sub-assemblies cannot be described.
  • No committed or reserved stock behind a confirmed order.
  • No by-product receipt against a run. By-products go onto stock as an ordinary receipt at a value you decide.
  • No rework as recorded input. It re-enters as an adjustment, which is bookkeeping rather than measurement.
  • No cost on a finished-goods receipt. A receipt is valued at the item's standing buying price, so the run's actual cost only reaches the output if somebody edits the item master first. Nothing links the two.
  • No standard costing, no overhead absorption and no work-in-progress statethe accounting consequence has its own article.
  • No weighbridge, moisture or grade capture at receiving, and no supplier payment computed from a verified weight.

Six of our own manufacturing articles were written as though the recipe existed, and that is the more useful confession than any of the bullets above. The failure was not a marketing exaggeration — it was writing about a subject from the outside, using the vocabulary of the field rather than the vocabulary of the code. The check that would have caught it is the one we now run before any capability claim ships: find the class, the column or the migration that implements it, or do not write the sentence.

None of this is an argument against bills of material — they are the right tool and the discipline behind them is worth running whether or not a system holds them. What one contains, how single-level differs from multi-level, and how to write your first five from a supervised run is the bill of materials explained. Read that for the method; this page is only about what the absence costs.

Our take

If you make things to order, this fits well and the missing recipe was never going to help you. If you run recipes, take the costing and traceability half — which is the expensive half to build and is genuinely done — and accept that yield lives on a sheet fed by real consumption figures. If yield variance is the reason you are shopping, buy a manufacturing system and let us handle the store, the imports and the recall chain underneath it.

Test the two ends, not the middle

Bring one imported receipt with freight and duty, and one supplier lot you would need to recall. Those are the two things that are hard to do by hand and the two things we do properly.

See AWRA for manufacturing

Help Center

Need a quick answer while you read?

Run inventory, procurement, assets, sales, and field work with approved AWRA guidance for setup, migration, integrations, security, pricing, and support.

Search all approved AWRA public help articles.

Open Help Center