Branch Transfers: The Part of Courier Software Nobody Demos

Logistics, courier & cargo6 min read

Consignments moving between branches is where most courier systems in Nepal lose parcels, time and accountability. What the transfer model has to get right.

A courier demo almost always shows a parcel booked and delivered in the same city. That is the easy case. The case that actually determines whether your network works is a parcel booked in Birgunj, bagged with thirty others, loaded onto a vehicle, unloaded at a Kathmandu hub, re-sorted, sent onward to Bhaktapur, and delivered by someone who has never spoken to the person who booked it.

Every one of those steps is a handover. Handovers are where parcels go missing and where accountability disappears.

Bags, not parcels

The first thing a transfer model has to get right is that parcels do not move individually between branches. They move in bags, sacks or cartons, and those containers are the unit that gets loaded, sealed, manifested and handed over.

If the system only tracks individual consignments, then every transfer requires scanning every parcel at both ends. In practice, staff will scan the first few and mark the rest in bulk, and your tracking data becomes fiction.

What works instead:

  • A bag is a real object in the system with its own identifier
  • Parcels are assigned into a bag at origin
  • The bag is manifested to a destination branch and sealed
  • The bag is received at destination as one scan, which implicitly receives everything inside it
  • Any discrepancy — a parcel in the bag that was not on the manifest, or a manifested parcel that is not in the bag — is raised at that moment, at that branch, against that person

That last point is the entire value. A discrepancy caught at receipt is a five-minute conversation. The same discrepancy caught a week later during a merchant dispute is unsolvable.

Custody has to be a chain, not a status

Most systems model location as a field on the parcel: “currently at Kathmandu hub”. That is a snapshot, and snapshots do not answer questions.

What you need is an append-only sequence of custody events. Parcel was in the custody of the Birgunj booking clerk, then the Birgunj loading staff, then the vehicle, then the Kathmandu unloading staff, then the sorting table, then the Bhaktapur bag, then the rider. Each event has a person, a timestamp and a place.

When a parcel goes missing, you do not ask where it is. You ask who had it last and when the chain stopped. Those are answerable questions.

In-transit is not one state

“In transit” covers a parcel sitting in a bag waiting for a vehicle that has not left, a parcel on a vehicle on the highway, and a parcel that arrived at a hub two days ago and has not been sorted. Those are operationally very different situations and only one of them is fine.

Splitting them out lets you see the thing that actually kills delivery times in a branch network: parcels waiting at a hub, not parcels on the road. Most delay in Nepali courier networks is dwell time at transfer points, and you cannot manage it if the system reports it as the same state as movement.

Useful states:

  • Bagged, awaiting dispatch (with age)
  • Dispatched, in transit
  • Arrived, awaiting sort (with age)
  • Sorted, awaiting onward bag

Two of those four have an age that should be alarming somebody.

Franchise branches see only their own

Nepal’s courier networks run heavily on franchise and agent branches. A franchise partner is a separate business. They need to book, receive, deliver and settle — and they should not see the network’s full consignment list, other branches’ merchant relationships, or network-wide revenue.

This is a permission model question and it has to be built in from the start. Bolting branch-level data isolation onto a system that assumed one company is a rewrite of the query layer, not a settings change.

Inter-branch settlement

If a parcel is booked at branch A and delivered by branch B, revenue has to split. If the COD cash is collected by branch B, it has to flow to the network and then to the merchant, with branch B’s share retained.

This gets complicated fast when a parcel touches three branches, or when a return travels back along the same chain and charges have to be reversed. Handling it manually works up to a point and then consumes a full-time person.

The system should be computing, per branch, per period: consignments booked, consignments delivered, revenue share earned, COD collected, COD remitted, and net position with the network. If that is a monthly spreadsheet exercise, the network cannot grow past the person doing it.

The test

Ask your current system, or a system you are evaluating, to answer this in under a minute:

Bag KTM-4471 was received at Bhaktapur yesterday with 28 parcels manifested and 27 scanned. Which parcel is missing, who bagged it in Birgunj, who loaded the vehicle, who received the bag, and what is the merchant owed?

If that takes phone calls, the transfer model is not doing its job.

We build the logistics management system that courier networks across Nepal use to run exactly this — bagging, manifesting, custody chains and inter-branch settlement. If your branch transfers are held together by WhatsApp and trust, talk to us.

Read next

Stay Updated with the Latest Tech