Short answer
Most stock losses in Tanzanian shops come from five places: goods that never arrived, sales not recorded, damaged or expired items written off in nobody's book, theft, and counting mistakes. Receive every delivery against an order, barcode every product, record each adjustment with a reason, count a few lines every week and reconcile the gaps in shillings.
On this page
Every shop owner in Tanzania knows the feeling. The shelves look full, sales seem steady, yet the money at month end does not match what the business should have made. Very often the gap is stock that left the shop without being paid for, or stock that was paid for but never arrived. This guide covers seven habits that close those gaps, a worked stock reconciliation you can copy, and what a barcode system actually involves.
Where stock goes missing
Before fixing anything, it helps to name the leaks. In most dukas, wholesalers and mini-supermarkets they fall into the same few groups.
| Source of loss | How it usually happens | What reveals it |
|---|---|---|
| Short deliveries | Supplier delivers 18 cartons, the invoice says 20, nobody counts at the door | Checking goods received against the purchase order |
| Unrecorded sales | A sale is taken in cash or to a personal M-Pesa number and never entered | Stock falls faster than recorded sales |
| Damage and expiry | Broken bottles or expired yoghurt are thrown away without a record | Adjustments with a reason code |
| Theft | Staff or customers remove goods | Spot counts on high-value lines |
| Counting and entry errors | Wrong unit (carton vs piece), wrong item scanned, typing 100 instead of 10 | Barcodes and reconciliation |
Each of the seven habits below targets one or more of these rows.
7 ways to stop stock losses
1. Receive every delivery against a purchase order
Raise a purchase order (PO) for what you expect, then check the delivery against it before the driver leaves. Record a goods received note (GRN) for the quantities that actually arrived, not the quantities on the supplier’s invoice. If 2 of 20 cartons are missing, the GRN says 18, your stock goes up by 18, and the supplier ledger shows you owe for 18.
This habit stops a quiet and expensive loss: paying for goods you never received.
2. Give every product one identity
Duplicates cause chaos. If “Sugar 1kg”, “Sukari 1 kg” and “Sugar Kilo” all exist as separate items, sales land on one and deliveries on another, and neither count makes sense. Clean your product list once:
- One name per product, in the language your staff actually use.
- One unit of sale (piece, kg, carton) and a clear rule for converting cartons into pieces.
- One barcode per item, whether from the manufacturer or printed by you.
- A category for each item, so reports can group them.
3. Record every adjustment with a reason
Stock changes for reasons other than sales and purchases. A crate of eggs breaks, a box of biscuits expires, the owner takes soap home. Each of these should be an adjustment with a reason attached: damaged, expired, own use, found in count. Without a reason, every loss looks like theft and you cannot tell which problem to fix.
At month end, look at adjustments by reason and by value. A pattern of “damaged” on one product line usually points to poor storage or handling, which is cheaper to fix than to keep writing off.
4. Count a little, often
A full stock take once a year is too late to find out who was on shift when 30 bottles of cooking oil disappeared. Cycle counting means counting a small group of items regularly:
- Every week: your 10 to 20 fastest sellers and anything expensive and easy to pocket (phones, perfume, spirits, airtime scratch cards).
- Every month: one full category, rotating through the shop.
- Every quarter or year end: a full count, ideally with the shop closed.
Count blind. Give the counter a list of items without the expected quantities, so they write down what they see.
5. Limit who can change what
Many losses happen through the till itself: a sale deleted after the customer leaves, a price changed for a friend, a stock adjustment made to cover a gap. Decide which roles can do what. A cashier sells. A manager approves refunds, price changes and adjustments. The owner sees everything. Make sure every action carries a user name so you can trace it.
6. Track batches and expiry dates
For pharmacies, food shops and agrovets, expiry is a major source of loss. Record the batch and expiry date when stock is received, then check an expiry report each week and move short-dated items to the front or onto promotion. Selling a product at a small discount a month before expiry beats throwing it away.
7. Record every transfer between branches
If you run two shops, say one in Kariakoo and one in Mbagala, stock moves between them constantly. A phone call and a boda boda leave no record, so use a transfer in the system: branch A sends 10 units, its stock drops by 10; branch B confirms receipt, its stock rises by 10. If only 8 arrive, the gap is visible on the same day.
How to run a stock reconciliation
Reconciliation turns a count into decisions. Here is the routine, using an example of a general shop in Mwanza checking five lines on a Saturday evening after closing.
- Freeze activity. Finish all sales, receipts and transfers for the day so the system figure is final.
- Count blind. Two people count each item; one counts, one writes.
- Compare. Put the system quantity next to the counted quantity.
- Value the gap. Multiply each difference by the buying cost, so you see the loss in shillings.
- Investigate before adjusting. Check unposted deliveries, pending transfers, sales entered under the wrong item and unit errors.
- Adjust with a reason. Only after checking, record the remaining difference as an adjustment with the best-known reason.
- Act. Decide one change for next week: tighter receiving, a moved shelf, a different person on the till.
The illustrative results might look like this:
| Item | System qty | Counted qty | Difference | Cost per unit (TSh) | Value of gap (TSh) |
|---|---|---|---|---|---|
| Rice 25 kg bag | 42 | 40 | -2 | 62,000 | -124,000 |
| Cooking oil 3 L | 60 | 54 | -6 | 14,500 | -87,000 |
| Sugar 1 kg | 120 | 121 | +1 | 2,900 | +2,900 |
| Bar soap (carton of 24) | 15 | 15 | 0 | 21,000 | 0 |
| Toothpaste 100 g | 48 | 41 | -7 | 2,300 | -16,100 |
| Total | -224,200 |
In this example the rice gap turns out to be a delivery recorded as 20 bags when 18 arrived, so the fix belongs at the receiving door. The cooking oil and toothpaste gaps have no paperwork explanation and both are small, easy-to-carry items, so they go on the weekly spot-count list. The extra bag of sugar was a sale scanned as the 2 kg pack, which a barcode on each size would have prevented.
Barcode systems: what you need
A barcode system has three parts: codes on the products, a scanner at the till and on the store floor, and software that knows which code belongs to which item.
Codes. Most packaged goods already carry a manufacturer barcode. Scan it once when you create the product and it is linked from then on. For goods you pack yourself (rice in 1 kg bags, spices, hardware sold loose) you need your own codes printed on labels. Use one code per product and size, and stick labels where they will not rub off.
Scanners. A basic USB scanner that plugs into a laptop or desktop is enough for one till. Wireless scanners help when you receive goods in a store room away from the counter. Ask your hardware supplier for current prices and confirm that the scanner works as a keyboard input, which is how most POS systems read it.
Software. The POS should find an item instantly when its code is scanned, and the same code should work when receiving, counting and transferring stock. That way, counting a shelf becomes scanning a shelf, and there are fewer unit mistakes.
A sensible rollout for an existing shop is to label your top 100 sellers first, run a week with them, then add the rest category by category.
Weekly stock control checklist
- Every delivery this week has a GRN that matches what physically arrived.
- No supplier invoice was paid without a matching GRN.
- All adjustments this week have a reason, and a manager approved them.
- Top 20 sellers and high-value items counted blind; gaps valued in TSh.
- Expiry report checked; short-dated stock moved forward or discounted.
- Transfers between branches confirmed at both ends.
- Low-stock list reviewed and purchase orders raised.
- Deleted sales, refunds and price changes reviewed by user.
Doing this in software
You can run every habit above on paper and Excel, and some careful owners do. The cost is time: matching notebooks, retyping counts and chasing branch figures by phone. Inventory software makes the records automatic as a side effect of selling, receiving and moving stock.
SmartBiashara’s inventory management module covers the pieces this guide relies on: real-time stock, adjustments, batch and expiry tracking, inter-store transfers, purchase orders, GRNs and supplier ledgers, with barcode scanner support at the till and Excel bulk import for your product list. Admin, Manager and Cashier roles let you decide who can do what. It sits inside a wider ERP system that also handles sales, accounting and reports, so a stock loss shows up in your profit figures as well as the stock report.
Plans are priced in TSh and exclude VAT:
| Plan | Monthly (TSh) | Locations | Products |
|---|---|---|---|
| Starter | 15,000 | 1 | 1,000 |
| Basic | 35,000 | 3 | 5,000 |
| Standard | 45,000 | 5 | 25,000 |
| Enterprise | 55,000 | 50 | Unlimited |
See the pricing page for yearly rates and full limits. Every plan starts with a 14-day free trial with no credit card required, which is enough time to import your products, label your top sellers and run two weekly spot counts before you decide.