Dodo Delivery — Merchant Integration
The Dodo Delivery API lets your backend create deliveries, get pricing, and receive real-time status updates as our salaried rider fleet moves packages across Tanzania.
This is a server-to-server REST API. You authenticate with an API key, your server calls Dodo, Dodo dispatches a rider, and webhooks call you back as the package moves.
What you can build
- E-commerce checkout — book a courier the moment an order is paid
- Restaurant order dispatch — automatic rider assignment as soon as a meal is ready
- Inter-city logistics — hand-off to our hub network for regional deliveries
- Recurring B2B runs — daily supplier deliveries with scheduled pickups
How it works
Your server ──► POST /merchant/shipments ──► Dodo creates shipment, debits your wallet
│
▼
Dodo dispatches nearest rider
│
▼
Your server ◄── Webhook: shipment.created, picked_up, delivered, etc.
Two distance bands are handled by the same endpoint:
| Type | Distance | Routing |
|---|---|---|
| Same-city | up to ~50 km | Direct rider, single leg |
| Regional | 50+ km | Hub-to-hub via our transit network, 3 legs |
You don't choose between them — the engine resolves the route, vehicle, and pricing automatically from origin, destination, and item dimensions.
Base URLs
| Environment | Base URL |
|---|---|
| Production | https://api.dodo.co.tz/api/v1 |
| Sandbox | https://sandbox.dodo.co.tz/api/v1 |
All amounts are in Tanzanian Shillings (TZS). There is no decimal — 4100 means TZS 4,100.
Conventions
- JSON only — request and response bodies are
application/json. - Phone numbers are E.164 with country code:
+255712345678. - Timestamps are ISO 8601 UTC:
2026-05-15T12:00:00Z. - Identifiers — every shipment has an integer
id, a human referenceshipment_number(SHP-YYYYMMDD-XXXXXX), and a publictracking_code(DODOXXXXXXXXXX).
What's next
- Authentication — how to use your API key
- Quickstart — register, fund your wallet, create your first shipment
- Create a shipment — full reference for
POST /merchant/shipments - Webhooks — receive live status updates on your server