Skip to main content

Building a Multi-Branch Inventory and Sales Management System

How stock really moves between a godown and branches: transfers, in-transit stock, branch pricing, consolidated sales and tracing discrepancies.

5 min read2 views
Building a Multi-Branch Inventory and Sales Management System

A multi-branch inventory and sales management system tracks every unit of stock as it moves: received at a warehouse, dispatched to a branch, in transit on a truck, received and checked, sold at a branch price, returned or written off, and it rolls all branches' sales into one consolidated view. Tarka Raj Jaishi, a full-stack web application developer in Lamki, Kailali, builds these systems with the stock movement mechanics at the centre, because that is where multi-branch businesses in Nepal lose track of goods and money.

Why stock movement is the hard part

#

Selling from one shop is simple: stock comes in, stock goes out. The moment a business has a godown in Dhangadhi and outlets in Lamki, Tikapur and Attariya, stock spends a lot of its life between places. A carton leaves the godown on Monday on a pickup, sits at a hotel stop overnight, and arrives in Tikapur on Tuesday with two pieces broken. If the system only knows "godown" and "Tikapur", those two days and two pieces vanish.

That is why this post focuses on the mechanics of movement rather than general branch management. For the organisational side, covering branch managers, reporting and permissions, see multi-branch business management software. Here the question is narrower: how does each unit get from one location to another without the numbers drifting?

The stock movement types a system must record

#

Every change in stock should be a movement with a type, a source, a destination, a quantity, a user and a time. Stock on hand is never typed in directly; it is calculated from movements. This one rule prevents most discrepancies.

MovementFromToWho records it
Purchase receiptSupplierWarehouse or branchStore keeper, against a purchase bill
Transfer dispatchSending locationIn transitSending store keeper
Transfer receiptIn transitReceiving locationReceiving branch, after counting
Transfer shortage or damageIn transitLoss or damage accountReceiving branch, with photos and reason
SaleBranchCustomerBilling counter
Customer returnCustomerBranch (saleable or damaged)Counter, with original bill
AdjustmentBranchAdjustment accountManager only, with reason

Inter-branch transfers, step by step

#

A transfer is not one event but two, separated by time and distance. Treating it as a single "move 50 units" action is the most common design mistake.

  1. Request: the Tikapur branch requests 20 cartons of cooking oil and 10 bags of rice from the Dhangadhi warehouse.
  2. Approval: the warehouse or head office approves, possibly reducing quantities based on available stock.
  3. Dispatch: the warehouse picks and loads goods, records the dispatch with vehicle and driver details, and prints a transfer note. Stock leaves the warehouse and enters an in transit state.
  4. Receipt: when the goods arrive, the Tikapur branch counts them and records what actually arrived. Only then does stock enter the branch.
  5. Variance: if 20 cartons were sent and 19 arrived, the missing carton is recorded as a transit shortage, linked to the transfer and the driver, and flagged for the manager.

Because in-transit stock is its own location, the owner can always see what is on the road. If a transfer has been in transit for four days, something has gone wrong and the system can raise an alert.

Per-branch pricing

#

Prices are rarely identical across branches. Transport costs make goods dearer in a remote outlet, competition makes them cheaper in a busy bazaar, and a clearance sale may run at one branch only. A practical pricing model:

  • A base price for each product set by head office.
  • Branch price overrides where a branch must differ, with the date range and who set them.
  • Promotions limited to selected branches and dates.
  • Branch staff can sell at the configured price but not change it.
  • Transfer cost: transfers can carry an internal transfer price, so each branch's margin can be measured fairly.

Consolidated sales and stock reporting

#

With every branch writing to the same database, the owner can see the whole business at once:

  • Today's sales by branch, by product and by payment method.
  • Stock on hand per location, including in transit, and its value.
  • Slow-moving stock at one branch that is selling well at another, a natural candidate for a transfer.
  • Reorder suggestions for the warehouse based on combined branch sales.
  • Transfer variance by route and by driver over time.

For branches where the internet is unreliable, sales can be recorded locally and synced when the connection returns, with the system handling the order of events so stock is never double-counted.

Finding and fixing stock discrepancies

#

Discrepancies will happen. The goal is to find them early and know which step caused them.

Cycle counts instead of one annual count

#

Counting everything once a year at Chaitra end means a whole year of errors is mixed together. Cycle counting picks a few product groups each week per branch. The system lists what to count, staff enter the physical count, and the difference is shown immediately.

Tracing a difference

#

When the count differs, the movement history for that item at that branch shows every receipt, transfer, sale and return since the last count. Usually the cause appears quickly: a transfer received without counting, a return put back on the shelf without being recorded, or a sale billed under the wrong item.

Common causes

#
  • Receiving transfers "as sent" without physically counting.
  • Selling a similar item under another product's code because the right one was not in the system.
  • Unit confusion: cartons sent, pieces received.
  • Damaged goods thrown away without an adjustment entry.

The deeper inventory features, such as batches, expiry and reorder levels, are covered in inventory management web applications.

Frequently asked questions

#

What does "in transit" stock mean?

#

It is stock that has left one location but has not yet been counted in at another. Tracking it separately shows exactly what is on the road and makes it obvious when goods go missing between branches.

Can each branch have different prices for the same product?

#

Yes. Head office sets a base price, and branch overrides or promotions can apply to specific branches and dates. Branch staff can sell at those prices but not change them.

What happens if a branch receives fewer goods than were sent?

#

The receiving branch records what arrived. The difference is logged as a transit shortage linked to that transfer, vehicle and driver, and the manager is notified to investigate.

Can a branch keep selling when the internet is down?

#

Yes, if offline billing is built in. Sales are stored locally and synced when the connection returns. This needs careful design and testing, so decide early whether it is required.

How is the cost of a multi-branch inventory system decided?

#

It depends on the number of branches and warehouses, product count, whether batches or expiry are tracked, offline needs and reporting requirements. The cost guide explains these factors.

Discuss your project with Tarka Raj Jaishi

#

If stock keeps going missing between your godown and branches, get in touch to work out how transfers should flow in your business.

Share this article

Newsletter

New posts in your inbox. Confirm by email, unsubscribe any time.

Comments

Posting as a guest

View all