Softwiro
Delivery and shipping

Delivery management with your own couriers: tracking orders and cash on delivery

Courier assignment, zone pricing, live tracking, cash-on-delivery reconciliation and failed deliveries, in the order you need them.

9 min read
A courier in a red helmet and face mask rides a motorbike down a tree-lined street with parcels strapped on the back.
Photo: Thang Nguyen · Pexels

You deliver orders with your own couriers. Orders are taken by phone, WhatsApp or your online store, a courier takes a bundle in the morning, and by evening you want three answers without calling anyone: where is every order, which ones failed and why, and exactly how much cash each courier is holding that belongs to you. This guide is the set of steps that gets you to those three answers, whether you use a spreadsheet, a notebook or a delivery app (تطبيق توصيل).

Step 1: Give every order one owner and one status

Most delivery chaos starts with an order that nobody clearly owns. Before you buy anything, decide that every order has exactly one assigned courier at any moment and exactly one status from a short, fixed list. A workable list is: created, assigned, picked up, out for delivery, delivered, failed, returned. Seven words are enough. If your team invents new statuses on the fly ("customer asked to wait", "on the way maybe"), you cannot count anything later.

Assignment is a decision, not a message. Write down how you decide who gets which order: by zone, by load, by the courier's remaining capacity, or by the time promised to the customer. Even a simple rule, such as one courier per zone group per day, makes it possible to compare couriers fairly at the end of the week. A courier who gets the far, difficult zone will always look slower than one who gets the nearest streets, unless the assignment is recorded.

Step 2: Price by zone, not by feeling

One flat delivery fee is either too high for the nearby customer, who then cancels, or too low for the far one, where you quietly lose money on fuel and courier time. Zone pricing fixes this: you divide your coverage area into governorates or zones and attach a fee to each.

To set the fees, take a week of real orders and calculate three numbers per zone: the average time a courier spends per delivery, the distance, and the failure rate. Then price the zones with the cost of a courier-hour in mind. Two rules keep this honest. First, the fee the customer sees must be calculated by the system or the sheet, never typed by whoever answers the phone. Second, keep a zone table in one place, so that changing a fee in March does not leave three different prices in three people's phones.

Step 3: Track the order, not the courier's phone call

Customers call to ask "where is my order?" because you cannot answer. There are two layers of tracking and you can start with the first.

Status tracking. Each change of status is recorded with a time and who made it. That gives you a history per order, and it lets you answer a customer in ten seconds instead of two phone calls. It also lets you measure what matters: time from creation to pickup, and from pickup to delivery.

Location tracking. Live location on a map shows where the courier is during a trip. It is useful for dispatch (who is closest to the new urgent order) and for the customer-facing message "your courier is nearby". Two cautions. Location is personal data about your courier, and in Egypt personal data law expects a stated purpose, and consent, before collection (see the sources below). Tell your couriers in writing what is tracked, when, and why, and do not track outside working trips. And a dot on a map does not replace a status: a courier can be standing outside the building and still fail the delivery.

Step 4: Cash on delivery is a ledger, so run it like one

This is the part that decides whether delivery makes money. Cash on delivery (الدفع عند الاستلام) turns every courier into a small cashier. International postal guidance describes cash on delivery as an option that gives buyers who are wary of paying online a lower-risk way to buy, which is part of why stores keep offering it. This guide does not quote a share of orders paid in cash in Egypt or the Gulf, because no official figure was verified for it; use your own numbers. For a deeper look at the payment choices behind it, read Taking payments online in Egypt and the Gulf.

The core idea is simple: for each courier and each day, the cash they owe you is a number you can calculate before they arrive, and the cash they hand over is a number you count. The difference must be explained.

Expected cash for a courier on a day = the sum of the amounts due on orders marked delivered, for orders paid on delivery, minus anything the customer paid in advance (card, wallet, bank transfer).

Then run a short handover routine:

  • The courier closes the day by listing delivered cash orders. The system or sheet shows the expected total.
  • A second person counts the cash in front of the courier. Not the same person who assigned the orders.
  • Both sign or confirm. Record the counted amount, the expected amount and the difference.
  • Any difference is written with a reason on the same day: customer paid less, change shortage, an order marked delivered by mistake, or a real shortfall.
  • Hand-overs to merchants follow the same rule: you record what you collected for each merchant, what you deduct as your delivery fee, and what you owe.

Three habits prevent most losses. Never let a courier carry yesterday's unsettled cash into today. Mark an order delivered only when the cash amount is entered, not afterwards. And review the same courier's differences week over week: one odd day is a mistake, a pattern is a conversation.

Step 5: Plan for the failed delivery before it happens

A failed delivery is an order that went out and came back, and it costs fuel, time and a second attempt. Treat it as a normal outcome with a defined process, and record a reason from a fixed list:

  • Customer did not answer.
  • Wrong or incomplete address.
  • Customer refused the order.
  • Customer asked to reschedule.
  • Customer could not pay the amount.
  • Courier could not reach the area.

Then decide, in writing, what happens next for each reason. A common policy is one rescheduled attempt after contacting the customer, then a return to the merchant. State who pays the return fee. If you deliver for an online store, remember that Egypt's Consumer Protection Law No. 181 of 2018 gives a consumer in a distance contract the right to withdraw within fourteen days of receiving the product, and the law sets refund deadlines for the supplier. That affects your returns flow: a returned parcel from a customer who changed their mind is a different event from a failed first attempt, so give it its own status and reason.

Reasons are also your best data. If "wrong address" is 30 percent of your failures, the fix is at the order form, not at the courier. If "customer did not answer" clusters in one zone and time slot, change the time slot. A delivery operation improves by reading its failed orders every week.

Step 6: Choosing a delivery app (وصلني and the alternatives)

If you search for "تطبيق توصيل" or "delivery management software", you will see many options. Judge them by whether they cover your own-courier workflow, not by the length of the feature list. Ask:

  • Can an order be assigned to a courier, and does the courier have an app that shows the address, the amount to collect and a button for each status?
  • Can I define zones and fees, and does the order get its fee automatically?
  • Is there a record of every order's changes (who, what, when)?
  • Does the closing report show cash expected by courier, so I can compare it with the cash counted?
  • Can my online store send orders in automatically, or will someone retype them?
  • Do I get reports per courier and, if I serve merchants, per merchant?
  • Where is the data stored, and can I export it?

Wassalni (وصلني) is the delivery platform Softwiro built. According to its project record, it has merchant, courier and admin apps; zone and governorate rates; assignment of orders to couriers; live status tracking with an activity log per order; GPS sharing from the courier during the trip; a photo saved as proof at delivery; reports on collections, revenue, courier performance and returned orders; and a WooCommerce plugin and REST API for stores. Compare it, and any other app, with the seven questions above rather than with a demo.

Whatever you choose, run a two-week pilot with two or three couriers before moving everyone. Count the cash by hand and compare with the app's report at the end of each day. If the numbers match for ten days in a row, move the rest of the team.

A worked example (illustrative)

A courier is assigned 20 orders. Fourteen are delivered, and 11 of those are cash on delivery with a total of 6,300 EGP (illustrative). Three failed (customer did not answer) and three are rescheduled for tomorrow. In the evening the expected cash is 6,300 EGP. The counted cash is 6,150. The difference of 150 is explained by one customer who paid 150 less and promised to pay the next day. The order is flagged as part-paid with the balance recorded, the courier is not blamed, and the balance appears on tomorrow's list. Without the expected figure, that 150 would be a feeling, not a fact.

The next step

Today, pick the last full week of orders and calculate, per courier, the cash that should have been collected against the cash actually received. If you cannot produce that table in one hour, you have found your first problem. If you want a system that records the status, zone fee and cash for each order, Softwiro's Wassalni is built for that workflow, and you can tell us how many couriers and zones you run to see whether it fits.

Sources

Questions this raises

How do I track how much cash each delivery courier owes me?

Calculate each courier's expected cash every day from the orders marked delivered that were paid on delivery, minus anything paid in advance. Have a second person count the cash handed over, record the counted and expected amounts and the difference, and explain any difference the same day. Do not let unsettled cash roll into the next day.

How should I price delivery by zone?

Take a week of real orders and measure, for each governorate or zone, the average time per delivery, the distance and the failure rate. Set a fee per zone from those numbers and your cost of a courier hour, keep the table in one place, and let the system or sheet apply the fee to each order.

What should I do with failed deliveries?

Record a reason from a fixed list, such as no answer, wrong address, refusal or reschedule request, and decide in writing what happens next for each reason, for example one rescheduled attempt and then a return to the merchant. Review the reasons weekly to find whether the problem is the address form, the time slot or the courier.

What should a delivery app (تطبيق توصيل) have for a business with its own couriers?

Order assignment to couriers, a courier app showing address and amount to collect with a button for each status, zone pricing, a change log per order, a closing report of expected cash per courier, reports per courier, and a way for your online store to send orders automatically. Test these in a two-week pilot before moving every courier.

Is live GPS tracking of couriers allowed in Egypt?

Egypt's Personal Data Protection Law No. 151 of 2020 requires explicit consent and a legitimate, declared purpose for collecting personal data, and location is personal data. Tell couriers in writing what is tracked, when and why, and limit tracking to working trips. This is general information, not legal advice; confirm with a lawyer.

Have a system to build?

Softwiro designs, builds, and operates production systems. Describe what you need and we will come back with a scope rather than a slogan.

Start a project