The Scenario: “Amazon Farms”
To demonstrate exactly how StoreHarmony handles the messy reality of delivering perishable goods — where dispatched weight never quite matches received weight — let’s walk through an actual delivery run for a meat distribution company.
Amazon Farms needs to deliver a B2B order to ABC Restaurant. The customer ordered:
| Product | Ordered Qty | Unit Price | Expected Total |
|---|---|---|---|
| Boneless Beef | 100 kg | ₦4,500/kg | ₦450,000 |
| Chicken Breast | 30 kg | ₦3,800/kg | ₦114,000 |
| Expected Totals | 130 kg | — | ₦564,000 |
The problem: Fresh meat loses moisture in transit. By the time the rider arrives at ABC Restaurant, the beef weighs 98 kg and the chicken weighs 29.5 kg. The customer weighs the delivery and pays only for what they received — not what was dispatched.
Without tracking this variance, Amazon Farms would either overcharge the customer (unfair), manually adjust invoices after the fact (error-prone), or silently absorb the loss (invisible to management).
Part 1: Customer Delivery (B2C)
Step-by-Step Software Execution
Step 1: Create the Invoice
The sales team opens StoreHarmony, navigates to Sales → New B2B Invoice, selects ABC Restaurant, adds the products, and saves.
| Field | Value |
|---|---|
| Customer | ABC Restaurant |
| Boneless Beef | 100 kg at ₦4,500/kg |
| Chicken Breast | 30 kg at ₦3,800/kg |
| Delivery Notes | Saturday morning, contact Mr Chukwu |
| Invoice Status | CREATED |
- Ledger Impact: None.
info No Inventory Impact Yet
A created invoice is just a plan. No stock has been touched, no batches deducted, no costs committed. You can edit or cancel freely at this stage.
Step 2: Dispatch the Goods
The goods are packed and ready. The manager opens the invoice, assigns rider John Adeyemi, and clicks “Dispatch”.
StoreHarmony immediately:
- Deducts 100 kg beef and 30 kg chicken from inventory
- Uses each product’s declared deduction strategy — beef is set to FEFO (expires first), so the batch closest to its expiry date is taken first
- Records exactly which batches were consumed and at what cost
- Prints a dispatch note for the rider
| Metric | Value |
|---|---|
| Stock Deducted | 100 kg beef + 30 kg chicken |
| Batch Strategy | FEFO (beef), FEFO (chicken) — both perishable |
| Dispatch Note | Printed for rider |
| Invoice Status | DISPATCHED — awaiting confirmation |
warn Stock Has Left the Building
This is when inventory changes — at dispatch time, not when the sale is finalised. The system records which batches were used and at what cost, so the variance calculation later uses the actual batch cost, not an average.
Need to see all pending dispatches? Go to Sales → Pending Delivery Confirmations. This screen shows every dispatched invoice awaiting confirmation — with customer, rider, date, and how many hours it’s been pending. The oldest dispatches appear at the top.
Step 3: Confirm the Delivered Weight
The rider returns and reports the delivery weights. A back-office staff member opens the invoice from Sales → Pending Delivery Confirmations and enters the actual received weights in the Delivery Confirmation Panel:
| Product | Dispatched | Confirmed | Variance | Price/kg | Billable |
|---|---|---|---|---|---|
| Boneless Beef | 100.0 kg | 98.0 kg | -2.0 kg | ₦4,500 | ₦441,000 |
| Chicken Breast | 30.0 kg | 29.5 kg | -0.5 kg | ₦3,800 | ₦112,100 |
| Totals | 130.0 kg | 127.5 kg | -2.5 kg (1.9%) | — | ₦553,100 |
As the staff types each confirmed weight, the system instantly recalculates the variance, the billable amount, and the revenue adjustment.
| Metric | Value |
|---|---|
| Original Invoice Total | ₦564,000 |
| Adjusted Billable Total | ₦553,100 |
| Revenue Adjustment | -₦10,900 |
| Variance Percentage | 1.9% of dispatched weight |
info Customer Pays for Confirmed Weight
The customer pays ₦553,100 for 127.5 kg — not ₦564,000 for 130 kg. The confirmed weight becomes the billable quantity. The customer should never pay for product they didn’t receive.
Step 4: Post to Sale
The staff clicks “Post to Sale”. StoreHarmony finalises the transaction:
| Action | Detail |
|---|---|
| Sale Created | 98 kg beef + 29.5 kg chicken (confirmed weights) |
| Customer Billed | ₦553,100 |
| Variance Recorded | 2.5 kg transit loss — visible in reports |
| Audit Trail | Created for full traceability |
| Invoice Status | DISPATCHED → SOLD |
- Ledger Impact: Sale posted at confirmed quantities. Variance flow entry created (informational).
tip No Second Stock Deduction
The system does NOT deduct more stock at this point. The full 130 kg was already removed from inventory at dispatch (Step 2). The variance entry simply records that 2.5 kg was lost in transit. Your inventory already shows the correct levels.
Step 5: Send a Top-Up (Optional)
ABC Restaurant insists on the full 100 kg of beef they ordered. The manager clicks “Send Top-Up” on the confirmation screen.
| Product | Top-Up Qty | Customer Charge | Stock Deduction |
|---|---|---|---|
| Boneless Beef | 2.0 kg | ₦0 (complimentary) | ✅ Real — leaves the shelf |
| Chicken Breast | 0.5 kg | ₦0 (complimentary) | ✅ Real — leaves the shelf |
- Ledger Impact: 2.5 kg physically deducted from inventory at ₦0 revenue. This is a pure business cost.
warn Top-Ups Are Real Deductions
Unlike the variance entry (which is just a record), a top-up physically removes stock from your shelf. The customer still pays ₦553,100 for the original confirmed weights. The top-up is an additional cost the business absorbs to keep the customer satisfied.
The Financial Reality
| Metric | Value |
|---|---|
| Customer Paid | ₦553,100 (for 127.5 kg) |
| You Expected | ₦564,000 (for 130 kg) |
| Revenue Lost | ₦10,900 (customer didn’t pay for 2.5 kg) |
| Product Cost of Transit Loss | ₦10,880 (2.5 kg × weighted avg batch cost) |
| Total Business Impact | ₦21,780 |
If a top-up was sent, add the cost of the replacement product (another ₦10,880 with zero revenue against it).
The Zero-Variance Path
If the rider delivers and every product arrives at full weight:
- Open the confirmation screen
- Confirmed weights default to dispatched weights
- Variance shows 0 for every line
- Click “Post to Sale”
- Sale posts exactly as it would without the variance feature
No extra steps, no extra clicks. The variance workflow adds zero friction for clean deliveries.
Part 2: Store-to-Store Transfer (B2B)
Why Transfers Are Different
When you deliver to a customer, stock was already deducted at dispatch time. The variance is informational — it makes the loss visible but doesn’t change your stock levels.
When you transfer between your own stores, the receiving store creates new inventory from what arrives. If Store B blindly posts 100 kg but only 98 kg is physically on the shelf, they have phantom stock — inventory that exists in the system but not in reality. Their stock counts will never balance.
danger Phantom Stock Warning
Posting the dispatched quantity instead of the actual received quantity creates phantom stock. Store B will try to fill customer orders with 2 kg of beef that doesn’t exist. Stock counts will fail. Valuation reports will be wrong.
The rule: The receiving store posts only what it physically received.
Step-by-Step Software Execution
Step 1: Send Stock from Warehouse (Store A)
The warehouse manager navigates to Inventory → Transfer Stock, selects the destination store, picks products, and clicks “Send”.
| Field | Value |
|---|---|
| Source | Store A (warehouse) |
| Destination | Store B (retail branch) |
| Boneless Beef | 100 kg |
| Deduction Strategy | FEFO (beef declares it — automatic) |
| Transfer Status | QUARANTINED — in transit |
- Ledger Impact: 100 kg deducted from Store A’s inventory. Transfer document created.
Step 2: Receive and Weigh at Store B
The goods arrive at Store B. The receiving staff navigates to Inventory → Pending Transfers, opens the transfer, and enters the actual received weight:
| Product | Dispatched | Received | Variance | Status |
|---|---|---|---|---|
| Boneless Beef | 100.0 kg | 98.0 kg | -2.0 kg | Transit Loss |
Step 3: Post the Receipt
The staff clicks “Accept and Post”. StoreHarmony:
| Action | Detail |
|---|---|
| Stock Added to Store B | 98 kg (actual received — not 100 kg) |
| Batch Cost & Expiry | Carried from Store A’s original batches |
| Variance Recorded | 2 kg transit loss on transfer document |
| Inter-store Payable | Based on 98 kg — Store B pays only for what it got |
| Transfer Status | QUARANTINED → RECEIVED |
The Enterprise Impact
| Metric | Value |
|---|---|
| Store A Deducted | 100 kg |
| Store B Received | 98 kg |
| Enterprise Net Loss | 2 kg (real shrinkage) |
| Loss Value | ₦8,480 (2 kg × ₦4,240 batch cost) |
| Store B Payable | Based on 98 kg × transfer price |
warn Enterprise-Level Shrinkage
The 2 kg doesn’t belong to Store A (they dispatched correctly) or Store B (they received correctly). It’s an enterprise-level transit loss — the cost of moving goods between locations. It appears in the transfer variance report as shrinkage.
Part 3: Returns with Weight Loss
Weight loss also happens when goods come back — either from a customer or between stores.
The Scenario
ABC Restaurant returns 5 kg of beef. By the time it reaches Amazon Farms, the beef weighs 3.5 kg.
The manager navigates to Sales → Process Return, selects the customer and original sale, and enters both quantities:
| Field | Value |
|---|---|
| Returned (customer stated) | 5.0 kg |
| Received (store weighed) | 3.5 kg |
| Return Variance | -1.5 kg |
StoreHarmony handles the difference:
| Action | Quantity | Explanation |
|---|---|---|
| Customer Credited | 5.0 kg | Commercial return — customer gets money back for 5 kg |
| Stock Restored | 3.5 kg | Physical stock — only what was actually received enters inventory |
| Return Loss Posted | 1.5 kg | Variance entry — posted for reporting and audit |
info Return Credits vs. Physical Stock
The customer gets credited for 5 kg (the commercial agreement). Your inventory increases by only 3.5 kg (what you physically received). The 1.5 kg difference is return transit loss — tracked separately for management visibility.
Part 4: Products and Deduction Strategy
StoreHarmony uses the right batch ordering for each product automatically. You set this once during product setup:
| Product | Strategy | How It Works |
|---|---|---|
| Boneless Beef | FEFO | Takes from the batch closest to expiry first |
| Chicken Breast | FEFO | Takes from the batch closest to expiry first |
| Cooking Oil (5L) | FIFO | Takes from the oldest batch first |
| Paper Towels | FIFO | Takes from the oldest batch first |
To set the strategy: when creating a product, look for the “Deduction Strategy” field. Set to FEFO for perishables. Leave as FIFO (or blank) for everything else.
Once set, your staff never choose FIFO or FEFO during a sale or transfer. The product itself declares its strategy, and the system follows it automatically — across sales, transfers, write-offs, and production.
Part 5: Reports
Transit Variance Report
Navigate to Reports → Transit Variance. Shows every delivery or transfer where confirmed weight was less than dispatched weight:
| Date | Customer / Store | Product | Rider | Sent | Received | Loss | Value |
|---|---|---|---|---|---|---|---|
| 20 Apr | ABC Restaurant | Boneless Beef | John A. | 100.0 | 98.0 | 2.0 | ₦8,480 |
| 20 Apr | ABC Restaurant | Chicken Breast | John A. | 30.0 | 29.5 | 0.5 | ₦1,800 |
| 18 Apr | XYZ Hotels | Boneless Beef | Chidi O. | 200.0 | 194.0 | 6.0 | ₦25,440 |
| 17 Apr | Store B (transfer) | Goat Meat | — | 50.0 | 49.0 | 1.0 | ₦6,500 |
| April Total | 380.0 | 370.5 | 9.5 kg | ₦42,220 |
Variance by Rider
Navigate to Reports → Variance by Rider. Groups losses by delivery staff — identify who has the highest variance rates and whether the issue is handling, route, or equipment.
Variance by Product
Navigate to Reports → Variance by Product. Shows which products lose the most weight — helps decide where to invest in packaging improvements.
All reports support date range filtering, Excel export, PDF export, and printing.
Part 6: Tips for Reducing Transit Loss
| # | Tip | Impact |
|---|---|---|
| 1 | Invest in insulated packaging. Insulated bags and boxes reduce fluid loss by 50-60% for short-distance deliveries. | High — low cost, immediate results |
| 2 | Use cold chain vehicles. Refrigerated transport significantly reduces moisture loss for routes over 30 minutes. | High — requires investment |
| 3 | Minimize transit time. Plan routes for speed, not just distance. | Medium — operational change |
| 4 | Weigh at both ends. Always weigh at dispatch and at receipt. Without both, disputes are unresolvable. | Critical — foundational practice |
| 5 | Review reports weekly. Look for patterns: riders, routes, products, days of the week. | Medium — drives decisions |
| 6 | Set variance thresholds. e.g., 2% for beef, 1% for chicken, 0.5% for frozen. Flag exceedances. | Medium — creates accountability |
| 7 | Train riders on handling. Proper stacking, sun avoidance, minimizing stops. | Medium — requires ongoing effort |
| 8 | Consider vacuum-sealed portions. Near-zero transit loss. Packaging cost may be less than the loss it prevents. | High — eliminates the problem |
Why This Matters
This case study demonstrates several key capabilities:
- Invoice-to-sale variance gate — the confirmed weight becomes the billable quantity, not the dispatched weight
- Phantom stock prevention — receiving stores post only actual received quantities, never dispatched quantities
- Per-product deduction strategy — FEFO for perishables, FIFO for everything else, set once and applied everywhere
- Financial accuracy — revenue reflects what the customer actually received and paid for
- Transit loss visibility — every kilogram of variance is tracked, categorized, and reportable
- Audit trail — every dispatch, confirmation, and variance entry is logged with who, when, and how much
Whether you’re delivering beef to restaurants, shipping dairy to retailers, or transferring frozen goods between your own stores — the transit variance workflow ensures your costs are truthful and your losses are visible.