Skip to main content

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.

PrefixLeg
EAPreparation — before the delivery is formed
EBPre-pickup
ECPost-pickup — during the delivery leg
EDIn return — the package is on its way back to the sender

Actor digit — who triggered the reason.

DigitActor
1System
2Client
3Sender
4Driver
5Recipient
6Internal user (Dash ops)

Type digit — what kind of event the reason describes.

DigitType
0Failed
1Cancellation
2Assignment
3Reassignment
4Return
5Completion

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.

EA6101

Pesanan duplikat / tidak sengaja dibuat — the order was a duplicate or created accidentally.

EA6102

Ada kesalahan dalam input data pesanan — the order data contained an input error.

EA6104

Paket tidak memenuhi ketentuan pengiriman Dash — the package doesn't meet Dash's delivery terms.

EA6105

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.

EB1008

SLA alokasi kurir melebihi batas waktu sistem — driver allocation exceeded the system's time limit.

EB1011

Pengantaran dibatalkan oleh sistem — the delivery was force-cancelled by the system.

EB3003

Pengirim tidak ada di alamat — the sender wasn't at the address.

EB3004

Pengirim tidak bisa dihubungi — the sender couldn't be reached.

EB3005

Lokasi di tujuan tutup — the pickup location was closed.

EB3006

Alamat tidak ditemukan — the address couldn't be found.

EB3007

Reschedule (permintaan pengirim) — pickup rescheduled at the sender's request.

EB4001

Kendala operasional dalam pengambilan — an operational issue prevented pickup.

EB4006

Kendala cuaca/bencana — weather or disaster disruption.

EB4007

Kondisi paket rusak saat ingin dipickup — the package was already damaged at pickup.

EB4099

Lainnya — other unclassified reason.

Cancellation

Carried by CANCELLED events before pickup.

EB2103

Pengirim memilih layanan lain — the sender chose another service.

EB2104

Rider meminta untuk cancel orderan dengan alasan apapun — the driver requested the order be cancelled.

EB2199

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.

EC4001

Kendala operasional dalam pengantaran — an operational issue prevented delivery.

EC4006

Kendala cuaca/bencana — weather or disaster disruption.

EC5003

Penerima tidak ada di alamat — the recipient wasn't at the address.

EC5004

Penerima tidak bisa dihubungi — the recipient couldn't be reached.

EC5005

Lokasi di tujuan tutup — the destination location was closed.

EC5007

Customer menolak melakukan pembayaran COD — the recipient refused to pay the COD amount.

EC5009

Reschedule (permintaan penerima) — delivery rescheduled at the recipient's request.

EC5010

Paket ditolak oleh penerima — the recipient refused the package.

EC4099

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).

EC2503

Akses menuju lokasi penerima terbatas — access to the recipient's location was restricted.

EC2509

Perjalanan kurir membutuhkan penanganan ekstra karena jenis paket atau ukuran yang besar/berat

— the package required extra handling due to its type or size.

EC2510

Pengantaran dilakukan di area yang memerlukan biaya parkir — the delivery area required a parking fee.

EC3502

Nama lokasi di aplikasi berbeda dengan kondisi di lapangan — the location name in the app differed from conditions on the ground.

EC4507

Perjalanan kurir sempat terhambat oleh kondisi cuaca — the driver was temporarily delayed by weather.

EC4508

Perjalanan kurir sempat terhambat oleh kondisi jalan di rute pengantaran

— the driver was temporarily delayed by road conditions.

EC4511

Perjalanan kurir sempat terhambat karena kendala pada perangkat — the driver was temporarily delayed by a device issue.

EC5501

Alamat tujuan sulit ditemukan/tidak lengkap — the destination address was hard to find or incomplete.

EC5504

Penerima sulit dihubungi — the recipient was difficult to reach.

EC5505

Kurir menunggu lebih lama sesuai permintaan penerima — the driver waited longer at the recipient's request.

EC5506

Penerima bukan yang bersangkutan — the package was received by someone other than the named recipient.

EC4599

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.

ED3004

Penerima tidak bisa dihubungi — the recipient couldn't be reached.

ED3005

Lokasi di tujuan tutup — the destination location was closed.

ED4001

Kendala operasional dalam pengantaran — an operational issue prevented the return.

ED4002

Waktu pengantaran tidak cukup — there wasn't enough time to complete the return.

ED4008

Kendala cuaca/bencana — weather or disaster disruption.

Return issues

Issues encountered while returning the package to the sender.

ED2402

Alamat pengembalian tidak ditemukan — the return address couldn't be found.

ED4401

Lokasi pengembalian sedang tidak beroperasi — the return location was not operating.

ED4404

Akses ke lokasi pengembalian terbatas — access to the return location was restricted.

ED4405

Proses pengembalian terhambat oleh kondisi cuaca/bencana — the return was delayed by weather or disaster.

ED5403

Penerima menolak menerima paket — the recipient refused to accept the returned package.

ED4499

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.