Own delivery
An operator or cashier takes the order → the kitchen prepares it → expo staff pack the bags → a courier delivers them → the cashier checks payment and closes the order. The manager monitors the queue, delays and returns.
What you need to get started#
- Enable delivery for the relevant location and check its address, rates and zones. For a restaurant chain, the operator chooses the location: the guest's address does not select a restaurant automatically.
- Prepare Orders, Courier, Handoff (Expo) and the KDS kitchen screen. The Dispatch workspace brings together the delivery queue and related tasks; access depends on the employee's permissions.
- Add at least one courier — step by step in Add a courier. Own delivery is included in every plan.
- Orders can be assigned by the owner and by any employee whose position includes the Courier section: a manager, a cashier who also dispatches, a shift lead. A courier with the Courier position sees only their own orders and free ready ones.
- Connect a printer if you need manifests and stickers. Arrange a separate way to collect card payments on delivery: the courier's phone does not replace a payment terminal.
Add a courier#
- Check that the Courier section is turned on. If it is off, choosing the "Courier" position in Staff shows the hint Turn on Delivery with a Turn on Delivery button.
- Open Staff and add an employee. Enter the name, choose the Courier position and the locations whose orders they deliver.
- Turn on login: enter an email and a password or click Generate, save and pass the details to the courier. More in Staff.
- The courier installs the Cenaly Courier Android app — the APK is downloaded from the website; it is not on Google Play yet. Without the app, the courier can work in Courier in a phone browser.
- The courier signs in with their email and password and allows location access.
- At the start of work, the courier taps Go online. If no timesheet shift is open yet, the app opens one. When the courier taps Go offline, the app asks Close your shift? — for a break, keep the shift open.
The result: in My couriers the courier shows as online or on shift, and orders can be assigned to them. Auto-dispatch only picks couriers with an open shift or a live location. If the app could not open the shift, it warns the courier: open the shift manually in My shift.
Until you have couriers of your own, Courier shows an Add a courier card with an Add courier button and a link to the app.
An employee with a custom position that includes the Courier section (for example, a cashier who also dispatches orders) sees the assignment panel there, not the courier screen.
How an order moves through delivery#
These labels are from Orders; the courier screen also groups cards by readiness and trips.
| Status | Meaning and next action |
|---|---|
| New | An order has arrived; check it and accept it for processing. |
| Pending / In Progress | The order is being processed or prepared. Follow its items on KDS. |
| Ready | All items are ready; pack the order and assign a courier. |
| Awaiting courier | The order is waiting for a courier after being moved to pickup readiness. The generic label for this stage is “Awaiting pickup”. |
| Out for delivery | The order has been assigned to a courier or handed over at expo. The status alone does not prove departure. |
| Delivered | The courier confirmed handover to the guest. |
| Paid / Completed | Payment has been recorded / work on the order is closed. |
| Returning to venue | The courier is bringing the bags back; a staff member must receive the return. |
| Cancelled | The order was cancelled. If the courier had the bags, staff still need to receive them back. |
Take a phone order#
Enter the order during the call so that the address and arrangements stay with it.
- In Orders, click New order, choose the location and the Out for delivery order type. Enter the name, phone number and items.
- Enter the Address and click Calculate. If the address cannot be found, use Point on map. After changing it, click Recalculate and tell the guest the total.
- In Delivery notes, enter the entrance, floor, intercom and landmarks. Check the payment method and create the order.
- With telephony connected, start faster in POS: Caller → order → incoming call → Delivery. The name, phone and last known address are filled in; always confirm the address with the guest.
- For delivery at a set time, use POS: tap ASAP in the ticket header and set the time in Order for a time. In the Create order window opened from Orders, Pickup time is available only for pickup orders.
The result is an order for the chosen location with an address, delivery fee and payment method. If the caller has no previous address, enter it manually. Resolve any zone or minimum-order warning with the guest before proceeding.
An online order arrives#
- Open Orders and enable sound: the indicator should read Sound on. Allow audio playback in the browser.
- Open the new order and check the address, items and payment. Contact the guest if needed, then use Accept on the items to put the order in work.
- Not accepted · 12 min means the order has waited longer than the configured acceptance deadline. Deal with it before taking the next one.
The location's Guest order before acceptance setting controls when the order reaches the kitchen, POS and courier board. With Put a guest order in work right away off, it appears there only after acceptance in Orders; with it on, it appears as soon as the guest places it.
The result is an order visible to the staff preparing and handing it over. If the kitchen cannot see it, check acceptance and the selected location before creating a duplicate.
Prepare and pack#
- Mark items ready on KDS. When all items are ready, the order automatically becomes Ready.
- At Handoff (Expo), check the items and notes. Click Print manifest: for delivery, it includes the available address, phone, courier notes and payment information.
- Print Bag stickers to keep parts of the same order together. Check the bags against the manifest.
- Use Handed to courier when handing over the bags. The courier separately records pickup; assign them using the next scenario if needed.
The result is a packed, handed-over order with a clear contents list. If the manifest warns that its contents are unverified, open the order and check the items before packing; do not treat that printout as a complete check.
Assign a courier#
- Open Courier. In My couriers, check who is on shift and how many orders each person is carrying.
- On a ready order, choose Assign to courier and the employee. Use Reassign to change an existing assignment.
- For automatic selection, enable Courier auto-dispatch in Delivery dispatch & zones. The system chooses an available courier by distance to the pickup location and current workload.
The courier accepts or declines the order. By default, auto-dispatch assigns the order straight away. To let couriers decline, turn on Offer orders to couriers instead of assigning them in the Courier accepts the order setting of the same block and set Time to answer, seconds (20 to 180, default 45).
- The courier sees You've been offered this order with a timer and Accept and Decline buttons. After Accept, the order is theirs.
- If the courier declines or does not answer in time, the order goes to the next free courier. It is not offered to the courier who declined again, but they can still take it manually from Ready for pickup.
- The dispatcher sees Offered: name · time on the order and can press Cancel offer to assign manually. Manual assignment is always instant and creates no offer.
- If three couriers in a row did not accept the order, or there are no free couriers left, the order gets a red No courier accepted the order banner. Managers get a push and the owner gets a Telegram message if Telegram is connected. The order stays in the shared list, and any courier can take it.
Offers work only with auto-dispatch on. The offer card is shown by Courier on the web and by the updated Android app. In the browser, a new offer appears when the list refreshes; there is no browser push. Older app versions and iOS do not show the card: the courier sees the order in Ready for pickup and can take it.
Several orders to one courier or runner. When two or more ready orders have no courier, a batch bar appears above Ready for pickup. Tick the boxes next to the order numbers (or press Select all ready), pick an employee in Courier or runner… and press Assign … with the number of ticked orders, for example Assign 3. The orders are assigned one after another in the order you ticked them and go straight into that person's route. A batch holds up to 20 orders. An order that another courier took or that was cancelled meanwhile is skipped, and the bar says how many were skipped. Batches do not reassign: change an assigned courier one order at a time with Reassign.
A floor runner (carries orders to tables, boxes or stands) is set up in Staff as a courier: a position based on the Courier role with a name such as "Runner". They appear in the same assignment list.
The result is an order assigned to a named courier. Assignment is blocked while preparation is in progress: wait for Ready or Awaiting courier. If automatic assignment finds nobody, check shifts, location access and workload, then assign manually.
Follow couriers on the map#
- On Courier, open Map; use Fullscreen for a wider view.
- In Courier route…, select an employee to combine their taken orders into a route. Dispatchers can choose any courier; couriers can choose themselves.
- For several addresses, use Optimize order. The order of stops and the travel time are calculated right on the device and do not depend on outside services.
- To drive by roads, press Route in Google Maps: the trip opens in the navigator in the calculated order; one link holds up to 10 addresses. On cenaly.ru there is also Route in Yandex Maps. From an order card, you can open navigation to one address or call the guest.
Kilometres and minutes in this section are straight-line, labelled "straight-line distance, roads via the navigator". The minutes account for winding streets and the average delivery speed of this location over the last 14 days; until there are enough deliveries, a typical city speed is used. On the map, addresses are joined by a dashed line, not by roads. Rivers, bridges and one-way streets are not taken into account — the navigator builds the exact route. In the Android app, Open in navigator does the same: it opens Google Maps or Yandex Navigator, depending on the app's settings.
The map shows the current position, not the history of the journey. If an address has no coordinates, navigation may use its text; check it before departure. After the courier picks up the order, the guest sees on the order page roughly how many minutes are left — the same straight-line estimate. Live courier tracking on cenaly.ru has not been verified in production yet — do not promise it to guests.
Pick up and deliver#
- Open the order in the browser or Cenaly Courier. If a ready order is still unassigned, tap Take order; an already assigned order does not need to be taken again.
- Once you have all the bags, use Picked up order on the web or Picked up on Android, then set off. On the web, enable Share my location; on Android, stay on shift with location access allowed.
- Check whether payment is due. After handover, tap Delivered on the web: the Confirm delivery window opens. On Android, choose Complete delivery, record the handover confirmation and tap Confirm delivery.
- If the location requires a code, ask the guest for the 4 digits and enter them in Code from the customer (on Android — Customer's code (4 digits)). A handover photo is taken with Take photo — both in the browser and on Android.
If the guest does not answer, use Customer not answering and contact the dispatcher. They decide whether to retry or Return to venue. Bring the bags back: another staff member at expo uses Receive return. Do not mark this trip delivered.
In an emergency, use SOS in the app: the dispatcher receives an alert with the position and can contact the courier. The courier can clear the alert. The Android app sends notifications about orders and offers, but push delivery is not guaranteed — check the queue in the app.
If an order is reassigned, the courier's actions from the previous assignment (Picked up order, Delivered, Return) — pressed earlier or sent without a connection — are no longer applied. The courier sees that the assignment has changed and the action was not applied, and the delivery history gets a line about the rejected command. This prevents mix-ups when one order passes between two couriers within a minute.
Guest code and delivery photo#
The owner or a manager sets this up in Courier, in the Delivery dispatch & zones block → Proof of delivery. Customer code (4 digits) and Delivery photo each have Off, Optional and Required. By default the code is off and the photo is optional. A new setting applies to orders whose courier leaves after saving.
- The guest sees Code for the courier on their order page: in the browser where they placed the order, or via the link from the message. The code also comes in the "courier is on the way" message. Someone who opens the order on another device by its number alone does not see the code.
- Code "Required": the order will not close without the correct code. After a mistake, the courier sees how many attempts are left. After 5 wrong codes, entry is blocked and the dispatcher decides.
- Code "Optional": the courier can close the order without the code; this is visible in the delivery history.
- Photo "Required": the order cannot be closed until the photo has uploaded.
- Photo "Optional" with a poor connection: the order closes, and the photo uploads when the connection returns (within 48 hours). The history first shows "Photo on its way", and if the photo never arrives — "Photo not uploaded".
- The dispatcher can press Close without code in the Confirm delivery window — a reason is required and saved in the history. After a block, they can press Allow new attempts.
- On the order card, the Proof of delivery block shows how the order was closed: "Code confirmed", "Closed without the code" with the reason and who did it, the number of wrong codes, the photo status. Show photo opens the photo itself — only staff of your account can see it.
The code and photo are checked only for your own delivery. Older courier app versions keep working while Off or Optional is selected. With Required, orders from older apps are closed by the dispatcher, so update the app on couriers' phones first.
Payment on delivery#
- Check the card: Cash on delivery, Card on delivery or Paid online. Do not collect payment again for a paid order.
- On Android, after actually receiving the money, confirm Collected cash or Collected by card. The card confirmation does not charge a card: use a separate terminal or another available payment method.
- If the guest wants to pay online, a staff member opens Payment link in Orders and copies the link or shows the QR code. This window cannot send an SMS or email.
- POS offers Pay by QR and a QR code on the bill. SBP is available when supported by the connected payment provider; it is not NFC card acceptance on the courier's phone.
- The till issues the fiscal receipt. With remote access configured, the cashier uses Issue fiscal receipt from Orders. The courier's payment confirmation does not replace a fiscal receipt.
The result is a payment record reflecting money actually received. If a payment is not confirmed, check its result before trying again. For operations in Russia, see Fiscal receipts for delivery and couriers.
Courier cash and handover to the till#
If a courier delivered an order paid in cash on delivery, the money is counted against the courier until a cashier accepts it in their cash shift.
- The cashier opens a cash shift and chooses Accept courier cash in the shift menu.
- In the Courier cash handover window, choose the courier under Whose cash are you accepting?.
- Tick the orders the courier is paying in for, or press All.
- Count the money and enter the amount in Counted cash. The window compares it with the amount By orders.
- Press Accept … with the amount.
The result: the shift gets one "Courier cash" pay-in for the counted amount, and the orders become handed in. If less is counted, the courier's shortage is recorded; if more — a surplus. The difference is shown in the report but does not block the handover. Each order is handed in once: on a repeat attempt, the window shows which orders were already handed in. If an order amount changed while the window was open, it asks you to check the new amount. Without an open cash shift, the handover cannot be accepted.
When closing the shift, if couriers still hold cash, a line Couriers still hold cash: N orders, amount appears with an Accept button. You can close the shift anyway: the debt stays with the courier and is visible in the next shift.
Report. In Courier, the Courier cash button shows, for today, 7 or 30 days, per courier: Collected, Handed in, Difference and On hand now. It also lists the courier's orders and handovers: when, who accepted, the amount by orders and the counted amount. The report is visible to employees with access to the till or finance. "On hand" covers unreturned orders from the last 45 days.
These are not courier debt: card payment on delivery, online payment, orders paid at the POS and undelivered orders. A handover is a cash movement, not a sale: the revenue and the receipt are already recorded for the order itself and are not posted to the books again.
Close the order#
- For pickup, use Handed to customer after handing over the bags. This records handover, not payment.
- Check settlement. If money was received but payment is not yet recorded, use Mark as Paid.
- For a paid order, click Complete order. Time-based automatic completion is configured in order settings; check the conditions for your location.
The result is a closed order with delivery and payment recorded separately. If the completion button is missing, check status and payment. Do not close a failed delivery just to clear the queue.
Cancellation and returns#
- In Orders, choose Cancel order, enter a reason and confirm cancellation.
- For an order paid online, check the refund result. If a manual decision is required, use Refund; if the money was actually returned separately, use Refunded outside the system. Cancellation does not always mean the money has been refunded.
- If the bags have already left, use Return to venue, followed by Receive return when they arrive. Before pickup, Give up the order on the courier screen releases the assignment; after pickup, the bags must physically return.
The result records cancellation, money and the bags separately. A non-cancelled order waits for a courier again after the return is received; a cancelled order stays cancelled. Refund a card payment taken on a terminal at handover through the till/terminal, not as an online-payment refund.
Busy periods and intake pause#
- On KDS or POS, open Pause order intake.
- If the kitchen can still take orders, select an extra 10, 15, 20, 30, 45 or 60 minutes and click Busy with the chosen extra time, for example Busy +15 min. This increases the promised preparation time; the guest sees a kitchen-busy message.
- If you cannot take new orders, choose Pause 30 min, Pause 60 min or Until end of day. Guests see that order intake is paused.
- To reopen earlier, click Resume.
The result is that new orders account for the workload or are blocked during the pause. The pause is also sent to connected aggregators when their integration is operational; check channel status. A setting being present does not mean an aggregator is connected for live operation.
For a chain, pause, busy mode and resume can be set for several locations at once: Locations → “🛎️ Orders by location” — see Chain management.
Delivery zones#
- In Courier, open Delivery dispatch & zones → Add zone.
- Enter the name, Delivery fee, Min order and ETA (min).
- Click Draw zone, mark the boundaries on the map and close the polygon by clicking its first point. Click Save.
- To change the boundaries, use Edit polygon; to delete a zone, use Remove, then save the changes.
The result is that addresses inside the zone use its terms. An address outside every own-delivery zone is blocked. The exception is an address served by a separate Commerce delivery method, whose terms then apply. Without zones, the location's regular delivery calculation is used.
If the fee is unexpected, check the address coordinates, zone rate, minimum, free-delivery threshold and any manual fee override. Finish or remove an incomplete zone before saving.
Aggregator orders without an integration#
Enter the order manually: pickup when the platform's courier collects it, delivery when your courier takes it. Yandex Eats covers payment recording and manual-entry limitations; naming a payment method does not create an integration or remove fiscal obligations.
Limitations#
- Delivery order entry has no dedicated cutlery-count or “change from” fields; record arrangements in a note.
- You cannot add or rename delivery stages, configure printing on a stage transition or customise order numbers. The number is a random four-digit value.
- The operator chooses the location; the guest's address does not automatically select a restaurant.
- The map shows the current position, not the travelled path. Live courier tracking on cenaly.ru has not been verified in production yet.
- NFC card acceptance on the courier's phone is unavailable. Courier cash is accepted only in an open cash shift.
- Kilometres and minutes in this section are straight-line; roads are built by an external navigator (Google Maps, on cenaly.ru also Yandex Maps).
- There is no bulk order completion or scheduled activation of intake pauses. In bulk you can only assign ready unassigned orders to one courier.
- An order offer with Accept / Decline works only with auto-dispatch; the iOS app does not have it yet. A courier can always take a free, ready order themselves.
- The guest code and delivery photo are set up only for your own delivery, not for external delivery services.
- The Cenaly independent courier network is closed. External delivery services, including Wolt Drive, run in demonstration mode, with no live dispatches.
Troubleshooting#
| Symptom | Possible cause | What to do |
|---|---|---|
| The courier cannot see an order | Not accepted, wrong location/type or an aggregator courier | Check acceptance, the employee's location access and the delivery type. Wolt/Glovo orders do not enter the own-courier queue. |
| Assign to courier is disabled | The order is not ready | Finish preparation; assignment becomes available after readiness. |
| The address is outside the zone | Coordinates fall outside the polygon | Check the address/map point; offer pickup or a suitable delivery method. |
| The order stays New | The operator has not accepted it | Open and accept it; check guest-order settings. |
| The guest cannot see the courier on the map | cenaly.ru, no position sharing or no pickup yet | Check the brand, shift/position sharing, location permission and pickup confirmation. |
| The delivery fee is unexpected | Different coordinates, zone or manual fee | Recalculate the address and check the rate conditions. |
| An online order makes no sound | Sound is off, the tab is closed or the browser blocks audio | Open Orders, enable sound and allow audio in the browser. |
| The courier is not in the assignment list | No login, no location access or not online | In Staff, check the position, login and locations; ask the courier to tap Go online in the app. |
| Auto-dispatch does not pick the courier | No timesheet shift is open | Open the shift in My shift; the app warns if it could not open it itself. |
| The courier cannot close the order | The code is required and not entered, entry is blocked or the photo has not uploaded yet | Ask the guest for the code from the order page; after a block, the dispatcher presses Close without code or Allow new attempts. |
| "The assignment has changed — action not applied" | The order was reassigned | Refresh the list and work with your current orders. |
| Courier cash cannot be accepted | The till is not open or no right to change the till | Open a cash shift; the handover is accepted by an employee who works with the till. |
Frequently asked questions#
How do I take a phone order faster? Use Caller → order in POS with telephony connected. Check the filled-in address; without telephony, create a New order manually.
Can couriers work without the app? Yes, through Courier in a phone browser: it has both the guest code and the delivery photo. The Cenaly Courier Android app is more convenient: it opens the shift on Go online, shares the location in the background and sends notifications.
How does a courier hand in cash? The cashier, in an open shift, chooses Accept courier cash, ticks the orders and enters the counted amount. The cash on hand for each courier is shown in Courier cash.
Can a courier decline an order? Yes: turn on Offer orders to couriers instead of assigning them with auto-dispatch. A decline or no answer passes the order to the next courier.
Who issues the receipt when the courier receives payment? The till does. With the connection configured, the cashier can use remote Issue fiscal receipt; the courier's confirmation only records receipt of the money.
How do I extend the time during a rush? Select extra minutes in Pause order intake and apply Busy, for example Busy +15 min. Use a pause to stop new orders.
What if the guest does not open the door? Customer not answering → contact the dispatcher → retry or Return to venue. On return, expo staff receive the bags using Receive return.
Can I customise the order number? No. Prefix, length and counter reset are not configurable; the number is a random four-digit value.
Related articles#
- Online orders at the POS and kitchen — acceptance, ready times and payment.
- Orders, Expo, Kitchen display, POS.
- Calls, Staff, Mobile apps, Team apps.
- Online ordering, Yandex Eats, Wolt, Glovo.
- Fiscal receipts for delivery and couriers.