On this page
Delivery orders come from your website (see
Accept an online order). Once
accepted, the kitchen cooks them like any order, and Delivery
(/delivery) takes over: dispatch gives each one to a rider or driver, the
rider follows it on their phone in My deliveries (/courier), the
customer follows it on their tracking page, and the cash the rider collects
comes back into a till.
accepted → kitchen → ready at the pass
→ assigned to a courier → Picked up → On my way → Delivered (code, cash)
└→ Could not deliver → retry / returned
The screens in this manual are the demo business, Jupita Restaurant Demo, at Kampala — Kololo. It delivers in three zones: Kololo & Nakasero (3 km around the branch, USh 5,000, free over USh 150,000), Ntinda, Bukoto & Naguru (named areas, USh 8,000, minimum order USh 30,000) and Greater Kampala (10 km, USh 12,000). Its couriers are Ronald Rider (a rider with the app), Faith Nansubuga (rider), Joseph Mukasa (driver) and City Boda (a partner courier dispatched by phone).
Who can do what:
| Task | Permission | Roles in the demo |
|---|---|---|
| See the dispatch board | delivery.view |
cashier, supervisor, managers, rider, accountant |
| Assign, auto-assign, retry, return | delivery.dispatch |
supervisor, managers |
| Pick up, deliver, report a problem | delivery.complete |
rider (Delivery rider role), managers |
| Take a rider’s cash into the till | delivery.cash |
cashier, managers |
| Zones, fees and couriers | delivery.manage |
managers, owner |
Assign a delivery to a rider
Purpose
Give each delivery to a courier who is on duty, at the right moment, so the food leaves the pass hot and the customer’s promised time is kept.
Role / permission required
Supervisors and managers — delivery.dispatch. The pictures show Sam, the
supervisor.
Prerequisites
- The online delivery order is accepted (see Accept an online order).
- At least one courier is on duty (see Set up couriers).
Steps
- Open Delivery from the sidebar. It opens on Dispatch.
- Find the new delivery under Awaiting a courier (1). The card shows the delivery number (tap it for its history), the order, the customer and phone, the address (tap it for the map) and zone, the promised time, Collect and the cash to collect, and not in the kitchen yet or Ready at the pass.
- In the courier list on the card (2), choose a courier. The list shows only couriers on duty, with how many deliveries each has.
- Or tap Auto-assign (4) to give every waiting delivery due within the hour to the couriers: idle couriers first, then whoever has fewest.
- Watch the Couriers column (3): each courier’s status (Available, On a delivery, Off duty), vehicle, active deliveries and the cash they hold. On duty and Off duty switch a courier.
Expected result
Assigned appears; the delivery moves to Assigned with Courier: Faith Nansubuga (1), and Faith’s card counts it as active (2). The rider sees it in My deliveries at once, and the customer’s tracking page names the rider. When the rider picks it up it moves to On the way, and when it is delivered to Done (12 h). Changes from the riders’ phones and the kitchen appear by themselves.
Screenshot
Common mistakes
- Assigning before the food is nearly ready. The rider waits at the pass. Assign when the card says Ready at the pass, or close to it — or let Auto-assign do it within the hour.
- Assigning to a partner courier without calling them. A partner courier has no app: phone them with the address after assigning.
- Switching a courier off duty who still has deliveries. Take the deliveries back first (choose Assign a courier… again to unassign).
Troubleshooting
- “Faith Nansubuga is off duty.” Switch her On duty in the Couriers column, or choose someone else.
- The courier list is empty. Nobody is on duty. Switch a courier on.
- A scheduled delivery is not auto-assigned. Auto-assign only takes deliveries due within the hour; later ones wait in Awaiting a courier until their hour.
FAQ
What does “not in the kitchen yet” mean? The order is scheduled for later and has not been sent to the kitchen; it goes by itself in time for its slot.
The customer cancelled before the rider left. What do I do? Void the order at the till (see Cancel an order). A delivery still Awaiting a courier or Assigned is cancelled with it: it goes to Done (12 h) as Cancelled and leaves the rider’s My deliveries. Once the rider has picked it up, the till refuses the void until the delivery is back (see Handle a delivery that could not be delivered).
Deliver an order with My deliveries
Purpose
Take an order from the pass to the customer’s door, confirm the hand-over with the customer’s code, and collect the cash when they pay on delivery — all from your phone.
Role / permission required
Riders and drivers with the Delivery rider role — delivery.complete. The
pictures show Ronald, a rider, on his phone.
Prerequisites
- You are signed in on your phone with your own login (see Sign in), and a manager linked your login to your courier record (see Set up couriers).
- A delivery is assigned to you.
Steps
- Open My deliveries. Switch yourself On duty at the top: only couriers on duty get deliveries.
- Read your delivery: the order, the customer, the address (tap it for the map), the directions, the phone (tap it to call) and Collect USh 40,000 cash (1) — or Paid — nothing to collect.
- While the button says Waiting for the kitchen (2), the food is not ready. When it changes to Picked up, collect the bag at the pass and tap Picked up.
- Tap On my way (1) when you leave. The customer’s page says On the way.
- At the door, tap Delivered (2). (If you cannot deliver, tap Could not deliver (3) and say what happened.)
- Ask the customer for the 6-digit code on their order page and type it in Delivery code (1).
- Count the cash and type it in Cash received (2) — at least what is due.
- Tap Confirm delivery (3).
Expected result
Delivered appears; the delivery leaves your list and shows under Delivered today with the cash you collected (2). The top of the page shows the cash you are holding (1) until you hand it in (see Settle the rider’s cash). The order is complete, the customer’s page says Enjoy your meal!, and dispatch sees it in Done (12 h).
Screenshot
Common mistakes
- Tapping Delivered before handing over. The customer’s page closes the order. Tap it at the door, after you have the code and the cash.
- Asking the customer to read the code out in the street for others to hear. Let them show it on their phone.
- Keeping the cash overnight. Hand it in at the end of your run.
Troubleshooting
- “That delivery code is not right (4 tries left).” Check the digits with the customer. After too many wrong tries the code locks: Too many wrong codes — ask the dispatcher to confirm this handover. Call dispatch.
- Picked up stays grey. The kitchen has not finished (Waiting for the kitchen). Wait at the pass.
- “Not set up as a courier”. Your login is not linked to a courier. Ask your manager.
- “Finish the deliveries on the way first.” You cannot go off duty while you still have deliveries on the way.
FAQ
Does the app share my position? Yes, while you are on duty and the page is open, if you allow location on your phone: dispatch sees where you last were.
The customer lost their code. It is on their tracking page (the link from checkout, or their account). Staff never see it. If they really cannot get it, tap Could not deliver and call dispatch; a dispatcher can confirm the hand-over without the code, with a note.
Settle the rider’s cash
Purpose
Take the cash a rider collected on cash-on-delivery orders into a till, so it is counted, the rider is no longer holding it, and any difference is on record.
Role / permission required
Cashiers and managers — delivery.cash, with a till open. The pictures show
Paul, a cashier.
Prerequisites
- Your till is open (see Open the till).
- The rider is back with the cash (see Deliver an order with My deliveries).
Steps
- Open Delivery. On Dispatch, the rider’s card (1) says Holds USh 40,000 cash.
- Tap Settle cash (2).
- Read how many deliveries and how much is expected (1).
- Count the rider’s cash and type it in Counted (2).
- If it does not match, write why in Note (variance) (3).
- Tap Take the cash (4) and put the cash in your drawer.
- To see past settlements, open Cash settlements.
Expected result
Cash settled appears and the rider’s card no longer holds cash. On Cash settlements the new settlement (1) shows its number (CST-…), the time, the rider, 1 delivery, Expected USh 40,000, Counted USh 40,000 and Variance USh 0. The cash is a cash-in on your till for the cash-up, and the deliveries are marked settled.
Screenshot
Common mistakes
- Typing the expected amount without counting. The variance is then hidden. Count first, type what you counted.
- Taking the cash as a cash-in by hand. It is not linked to the deliveries and the rider still shows it. Always use Settle cash.
Troubleshooting
- “Open a till to take the cash.” Open your till first.
- Settle cash is missing. The rider holds no cash, or your role cannot
take rider cash (
delivery.cash). - The counted cash is short. Settle what you counted and write the reason; the variance stays on the settlement for the manager.
Handle a delivery that could not be delivered
Purpose
When a rider cannot hand over an order — nobody home, a wrong address, a refusal — decide quickly: send it again or bring it back.
Role / permission required
Supervisors and managers — delivery.dispatch. The rider reports the
problem with delivery.complete.
Prerequisites
- The rider tapped Could not deliver and said what happened.
Steps
- On Delivery, Dispatch, look at Problems. The card shows the rider’s reason (1).
- Call the customer (tap their phone).
- If they can receive it now, choose a courier in Retry with… (2) — the same rider or another.
- If not, tap Returned to store (3) when the rider brings it back. Then, at the till, void the order if it was not paid (cash on delivery), or refund it if it was paid.
Expected result
After Retry with…: Sent again, and the delivery is back in Assigned with the courier, who sees it again in My deliveries. After Returned to store: Marked returned, and it is in Done (12 h).
Screenshot
Common mistakes
- Retrying without calling. The rider rides out again for nothing. Speak to the customer first.
- Forgetting the money after Returned to store. A paid order must be refunded or remade at the till (see Refund a paid order).
Troubleshooting
- The customer’s page says “There is a problem with the delivery”. That is expected until you retry or return it.
- “Delivery DLV-… is still with the courier (Failed). Mark it returned to the store first.” The till will not void an order while its delivery is picked up, on the way or failed. Tap Returned to store when the food is back, then void the order.
Set delivery zones and fees
Purpose
Decide where each branch delivers, what it costs, the minimum order and how long it takes — so customers outside your area cannot order and the fee is always right.
Role / permission required
Managers and the owner — delivery.manage. The pictures show Moses, the
branch manager.
Prerequisites
- For radius zones, the branch has its map position (see Branches). Without it, use named areas.
Steps
- Open Delivery and the Zones tab. The list (2) shows each zone: Covers, Fee, Minimum, Free over, ETA and whether it is active.
- Tap Add zone (1), or Edit (3) on a zone.
- Type the Code and Name.
- Choose what it Covers (1): A radius around the branch — then the Radius (km) — or Named areas — then the Areas (2), separated by commas.
- Type the Delivery fee (3), the Minimum order (4) and, if you like, Free delivery over (optional).
- Type the Delivery time (minutes): it is added to the earliest time the customer is offered.
- Set the Order (first match wins): put inner, cheaper zones first.
- Leave Active on, and tap Save zone (5).
Expected result
Zone saved and the zone is in the list. The website offers the named areas in the checkout’s Area list and charges the zone’s fee: an order of 32,000 to Ntinda pays USh 8,000 delivery, total USh 40,000. Below the minimum the customer cannot check out; an address outside every zone is refused.
Screenshot
Common mistakes
- Putting the big zone first. The first zone that matches wins: a 10 km zone first catches everyone at its fee. Order small to large.
- Spelling areas differently from how customers know them. Customers pick from your list; use the names they use (Kisementi, not Kisementi area).
Troubleshooting
- “This branch has no map position, so radius zones cannot match”. Set the branch’s position, or use named areas.
- Customers say the checkout refuses their address. It is outside every active zone. Add a zone or an area.
Set up couriers
Purpose
Keep the list of riders, drivers and partner couriers — with their vehicle and the login they use for My deliveries — so dispatch can give them work and their cash is tracked.
Role / permission required
Managers and the owner — delivery.manage. Switching a courier on or off
duty needs only delivery.view.
Prerequisites
- A rider who will use the app has a staff login with the Delivery rider role (see Add a user).
Steps
- Open Delivery and the Couriers tab. The list (2) shows each courier’s code, name, kind and vehicle, Login, status and Cash held.
- Tap Add courier (1), or Edit (3) on a courier.
- Type the Code (for example RID-03), the Name and the Phone.
- Choose the Kind (1) — Rider, Driver or Partner courier — and the Vehicle (2), and type the Plate.
- Choose their Courier app login (3), or None (dispatched by phone) for a partner courier.
- Leave Active on and tap Save courier (4).
Expected result
Courier saved. The courier is on the Couriers tab and, when active, in the Couriers column of Dispatch, where On duty and Off duty switch them. A courier with a login sees their deliveries in My deliveries on their phone.
Screenshot
Common mistakes
- Giving two couriers the same login. Each rider needs their own login, or deliveries and cash mix up.
- Deleting a courier who left. Untick Active instead: their past deliveries and settlements keep their name.
Troubleshooting
- The rider’s login is not in the Courier app login list. The user does not have the Delivery rider role. An administrator gives it to them.
- The courier is missing on Dispatch. They are not Active.













