Courier
Own-network hubs, sort rules, and a walk-in counter on top of Shipping.
Courier
Courier is a separate entitlement. It uses Shipping for the shipment, zone and weight price, labels, and scans, and the existing till for cash or card.
Hubs
A hub is a depot, sorting center, or pickup point. On Courier → Hubs use New / pencil / row click (same as Master Data): address, map coordinates, opening hours, optional parent hub, and Till warehouse. Counter payment needs that warehouse plus an open till session on Retail → Cash for the same warehouse.
Scans record the hub. They do not store a city as the location.
Sort rules
A rule matches a postal prefix, a postal range, or a shipping zone and sets the destination hub and delivery route. Booking writes the origin hub, destination hub, and route onto the shipment. If nothing matches, the shipment is flagged and appears under Needs sorting. Pick the destination hub and delivery route there. The shipment keeps its status and continues through the network.
Counter
Needs sorting
Courier is its own entitlement on top of Shipping. Without it, these screens say they are not allowed. Shipments with no matching rule stay on their current status and show in Needs sorting. Choose the destination hub and type the delivery route. After that they load onto manifests and delivery runs like any other shipment.
Manifests
A manifest moves pieces from one hub to another and can point at a fleet trip. Scan each piece onto the open manifest, optionally into a bag or cage barcode. Closing it records that the pieces departed the origin hub. At the next hub, scan what arrived, then arrive the manifest. Pieces on the manifest that were not scanned are missing. Scans that are not on the manifest are extra.
Delivery runs
A delivery run is a courier, a vehicle, and a date for one delivery route. It picks up the shipments already assigned to that route. Stop order uses the same nearest-neighbour routing as fleet trips. Start and complete are the only status changes.
The Drivers app records picked up, hub in, hub out, out for delivery, delivered (signature, photo, and location), and failed with a reason. The time stored is when the driver scanned, and tracking shows that time. A scan made offline, including its photo, stays on the device and is sent when the network returns or the app opens. The same idempotency key does not create a second scan.
A failed delivery can go out again. After three failed attempts the recipient is told by SMS or email to collect it at the depot. The parcel stays there for the company's hold days (7 unless Company settings courier_depot_hold_days says otherwise). A collected-at-depot scan delivers it. If nobody collects it in time, a priced return leg opens back to the sender.
COD hand-in
Each day, compare the cash a driver collected with the cash they hand in. The journal posts the cash actually handed in, while the accounting period is open. The collected amount is a payable to the sender, not revenue. A shortage is a receivable from the driver. Writing that off takes a separate approval, and the person who recorded the hand-in cannot approve it. Extra cash goes to the suspense account. When the sender's agreement says so, courier fees become a posted sales invoice to the sender (tax from the service product, DDV 18% by default in North Macedonia) and that invoice is cleared against the COD payable. The sender statement shows the invoice number. Pay the open payable with a payment run. There is no purchase invoice.
Dashboard
The dashboard shows parcels scanned into each hub today, shipments with no scan in the last 24 hours, failed deliveries, and COD still open per driver.
Tracking
The public tracking page (/ship-track/...) is white-labeled with the company name and logo (Powered by Uktupus in the footer). It shows a status bar, the hub name on each scan, the scan time from the device, and an estimated delivery date. Express is the scan day. Standard is the next day. Open the link from the Counter table (or the toast after Book). Use the long public token URL only — document codes and carrier tracking numbers are not accepted on the public page (they are unique per company and would risk cross-tenant lookup).
Counter
The counter books a shipment with no sales delivery. The page lists recent counter bookings in a table. Open Book — the form is a dialog (same pattern as other ERP create flows). Enter the sender and recipient including email (recipient email gets tracking status mail), pieces, weight or a scale reading, dimensions, standard or express, COD, and declared value. Pick a service product (Master Data → Products, type Service) for the POS fee line. Price comes from the Shipping rate card. Pay cash or card on the open till (fiscal receipt follows the normal POS post) or put it on account. The shipment gets one tracking number and one barcode per piece.