Error code reference
The codes that may appear in the reasonCode field of a delivery
or webhook event, alongside the human-readable reason. Only
client-visible codes are listed here.
How to read a code
A code is four parts — leg, actor, type, sequence — e.g. EB3003 breaks down as EB + 3 + 0 + 03:
Leg prefix — which phase of the delivery raised the reason. The prefix lines up with the status that carries it: FAILED_PICKUP carries an EB code, FAILED_DELIVERY an EC code, FAILED_IN_RETURN an ED code.
| Prefix | Leg |
|---|---|
EA | Preparation — before the delivery is formed |
EB | Pre-pickup |
EC | Post-pickup — during the delivery leg |
ED | In return — the package is on its way back to the sender |
Actor digit — who triggered the reason.
| Digit | Actor |
|---|---|
1 | System |
2 | Client |
3 | Sender |
4 | Driver |
5 | Recipient |
6 | Internal user (Dash ops) |
Type digit — what kind of event the reason describes.
| Digit | Type |
|---|---|
0 | Failed |
1 | Cancellation |
2 | Assignment |
3 | Reassignment |
4 | Return |
5 | Completion |
The final two digits are a sequence number within that bucket. So EB3003 = pre-pickup (EB), sender (3), failed (0), sequence 03.
The reason string is localized (Bahasa Indonesia by default) and
is shown verbatim below. Treat reasonCode as the stable
machine-readable value — branch on the code, not the text.
Preparation — EA
Cancellation reasons raised while the order is being prepared, before a driver is involved.
Pesanan duplikat / tidak sengaja dibuat — the order was a
duplicate or created accidentally.
Ada kesalahan dalam input data pesanan — the order data
contained an input error.
Paket tidak memenuhi ketentuan pengiriman Dash — the package
doesn't meet Dash's delivery terms.
Kendala sistem saat memproses pesanan — a system issue occurred
while processing the order.
Pre-pickup — EB
Failed pickup
Carried by FAILED_PICKUP events. Nothing was collected, so there is no return leg.
SLA alokasi kurir melebihi batas waktu sistem — driver
allocation exceeded the system's time limit.
Pengantaran dibatalkan oleh sistem — the delivery was
force-cancelled by the system.
Pengirim tidak ada di alamat — the sender wasn't at the
address.
Pengirim tidak bisa dihubungi — the sender couldn't be reached.
Lokasi di tujuan tutup — the pickup location was closed.
Alamat tidak ditemukan — the address couldn't be found.
Reschedule (permintaan pengirim) — pickup rescheduled at the
sender's request.
Kendala operasional dalam pengambilan — an operational issue
prevented pickup.
Kendala cuaca/bencana — weather or disaster disruption.
Kondisi paket rusak saat ingin dipickup — the package was
already damaged at pickup.
Lainnya — other unclassified reason.
Cancellation
Carried by CANCELLED events before pickup.
Pengirim memilih layanan lain — the sender chose another
service.
Rider meminta untuk cancel orderan dengan alasan apapun — the
driver requested the order be cancelled.
Lainnya — other unclassified cancellation.
Post-pickup — EC
Failed delivery
Carried by FAILED_DELIVERY events. The driver had the package but could not complete the drop; the delivery may enter the return flow.
Kendala operasional dalam pengantaran — an operational issue
prevented delivery.
Kendala cuaca/bencana — weather or disaster disruption.
Penerima tidak ada di alamat — the recipient wasn't at the
address.
Penerima tidak bisa dihubungi — the recipient couldn't be
reached.
Lokasi di tujuan tutup — the destination location was closed.
Customer menolak melakukan pembayaran COD — the recipient
refused to pay the COD amount.
Reschedule (permintaan penerima) — delivery rescheduled at the
recipient's request.
Paket ditolak oleh penerima — the recipient refused the
package.
Lainnya — other unclassified reason.
Delivery notes
Informational reasons attached to completed deliveries — the drop succeeded, but something noteworthy happened along the way (delays, extra handling, additional fees).
Akses menuju lokasi penerima terbatas — access to the
recipient's location was restricted.
Perjalanan kurir membutuhkan penanganan ekstra karena jenis paket atau
ukuran yang besar/berat
— the package required extra handling due to its type or size.
Pengantaran dilakukan di area yang memerlukan biaya parkir —
the delivery area required a parking fee.
Nama lokasi di aplikasi berbeda dengan kondisi di lapangan —
the location name in the app differed from conditions on the ground.
Perjalanan kurir sempat terhambat oleh kondisi cuaca — the
driver was temporarily delayed by weather.
Perjalanan kurir sempat terhambat oleh kondisi jalan di rute pengantaran
— the driver was temporarily delayed by road conditions.
Perjalanan kurir sempat terhambat karena kendala pada perangkat
— the driver was temporarily delayed by a device issue.
Alamat tujuan sulit ditemukan/tidak lengkap — the destination
address was hard to find or incomplete.
Penerima sulit dihubungi — the recipient was difficult to
reach.
Kurir menunggu lebih lama sesuai permintaan penerima — the
driver waited longer at the recipient's request.
Penerima bukan yang bersangkutan — the package was received by
someone other than the named recipient.
Lainnya — other unclassified note.
Return leg — ED
Failed return
Carried by FAILED_IN_RETURN events. The package could not be returned to the sender; the driver still holds it and Dash Ops picks it up from there — the package moves to ON_HOLD at a pitstop, and the code below stays the reason of record for the whole hold. There is no separate prefix for the hold or the write-off — a code recorded on a later ON_HOLD / RETURNED / DISPOSED update reuses one of the four leg prefixes above.
Penerima tidak bisa dihubungi — the recipient couldn't be
reached.
Lokasi di tujuan tutup — the destination location was closed.
Kendala operasional dalam pengantaran — an operational issue
prevented the return.
Waktu pengantaran tidak cukup — there wasn't enough time to
complete the return.
Kendala cuaca/bencana — weather or disaster disruption.
Return issues
Issues encountered while returning the package to the sender.
Alamat pengembalian tidak ditemukan — the return address
couldn't be found.
Lokasi pengembalian sedang tidak beroperasi — the return
location was not operating.
Akses ke lokasi pengembalian terbatas — access to the return
location was restricted.
Proses pengembalian terhambat oleh kondisi cuaca/bencana — the
return was delayed by weather or disaster.
Penerima menolak menerima paket — the recipient refused to
accept the returned package.
Lainnya — other unclassified reason.
Codes can grow. New codes may be added over time — treat
unknown codes gracefully and fall back to displaying reason.
Codes are never removed or re-purposed without a changelog entry.