The moment a courier carries an order on someone else's behalf for a fee, what you are building is a licensed road transport activity. The regulator has a view on who the courier is, what vehicle they ride, what data you keep and for how long. Most founders meet that part after development has started, and end up rebuilding whole screens and workflows.
This guide covers what has to be settled before any code is written: who issues the licence, which regulatory clauses turn into screens and database fields, which cost lines have a published price you can calculate today, and what actually breaks delivery operations on our streets.
First decision: who carries the order
Every technical decision branches from one question: who owns the courier?
- A restaurant or shop delivering its own products with its own riders. The activity is an extension of your trade, and the app is largely an internal tool.
- A platform that aggregates merchants and delivers for them with a fleet it contracts. You are a transport intermediary, and you answer for the courier, the order and the complaint.
- A platform that aggregates merchants and leaves delivery to licensed transport companies. Transport liability moves to the contracted company, and your job is integration.
The difference is not a feature difference. How the regulator classifies your activity changes, your obligations change with it, and the database changes too: the second case needs tables for couriers, their documents, shifts and payouts, while the third needs integration with carrier systems instead. Settle this before you draw a single screen, and check your classification with the regulator or a lawyer, because the wrong classification usually surfaces at the first licence application.
Licensing: the authority and the text
Saudi Arabia: the Transport General Authority
Order delivery in the Kingdom is regulated by the Transport General Authority, and licences are issued through the Naql portal. In a statement published by the Saudi Press Agency, the Authority called on establishments registered in delivery apps to obtain the vehicle-dispatch licence for goods transport through that portal, which in practice closes the door on running a delivery app without one.
In a further statement on six regulatory decisions for the delivery sector dated 23 January 2024, the Authority listed decisions that touch system design directly:
- Companies operating in the activity must apply face verification for their drivers through a system connected directly to the Transport General Authority.
- Non-Saudis are required to work through light transport companies, phased over 14 months, while freelance work remains open to citizens.
- Controls on the use of motorcycles in the activity, coordinated with the General Department of Traffic, and a standard uniform for non-Saudis working in it.
On 7 August 2026 the Authority issued the executive regulation for commercial goods transport by motorcycle, moving the activity, in the words of the statement, from a regulatory sandbox into a formal framework. If part of your fleet is motorcycles, that regulation applies to you, and it is newer than most of what has been published on the subject, so check the date of any reference you rely on.
The binding conditions, fees and compliance deadlines are published on the Authority's own site and they are updated. Read them there before you build an estimate on them, rather than relying on a blog or a sales deck repeating them.
Egypt: the Land Transport Regulatory Authority
Delivery apps are often confused with Law No. 87 of 2018, whose title reads “regulating road transport services for passengers using information technology”. That is the passenger law, and it is what was applied to ride-hailing apps.
The authority closest to goods delivery is the Land Transport Regulatory Authority, established by Law No. 73 of 2019, published in the Official Gazette, issue 23 bis (w) of 10 June 2019. Article 7 obliges those licensed to practise “internal and international road transport of passengers and goods” to bring their status into conformity with the law, so goods are explicitly within the Authority's remit. Licensing conditions and fees are set by decisions of the Minister of Transport and published on the Authority's site.
Law 87 of 2018 is still worth reading even though it targets passengers, because it shows how the Egyptian regulator thinks about this kind of platform, and what is at stake: Article 15 penalises providing or performing the service without a licence with a fine of no less than EGP 200,000 and no more than EGP 5 million.
From the regulation to the database
A regulatory requirement does not stay a document in a folder. Each clause becomes a field, a screen or a scheduled job:
| Published requirement | What it looks like in the system |
|---|---|
| Driver face verification through a system linked to the Authority (Saudi Arabia) | Live verification before a shift starts, an attempt log, and orders blocked on failure |
| A category of couriers must work through a light transport company (Saudi Arabia) | Every courier linked to an operating entity, contract expiry dates, and alerts before they lapse |
| Motorcycle controls and their executive regulation (Saudi Arabia) | A vehicle-type field that feeds the dispatch engine and the order types allowed |
| Keeping data “directly and readily available for one hundred and eighty consecutive days” (Article 10, Law 87 of 2018) | A written retention policy, extractable copies, and an export screen instead of manual log digging |
| No licensed driver may operate before presenting proof of social insurance payment (Article 11) | Uploaded documents per courier, with activation conditional on them, not a free-text field |
Add data protection on top: a delivery app collects a phone number, a home address and a movement trail, which is about as sensitive as consumer data gets. We covered what changes inside the system in customer data protection in Egypt and Saudi Arabia.
The three components and what each one does
A delivery platform is three applications sharing one database.
A customer app needs precise location selection, a price shown before confirmation, live tracking and a payment method. The precision that matters here is in pinning the address, not in the animations.
The courier app is the hard one. It receives an order and accepts it within a deadline, streams its location, gives navigation, captures proof of delivery by code, photo or signature, and shows the day's earnings. It has to do all that with the screen off and the phone in a pocket, which is exactly the state the operating system fights.
Third comes the dispatch console, which is the operations room: a live map, an order queue with states, automatic assignment with manual override, zone and pricing management, and courier and merchant settlements. Teams that build two apps and postpone the console discover a week after launch that they are running a fleet out of a WhatsApp group.
The cost lines that have a published price
There is no credible published figure for what building a delivery app costs, and any range you find online is either invented or copied. What you can calculate today is the monthly running cost, because the providers publish their rates.
Maps and routing
This is the largest variable line, and it is billed per call. From the Google Maps Platform price list as of 21 September 2026, in USD per 1,000 calls after the monthly free cap:
| Service | Free cap per month | Price above it |
|---|---|---|
| Dynamic Maps (map load) | 10,000 | 7.00 |
| Autocomplete (address completion) | 10,000 | 2.83 |
| Geocoding (address to coordinates) | 10,000 | 5.00 |
| Compute Routes Essentials | 10,000 | 5.00 |
| Navigation SDK: Navigation Request | 1,000 | 25.00 |
| RouteOptimization – FleetRouting | 1,000 | 30.00 |
Snaabble provides a tailored technical assessment to define the right stack & exact budget.
Mapbox's published rates on the same date: Directions, Optimization and Matrix are free up to 100,000 monthly requests and then $2.00 per 1,000; Temporary Geocoding is free up to 100,000 and then $0.75 per 1,000; Permanent Geocoding, the one that lets you store results, costs $5.00 per 1,000 from the first request. The Navigation SDK is billed by monthly active user and by trip: the first 100 users and the first 1,000 trips are free, then $0.30 per user and $0.08 per trip.
Multiply these rates by the number of calls one order consumes in your design, not by the number of orders. An order that is cancelled and reassigned consumes fresh routes, and a customer who opens the tracking screen ten times consumes ten map loads. Stream courier positions through your own server rather than letting every handset call the provider directly, because the bill follows call volume, not user count.
Notifications and messages
Firebase Cloud Messaging is free, and it is the natural channel for order status updates inside the app. The alternative is billed per message: Twilio's outbound SMS rate is $0.3959 for Egypt and $0.1949 for Saudi Arabia per segment, and a long Arabic message counts as more than one segment.
WhatsApp has a change coming that you need to price in now. According to the WhatsApp Business Platform pricing document updated on 10 September 2026, from 1 October 2026 Meta will charge for utility templates sent inside the customer service window, which have been free since July 2025, and for service messages, with a free tier of 1,000 messages per business phone number per month. If your order notifications run on WhatsApp, budget them after that date, not before it.
Payments and cash collection
Gateway fees are published: Paymob in Egypt charges 2.75% plus EGP 3 per transaction, with no monthly fees and weekly settlement. The part no pricing page covers is cash on delivery, which is still the dominant method in our markets: the courier carries cash, has to hand it over, and has to be deducted what they are owed. That means a wallet per courier in the system, a cap on the cash one courier may hold, a recorded cash handover session, and a report that surfaces the gap before it grows. Skip that and you are running a till without a ledger. For the alternative of leaning on carriers instead of an owned fleet, see e-commerce shipping solutions in Egypt and the Gulf, and for development cost lines themselves there is detail in the mobile app cost guide for Saudi Arabia.
Two clauses in the maps licence that change your architecture
The Google Maps Platform Terms of Service prohibit combining the Directions API with the Geolocation API and the Maps SDK in order to build real-time navigation that is, in Google's words, “substantially similar” to its own Google Maps mobile app. In plain terms: do not build turn-by-turn navigation inside your courier app out of the ordinary routing APIs. Either use the Navigation SDK at the rate above, hand off to an external maps app, or move to another provider. That decision affects both cost and experience, and it belongs in design, not after launch.
The second clause sits in the service specific terms: latitude and longitude values from Geocoding, Routes and Directions may be cached for a maximum of 30 consecutive calendar days, after which they must be deleted. Only the place_id may be stored indefinitely. A customer's saved address is therefore not a permanent copy of Google's coordinates, and your address table has to respect that from day one.
Four things that break operations locally
Courier battery
A courier whose phone dies after three hours disappears from the map, and the console sees them as idle and assigns orders they never receive. The cause is documented: Android's own guidance explains that since version 8.0 background location collection is throttled, so location is computed and delivered only a few times an hour, and geofence responsiveness shifts from tens of seconds to roughly two minutes.
Raising the update rate is not the fix. The courier app has to run through a foreground service of type location with the FOREGROUND_SERVICE_LOCATION permission, and switch accuracy by state: high accuracy during an active trip, lower accuracy between orders, with updates batched and sent together.
There is a review dimension too. Google Play's background location policy lists “delivery/service tracking for users (not drivers)” among the cases that foreground location covers, meaning the customer app should not be asking for background access at all. The courier app, on the other hand, needs approval through the permissions declaration form with a demo video and in-app disclosure, and the policy states plainly that without that approval app updates may be blocked and the app removed from Google Play. On Apple's side, the App Review Guidelines require that Location Services be used only when directly relevant to the app's features, with notice and consent. Budget calendar time for these approvals.
Addresses
Here the two markets differ institutionally. Saudi Arabia has the National Address, and Saudi Post | SPL provides an API that verifies a national address and retrieves it by short address, geographic coordinate or phone number, with free developer registration. That means an address in your app can be a verified entity rather than free text.
Egypt has no published equivalent, and an address typically arrives as “fourth floor above the pharmacy, ask for Abu Ahmed”. Design for that: make a customer-placed map pin the primary reference, store a landmark, a floor number and access instructions as separate fields, and record the actual delivery position on a successful drop so the next suggestion is better. And never let a street name string be the key to any calculation.
Zones and distance pricing
Map distance is not the distance a courier rides, and a car route is not a motorcycle route. Define operating zones with drawn boundaries, price on the actual route rather than a straight line, and freeze the price at confirmation even if the route changes afterwards. Set a maximum distance too: refusing an order at creation beats accepting it and apologising twenty minutes later.
Weak connectivity
Proof of delivery usually happens in a garage, behind a thick wall, or in a village with poor coverage. Write the courier app to accept the action locally and queue it for sync, with a unique identifier per operation so retries do not duplicate it, and a clear view of what has not been sent yet. A courier should not have to wait for a signal to confirm a drop.
One merchant or a multi-merchant marketplace
This decision changes the whole project, not just its size.
| Aspect | Single-merchant app | Multi-merchant marketplace |
|---|---|---|
| Database | Direct entities | Per-merchant data isolation and separate permissions |
| Pricing | One delivery fee and one menu | Commission per merchant, periodic settlement, statements |
| Operations | A handful of couriers, simple shifts | Dispatch engine, zones, peak pricing, order batching |
| Onboarding | None | Merchant signup, review, contract, and a portal for their catalogue |
| Growth | The customer already knows the restaurant | You need demand and supply to appear at the same time |
A marketplace is a market-building project before it is a software project, and its usual failure is not technical: merchants with no orders, or orders with no couriers at peak. If you have one merchant and steady demand, start with an app for them and leave the data model able to take on more merchants later without a rewrite. And if your restaurant needs its internal systems in order before it adds delivery, see the restaurant technology stack.
Where to start
Start with one page that answers: who carries the order, which licence that requires, and which requirements the regulation imposes on the system. Then price maps, notifications and payments by expected call volume rather than order count. Then build the smallest version that works: one order, one courier, tracking, proof of delivery, settlement. Everything else can wait for month two.
If you are still at the study stage, send the Snaabble team a description of the scope, the market and the shape of the fleet, and within 24 hours you will get an initial view of the phases and an estimate of time and cost, with no commitment. This kind of work sits within custom systems and mobile apps.
Frequently asked questions
Does my restaurant need a licence if it delivers its own orders with its own riders?
That depends on how the regulator in your country classifies the activity, and it is not something an article can settle. Put the case in detail to the Transport General Authority in Saudi Arabia or the Land Transport Regulatory Authority in Egypt, or to a lawyer, before development starts. The line between self-delivery and acting as a transport intermediary is what decides the answer.
Can I hand off to an external maps app instead of building navigation into the courier app?
Yes, and it is a common, accepted choice. You open the maps app at the destination and the courier returns to your app on arrival. It saves the Navigation SDK cost and avoids the restriction in Google's maps terms, at the price of sending the courier out of your app on every trip, which means losing some route data.
How long does it take to build a delivery platform?
Duration cannot be estimated before the scope is defined. At Snaabble, small projects take roughly 4 to 6 weeks and larger systems 3 to 6 months, with the timeline set after the first discovery session. Add store review time and licensing procedures on top, since neither is under the development team's control.
Sources
- Transport General Authority, Saudi Arabia
- Saudi Press Agency: six regulatory decisions for the order delivery sector, 23 January 2024
- Saudi Press Agency: executive regulation for commercial goods transport by motorcycle, 7 August 2026
- Law No. 73 of 2019 establishing the Land Transport Regulatory Authority, Egyptian Official Gazette
- Law No. 87 of 2018 regulating road passenger transport services using information technology
- Google Maps Platform pricing, Terms of Service and Service Specific Terms
- Mapbox pricing
- Firebase pricing and Twilio SMS pricing
- WhatsApp Business Platform pricing
- Paymob pricing
- Android: background location and battery and foreground service types
- Google Play background location policy and App Store Review Guidelines
- National Address API, Saudi Post | SPL
