Loading…
Loading…
Why factory stock never matches the books, how to run a physical stock verification and cycle counts, and how to book the difference.
Factory stock rarely matches the books because much of what happens on the shop floor is never entered. Material is used but not booked. Rejected parts and offcuts sit in bins. Stock lies on the floor or at a job worker while the books still show it in stores. The same part exists under two names. Negative stock lets all of this through without anyone noticing, and a wrong opening stock carries the error forward every year.
The fix has two halves. First, a proper physical stock verification: count everything in every location, and explain each difference before you adjust anything. Second, remove the causes, so the next count matches. This guide covers both, with a count format you can copy into Excel, a worked example, and how the difference is treated in the accounts and under GST.
Book stock is a calculation: opening stock, plus everything received, minus everything issued, as entered. Physical stock is what is actually on the racks. The two only agree if every movement in between was entered against the right item, in the right place, for the right quantity.
In many plants there are three numbers, not two. The stores register says one thing, the Excel sheet kept by production or accounts says another, and the shop floor shows a third. Each is updated by a different person at a different time, so each drifts in its own way.
Theft and damage do happen. But before you write anything off, look for movements nobody entered. That is often where the gap starts, and it is the part you can fix.
The register, the Excel sheet and the accounting software are each treated as the stock record, so none of them really is. When they disagree, people pick the number that suits the conversation.
Fix: Make one system the book of record for stock and stop updating the others. Paper can still record what happens at the gate, but stock balances come from one place.
Material goes from stores to the line and the line uses it, but nobody records what was used. Or production is entered once a week, in one lump, from memory. The books keep the raw material that the racks no longer have.
Fix: Book production every day against a bill of materials, so the raw material it used is deducted automatically. Our guide to multi-level BOMs in ERPNext shows how sub-assemblies fit in. GST law expects the same discipline: a manufacturer must keep monthly production accounts showing the raw materials used and the goods made, including waste and by-products (CGST rule 56(12)).
A part fails on the line and goes into a red bin. Offcuts go into the scrap drum. Neither is entered, so the books still count them as good stock.
Fix: Book every rejection the same day, with its reason, into a separate rejected or scrap location. Add scrap to the bill of materials so it comes back into stock when you manufacture. In current ERPNext, that is the BOM's Secondary Items table, with the type set to Scrap.
Material handed to the line without a transfer entry still sits in stores in the books. Count only the stores and you see a shortage. Count the floor too and the stock is all there, just in a different place.
Fix: Give the production floor its own warehouse, and move material to it with a transfer every time it leaves stores.
Castings out for machining, parts out for plating or powder coating. They left on a challan, but in the books they never left stores. Or they left, came back, and the return was never entered.
Fix: Keep a warehouse for material at job workers and send and receive against it. Before a count, ask each job worker for a written statement of your material they hold.
If the system lets an item go below zero, a missing receipt or transfer never stops anyone. The issue goes through, the item shows minus 40, and nobody looks until the count. Negative stock also upsets valuation. ERPNext's own setting for negative batch stock warns that it "may lead to incorrect valuation rates".
Fix: Block negative stock. Then a shortfall stops the entry on the day, and someone has to find the missing receipt or transfer while people still remember it.
"Bearing 6203" and "6203 ZZ bearing". Purchase receives into one, production consumes from the other. One goes negative, the other keeps growing, and the total is right only if you add them up by hand. Duplicates are often made by someone who searched, did not find the item, and created a new one.
Fix: Let one person create items, with a naming rule and item codes. Everyone else searches first. Merge the duplicates you already have, moving their stock and history to the item you keep.
When the system started, the opening stock was copied from an old register, or from a closing balance nobody had counted. Every report since has carried that error.
Fix: Count the item and post the count as a fresh opening on the count date. If you are moving from Tally, a count close to the cut-over date gives you an opening you can trust. Our Tally to ERPNext migration guide covers the cut-over.
Wire bought in kg and issued in metres. Bolts bought in boxes of 100 and issued in pieces. If someone enters a box as one piece, the books are off by a factor of 100.
Fix: Keep one stock unit per item, and set the purchase and issue units with their conversion on the item master, not in someone's head.
Goods arrive and get used before the receipt is entered. Finished goods leave before the invoice is made. On count day, these look like shortages or excess.
Fix: Enter receipts when material arrives, not when the bill reaches accounts. On count day, note the last receipt, issue and dispatch numbers before counting starts, and hold movement until the count is done.
Once these ten are dealt with, what is left should be small: genuine loss, damage, or a miscount.
Use one sheet per location. Print the first six columns for the count team, and fill in the rest after counting, so the count stays blind. You can copy this table straight into Excel.
| Sr | Item code | Item name | Unit | Location | Counted qty | Book qty | Difference | Rate (₹) | Value of difference (₹) | Reason and action |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | BRG-6203 | Bearing 6203 | nos | Stores, rack B2 | 1,040 | 1,200 | -160 | 45 | -7,200 | 135 on the line, 25 rejected: transfer and book the rejection |
| 2 | BRG-6203 | Bearing 6203 | nos | Production floor | 135 | 0 | +135 | 45 | +6,075 | Issued without a transfer entry |
| 3 | BRG-6203 | Bearing 6203 | nos | QC bin | 25 | 0 | +25 | 45 | +1,125 | Rejected on the line, not booked |
| 4 |
The figures are made up for illustration. At the top of each sheet, note the company, location, date and time of the count, the cut-off document numbers, the sheet number and the count team. At the bottom, leave space for "counted by", "checked by" and "approved by", with signatures. Add a batch or lot column if you track batches.
A full count needs the plant to stop, and many factories cannot stop for a day. Cycle counting spreads the work: you count a few items every day or week, so every item is counted over a cycle without stopping production.
How to run it:
Every difference should end up in one of five places.
| What you found | What to do |
|---|---|
| A movement nobody entered: consumption, a receipt, a rejection, scrap | Enter it on its real date |
| Stock in the wrong place: floor, job worker, quality hold | Transfer it |
| The same item under two codes | Merge the items |
| A counting mistake | Recount |
| A real loss or gain | Adjust through a stock reconciliation, with the reason written down |
Only the last row is a true adjustment. If you post the raw count without this step, you write off stock that was used, moved or sitting under another code, and the same causes come back next year.
Two accounting standards cover inventory in India: AS 2 and Ind AS 2. Your CA will know which one applies to you. On the points that matter here, they agree:
How the loss is shown in the final accounts is your CA's call. Your job is to give them a clear list: item, quantity, value at cost and the reason.
Three parts of the GST law matter here:
Put together: a loss you have recorded, with a reason, is far better than a gap you cannot explain. If you use ERPNext with the India Compliance app, a credit reversal can be posted as a Journal Entry of type "Reversal Of ITC", which the app's GSTR-3B report picks up.
For companies covered by the Companies (Auditor's Report) Order, 2020 (CARO 2020), the auditor has to report:
That last point matters if you borrow against stock. The stock statement you send the bank each quarter has to agree with your books, so a mismatch shows up there too.
A small fabrication and assembly unit counts its stock at year-end. The figures are made up for illustration. Six items show a difference.
| Item | Book qty | Counted qty | First difference | What they found | Fix | Real loss |
|---|---|---|---|---|---|---|
| MS sheet 2 mm (kg) | 4,800 | 4,240 | -560 | 480 kg went into brackets made last week, never entered. 80 kg of offcuts in the scrap drum | Enter the production on its real dates. Book 80 kg as scrap | 0 |
| Bearing 6203 (nos) | 1,200 in stores | 1,040 in stores, 135 on the floor, 25 in the QC bin | -160 in stores | Issued to the line without a transfer. 25 rejected on the line | Transfer 135 to the floor. Book 25 as a rejection | 0 |
| Castings for machining (nos) | 600 in stores | 250 in stores, 350 confirmed by the job worker | -350 in stores | Sent on challan, never moved in the books | Transfer 350 to the job worker's warehouse | 0 |
| Grey paint (litre) | -40 | 15 | +55 | A 60-litre purchase was used before its receipt was entered. 5 litres used on the line, not booked | Enter the receipt on its real date. Book 5 litres as consumption | 0 |
| Front cover 75 (two item codes) | 300 and -120 | 180 | -120 and +120 | The same part created twice. Purchase used one code, production the other | Merge into one item | 0 |
| Brass bush 20 mm (nos) | 1,500 | 1,454 | -46 | No missing entry found after checking receipts, issues and rejections | Write off through a stock reconciliation | 46 nos |
If the store had simply posted the count, the books would have shown losses on MS sheet, bearings and castings and a gain on paint, and none of those would have been true. After investigation, only one item is a real loss: 46 brass bushes. At a valuation rate of ₹85 each, that is ₹3,910.
Notice the paint. Negative stock hid a missing purchase receipt. With negative stock blocked, the issue that took the paint below zero would have been refused, and someone would have entered the receipt that day.
The final steps:
Good inventory management for manufacturing is mostly about booking each movement where it happens, on the day it happens. Here is what standard ERPNext gives you for that. We checked each point against the ERPNext version 16 source code.
Warehouses can be grouped, so you can mirror the real layout:
Our guide to ERPNext for manufacturing covers this setup in more detail.
In Stock Settings, "Allow negative stock" is off by default. There is also an "Allow Negative Stock" tick on each item, which overrides the global setting for that item, so keep that off too. With both off, ERPNext refuses an entry that would take an item below zero and shows an "Insufficient Stock" message with the quantity needed.
One caution for a plant that is already full of negative items: switching the setting off on day one blocks every production entry that uses one of them. Count those items first, then switch it off.
Stock Reconciliation is the document that posts a count:
After an audit, set the "Stock frozen up to" date in Stock Settings. Stock entries before that date can then no longer be created or changed, except by a role you allow.
Tick "Has Batch No" for items you trace by lot and "Has Serial No" for items you track one by one. Decide before the first transaction, because ERPNext does not let you change either once stock has moved.
For manufacturers we work with, we built the following in a custom Frappe app on top of ERPNext. These are not part of standard ERPNext.
We set up and customise ERPNext for manufacturers across India. When stock never matches, we start on the floor: we walk through your stores, line, quality area and job work with your team, set up warehouses that match how material really moves, and help you run the first count and post the reconciliation. Where standard ERPNext is not enough, we build the missing pieces as a custom Frappe app, like the cycle count and counted-stock guard above. See how we work on our ERPNext page, or contact us to talk it through.
Physical stock verification is counting the stock actually present in every location, such as stores, the production floor, finished goods, quality hold and job workers, and comparing it with the stock in your books. Each difference is investigated, explained and then corrected.
No. Physical stock verification is the count. Stock reconciliation is matching that count with the books and posting the correction. Missing entries, wrong locations and duplicate items should be fixed first, so only real losses or gains go through as an adjustment.
There is no single right answer. CARO 2020 asks the auditor whether management verified inventory at reasonable intervals and whether the coverage and procedure were appropriate. A practical rhythm is a full count at year-end and cycle counts in between, with high-value and fast-moving items counted more often.
Tally's help describes a "Warn on negative Stock Balance" option, set from F12 (Configure) in a sales voucher, which shows a warning when stock would go negative. To see items already below zero, open the Reorder Status report, press Ctrl+J (Exception Reports) and select Negative Stock Items. In ERPNext, with "Allow negative stock" off, the entry is refused instead.
Section 17(5)(h) of the CGST Act says input tax credit is not available on goods lost, stolen, destroyed or written off. If you claimed credit when you bought those goods, work out the reversal with your CA. Record the loss and its reason in your stock account, because goods you cannot account for can be taxed as if you had supplied them.
For companies covered by CARO 2020, the auditor reports whether inventory was physically verified at reasonable intervals, and whether discrepancies of 10% or more in the aggregate for any class of inventory were found and properly dealt with in the books. Keep the signed count sheets and a note of how each difference was settled.
In a free 30-minute call we map your process and tell you plainly what would change, whether that is Tanush LIMS, ERPNext or something built for you. We reply within 24 hours.