Skip to main content

Event payload reference

A single JSON envelope is used for every webhook event. The status field tells you which lifecycle event you're handling; other fields are populated based on that status.

This is the v2 payload — the current shape for new integrations. Still on the old shape? See the legacy v1 payload reference.

What's always present

Every webhook payload includes the core envelope: identifiers, status, the sender / recipient blocks, origin + destination, packages, quote, and createdAt. Status-specific fields (courier, media, trackingURL, pickupAt, completedAt, failedAt, cancelledAt, reason, reasonCode) appear once they're meaningful.

Payload by status

Select a service category, then click any status to expand the full webhook body.

QUEUEING — scheduled order waiting for its pickup window
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "QUEUEING",
"failedCount": 0,
"courier": null,
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"width": 1,
"length": 1,
"height": 1
}
],
"media": [],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T14:18:17.128Z",
"updatedAt": "2024-12-27T14:18:17.128Z"
}
ALLOCATING — Dash is finding a nearby driver
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "ALLOCATING",
"failedCount": 0,
"courier": null,
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "A5",
"description": "Barang Luar Negeri A",
"quantity": 1,
"price": 23000,
"weight": 80,
"width": 1,
"length": 1,
"height": 1
}
],
"media": [],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T14:18:17.128Z",
"updatedAt": "2024-12-27T14:18:17.128Z"
}
PENDING_PICKUP — driver assigned, not yet moving
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "PENDING_PICKUP",
"failedCount": 0,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"trackingURL": "https://www.tracking.dummy.com",
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "A5",
"description": "Barang Luar Negeri A",
"quantity": 1,
"price": 23000,
"weight": 80,
"width": 1,
"length": 1,
"height": 1
}
],
"media": [],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T14:18:17.128Z",
"updatedAt": "2024-12-27T14:18:58.750Z"
}
PICKING_UP — driver is on the way to the pickup location
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "PICKING_UP",
"failedCount": 0,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"trackingURL": "https://www.tracking.dummy.com",
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"width": 1,
"length": 1,
"height": 1
}
],
"media": [],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T14:18:17.128Z",
"updatedAt": "2024-12-27T14:18:58.750Z"
}
ARRIVED_AT_PICKUP_POINT — driver has arrived at the sender's location, hasn't collected the package yet
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "ARRIVED_AT_PICKUP_POINT",
"failedCount": 0,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"trackingURL": "https://www.tracking.dummy.com",
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"width": 1,
"length": 1,
"height": 1
}
],
"media": [],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T14:18:17.128Z",
"updatedAt": "2024-12-27T14:22:10.000Z"
}
PENDING_DELIVERY — package picked up (pickupAt + PICKUP_PROOF now set), intermediate state before IN_DELIVERY
{
"providerOrderID": "DAILY_EXPRESS-OOOO1",
"deliveryID": "DE-1747913656208",
"status": "PENDING_DELIVERY",
"failedCount": 0,
"courier": {
"name": "Dash Driver",
"phone": "0811111111",
"vehiclePlateNumber": "B 5678 ABC",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"trackingURL": "https://www.tracking.dummy.com",
"weight": 24.8,
"sender": {
"firstName": "provider",
"lastName": "dash",
"companyName": "provider",
"phone": "0123"
},
"recipient": {
"firstName": "dash",
"lastName": "electric",
"companyName": "dash",
"email": "test@test.id",
"phone": "123424",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Pesanggrahan",
"coordinates": { "latitude": -6.4287925, "longitude": 106.823185 }
},
"destination": {
"address": "Masjid Al-Huda",
"coordinates": { "latitude": -6.42878, "longitude": 106.8232 }
},
"packages": [
{
"name": "package-1",
"description": "lorem ipsum",
"quantity": 1,
"price": 20000,
"weight": 12.5,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [
{
"url": "https://storage.googleapis.com/.../PICKUP_PROOF",
"type": "PICKUP_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
}
],
"quote": { "amount": 21000 },
"createdAt": "2025-05-22T11:34:16.224Z",
"updatedAt": "2025-05-22T11:34:22.000Z",
"pickupAt": "2025-05-22T11:34:22.000Z"
}
IN_DELIVERY — driver is en route to the recipient with the package in hand
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "IN_DELIVERY",
"failedCount": 0,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"trackingURL": "https://www.tracking.dummy.com",
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [
{
"url": "https://storage.googleapis.com/.../PICKUP_PROOF",
"type": "PICKUP_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
}
],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T14:18:17.128Z",
"pickupAt": "2024-12-27T14:18:58.750Z"
}
ARRIVED_AT_DESTINATION — driver has arrived at the recipient's location, hasn't captured DELIVERY_PROOF yet
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "ARRIVED_AT_DESTINATION",
"failedCount": 0,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"trackingURL": "https://www.tracking.dummy.com",
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [
{
"url": "https://storage.googleapis.com/.../PICKUP_PROOF",
"type": "PICKUP_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
}
],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T14:18:17.128Z",
"pickupAt": "2024-12-27T14:18:58.750Z",
"updatedAt": "2024-12-27T15:40:00.000Z"
}
COMPLETED — driver captured DELIVERY_PROOF at the destination (terminal)
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "COMPLETED",
"failedCount": 0,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": "John Doe",
"actualRecipientRelation": "spouse"
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [
{
"url": "https://storage.googleapis.com/.../PICKUP_PROOF",
"type": "PICKUP_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
},
{
"url": "https://storage.googleapis.com/.../DELIVERY_PROOF",
"type": "DELIVERY_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
}
],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T12:18:17.128Z",
"pickupAt": "2024-12-27T13:18:17.128Z",
"completedAt": "2024-12-27T14:18:58.750Z"
}

Changed in v2 — the failure status is split by leg. EXPRESS no longer emits a generic FAILED. A failure before the package is collected arrives as FAILED_PICKUP; a failure after collection arrives as FAILED_DELIVERY. If you branch on status === "FAILED", update that check — see the v1 reference for the old shape. (LOGISTIC still emits FAILED.)

FAILED_PICKUP — the pickup leg failed (terminal — nothing was picked up, so there's no return leg)
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "FAILED_PICKUP",
"failedCount": 1,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [
{
"url": "https://storage.googleapis.com/.../FAILED_PICKUP_PROOF",
"type": "FAILED_PICKUP_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
}
],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T11:18:17.128Z",
"pickupAt": null,
"failedAt": "2024-12-27T14:18:58.750Z",
"reason": "Pengirim tidak ada di alamat",
"reasonCode": "EB3003"
}
FAILED_DELIVERY — the delivery leg failed (terminal, unless it enters the return flow — see PENDING_RETURN below)
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "FAILED_DELIVERY",
"failedCount": 1,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [
{
"url": "https://storage.googleapis.com/.../PICKUP_PROOF",
"type": "PICKUP_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
},
{
"url": "https://storage.googleapis.com/.../FAILED_DELIVERY_PROOF",
"type": "FAILED_DELIVERY_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
}
],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T11:18:17.128Z",
"pickupAt": "2024-12-27T13:18:17.128Z",
"failedAt": "2024-12-27T14:18:58.750Z",
"reason": "Penerima tidak ada di alamat",
"reasonCode": "EC5003"
}

Return flow — reachable only from FAILED_DELIVERY (the package was already picked up). A FAILED_PICKUP has nothing to return, so it stays terminal. reason, reasonCode, pickupAt, and failedAt are not echoed on PENDING_RETURN, IN_RETURN, or RETURNED — they only appear on the FAILED_DELIVERY event that preceded the return. The exception is FAILED_IN_RETURN: it carries its own reason, an ED reasonCode, and FAILED_RETURN_PROOF media for the failed hand-back, and courier stays populated because the driver is still holding the package. It is a branch off the clean return path — the RETURNED example shows the same delivery finishing without a failed hand-back. From a failed hand-back the package moves to ON_HOLD at a Dash pitstop, which resolves as a fresh PENDING_RETURN, RETURNED, or DISPOSED.

PENDING_RETURN — failed delivery queued to go back to the sender
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "PENDING_RETURN",
"failedCount": 1,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [
{
"url": "https://storage.googleapis.com/.../PICKUP_PROOF",
"type": "PICKUP_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
},
{
"url": "https://storage.googleapis.com/.../FAILED_DELIVERY_PROOF",
"type": "FAILED_DELIVERY_PROOF",
"createdAt": "2024-12-27T14:20:00.000Z"
}
],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T11:18:17.128Z",
"updatedAt": "2024-12-27T14:22:15.000Z"
}
IN_RETURN — driver is en route back to the sender with the package
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "IN_RETURN",
"failedCount": 1,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [
{
"url": "https://storage.googleapis.com/.../PICKUP_PROOF",
"type": "PICKUP_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
},
{
"url": "https://storage.googleapis.com/.../FAILED_DELIVERY_PROOF",
"type": "FAILED_DELIVERY_PROOF",
"createdAt": "2024-12-27T14:20:00.000Z"
}
],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T11:18:17.128Z",
"updatedAt": "2024-12-27T15:05:40.000Z"
}
ARRIVED_AT_RETURN_POINT — driver has arrived back at the sender's location, hasn't handed the package over yet

No new media or reason is captured here — the hand-back hasn't happened yet. The next event is either RETURNED, once the sender accepts the package, or FAILED_IN_RETURN if they don't.

{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "ARRIVED_AT_RETURN_POINT",
"failedCount": 1,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [
{
"url": "https://storage.googleapis.com/.../PICKUP_PROOF",
"type": "PICKUP_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
},
{
"url": "https://storage.googleapis.com/.../FAILED_DELIVERY_PROOF",
"type": "FAILED_DELIVERY_PROOF",
"createdAt": "2024-12-27T14:20:00.000Z"
}
],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T11:18:17.128Z",
"updatedAt": "2024-12-27T15:38:00.000Z"
}
FAILED_IN_RETURN — the return leg failed; the driver still has the package (not terminal)
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "FAILED_IN_RETURN",
"failedCount": 1,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [
{
"url": "https://storage.googleapis.com/.../PICKUP_PROOF",
"type": "PICKUP_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
},
{
"url": "https://storage.googleapis.com/.../FAILED_DELIVERY_PROOF",
"type": "FAILED_DELIVERY_PROOF",
"createdAt": "2024-12-27T14:20:00.000Z"
},
{
"url": "https://storage.googleapis.com/.../FAILED_RETURN_PROOF",
"type": "FAILED_RETURN_PROOF",
"createdAt": "2024-12-27T15:40:12.000Z"
}
],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T11:18:17.128Z",
"updatedAt": "2024-12-27T15:42:10.000Z",
"reason": "Lokasi di tujuan tutup",
"reasonCode": "ED3005"
}
ON_HOLD — package parked with Dash Ops at a pitstop after a failed return (not terminal)

No new media or reason is captured here — media still holds the proofs from the earlier legs, and the ED code stays on the FAILED_IN_RETURN event that preceded it. The driver is released from the job at this point, so courier is null: the package sits with Dash Ops, not with a rider. It is populated again on the next event if the package leaves the pitstop with a driver.

{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "ON_HOLD",
"failedCount": 1,
"courier": null,
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [
{
"url": "https://storage.googleapis.com/.../PICKUP_PROOF",
"type": "PICKUP_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
},
{
"url": "https://storage.googleapis.com/.../FAILED_DELIVERY_PROOF",
"type": "FAILED_DELIVERY_PROOF",
"createdAt": "2024-12-27T14:20:00.000Z"
},
{
"url": "https://storage.googleapis.com/.../FAILED_RETURN_PROOF",
"type": "FAILED_RETURN_PROOF",
"createdAt": "2024-12-27T15:40:12.000Z"
}
],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T11:18:17.128Z",
"updatedAt": "2024-12-27T15:52:30.000Z"
}
RETURNED — package handed back to the sender (terminal)

recipient.actualRecipientName / actualRecipientRelation here describe whoever signed for the returned package at the sender's side — not the original recipient.

{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "RETURNED",
"failedCount": 1,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": "Dedi Prasetyo",
"actualRecipientRelation": "warehouse staff"
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [
{
"url": "https://storage.googleapis.com/.../PICKUP_PROOF",
"type": "PICKUP_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
},
{
"url": "https://storage.googleapis.com/.../FAILED_DELIVERY_PROOF",
"type": "FAILED_DELIVERY_PROOF",
"createdAt": "2024-12-27T14:20:00.000Z"
},
{
"url": "https://storage.googleapis.com/.../RETURN_PROOF",
"type": "RETURN_PROOF",
"createdAt": "2024-12-27T16:02:30.000Z"
}
],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T11:18:17.128Z",
"updatedAt": "2024-12-27T16:03:00.000Z"
}
DISPOSED — package written off instead of returned (terminal)

The tail end of a hold that ops could not resolve: nothing was handed back, so there's no RETURN_PROOF and no disposal-specific proof type either. completedAt is absent, as on every non-COMPLETED event.

{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "DISPOSED",
"failedCount": 1,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [
{
"url": "https://storage.googleapis.com/.../PICKUP_PROOF",
"type": "PICKUP_PROOF",
"createdAt": "2024-12-27T14:07:49.300Z"
},
{
"url": "https://storage.googleapis.com/.../FAILED_DELIVERY_PROOF",
"type": "FAILED_DELIVERY_PROOF",
"createdAt": "2024-12-27T14:20:00.000Z"
},
{
"url": "https://storage.googleapis.com/.../FAILED_RETURN_PROOF",
"type": "FAILED_RETURN_PROOF",
"createdAt": "2024-12-27T15:40:12.000Z"
}
],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T11:18:17.128Z",
"updatedAt": "2024-12-29T09:14:02.000Z"
}
CANCELLED — provider cancelled before pickup (ALLOCATING / PENDING_PICKUP / PICKING_UP) (terminal)
{
"providerOrderID": "AWB-TEST-1",
"deliveryID": "DE-1735308506306",
"status": "CANCELLED",
"failedCount": 0,
"courier": {
"name": "Agus Wijayanto",
"phone": "087777777777",
"vehiclePlateNumber": "B 1234 XYZ",
"profileImageUrl": "https://storage.googleapis.com/.../driver-profile.jpg"
},
"weight": 80,
"sender": {
"firstName": "Budi",
"lastName": " Darmadi",
"companyName": "PT BUDI DARMADI",
"phone": "081234567891"
},
"recipient": {
"firstName": "Sari",
"lastName": "Sutarni",
"companyName": "PT SARI SUTARNI",
"email": "sari.sutarni@ss.com",
"phone": "089999999999",
"actualRecipientName": null,
"actualRecipientRelation": null
},
"origin": {
"address": "Cipete",
"coordinates": { "latitude": -6.277775, "longitude": 106.800365 }
},
"destination": {
"address": "Depok",
"coordinates": { "latitude": -6.294332, "longitude": 106.782108 }
},
"packages": [
{
"name": "Helm Sepeda",
"description": "Helm Sepeda Lokal",
"quantity": 1,
"price": 23000,
"weight": 80,
"length": 10,
"width": 10,
"height": 10
}
],
"media": [],
"quote": { "amount": 21000 },
"createdAt": "2024-12-27T14:18:17.128Z",
"pickupAt": null,
"cancelledAt": "2024-12-27T14:18:58.750Z",
"reason": "Pesanan sudah tidak diperlukan/terpenuhi",
"reasonCode": "EB2102"
}

Field reference

providerOrderIDstringalways
Your AWB. Echoed verbatim from Create Delivery.
deliveryIDstringalways
Dash-issued id.
statusstringalways
Current delivery status. See Status reference for the full list. Changed in v2 — EXPRESS splits v1's single FAILED into FAILED_PICKUP and FAILED_DELIVERY; LOGISTIC still emits FAILED.
failedCountnumberalways
Incremented each time a failure occurs.
courierobjectnullable
Driver info. Only present once the delivery has reached PENDING_PICKUP (EXPRESS) or PENDING_DELIVERY (LOGISTIC). May change on reassignment, and drops back to null on ON_HOLD, where the package sits with Dash Ops and no rider is assigned.
courier.namestringnullable
Driver display name.
courier.phonestringnullable
Driver phone number.
courier.vehiclePlateNumberstringnullable
New in v2. Driver's vehicle plate. Present whenever courier is.
courier.profileImageUrlstringnullable
New in v2. URL of the driver's profile photo, for showing the driver's face alongside their name. Present whenever courier is, but null for a driver with no photo on file — always render a fallback. Changes on reassignment, along with the rest of the courier block.
trackingURLstringnullable
Live tracking page URL. EXPRESS only. Present from PENDING_PICKUP onward (once a driver is assigned).
weightfloatalways
Sum of weight across all packages (kg).
senderobjectalways
Sender contact block, echoed.
recipientobjectalways
Recipient contact block, echoed.
recipient.actualRecipientNamestringnullable
Name of the actual person who signed for the package. Populated on COMPLETED.
recipient.actualRecipientRelationstringnullable
New in v2. Relation of the actual signer to the intended recipient (e.g. "spouse"). Populated alongside actualRecipientName on COMPLETED.
originobjectalways
Pickup address + coordinates.
destinationobjectalways
Dropoff address + coordinates.
packages[]arrayalways
Package rows as submitted.
media[]arrayalways
POD media. Empty array until pickup. Types: PICKUP_PROOF (EXPRESS only), DELIVERY_PROOF, FAILED_PICKUP_PROOF, FAILED_DELIVERY_PROOF, FAILED_RETURN_PROOF, RETURN_PROOF. Changed in v2 — v1's single FAILED_PROOF splits into FAILED_PICKUP_PROOF / FAILED_DELIVERY_PROOF, by the leg the delivery failed on, matching the FAILED_PICKUP / FAILED_DELIVERY statuses. FAILED_RETURN_PROOF is captured on FAILED_IN_RETURN and RETURN_PROOF on RETURNED.
quoteobjectalways
Quote summary.
quote.amountnumberalways
Total fare in IDR.
createdAtdatetimealways
When the delivery was created.
updatedAtdatetimenullable
Present on VERIFIED, NOT_VERIFIED, PENDING_PICKUP, PICKING_UP, ARRIVED_AT_PICKUP_POINT, IN_DELIVERY, ARRIVED_AT_DESTINATION.
pickupAtdatetimenullable
Time the driver picked up the package. EXPRESS: present from PENDING_DELIVERY onward (PENDING_DELIVERY, IN_DELIVERY, COMPLETED, FAILED_DELIVERY); null on FAILED_PICKUP. LOGISTIC: present from IN_DELIVERY onward; null on a pickup-phase FAILED.
completedAtdatetimenullable
Present only on COMPLETED.
failedAtdatetimenullable
Present only on a failure event — FAILED_PICKUP / FAILED_DELIVERY (EXPRESS) or FAILED (LOGISTIC).
reasonstringnullable
Changed in v2 — replaces v1's separate failedReason / cancelledReason with one field, human-readable text. Present on the failure statuses and CANCELLED, e.g. "Penerima tidak ada di alamat".
reasonCodestringnullable
New in v2. Internal reason code alongside reason — a leg prefix (EA preparation, EB pre-pickup, EC post-pickup, ED in-return) followed by actor, type, and sequence digits, e.g. "EB3003", "EC5003", "EB2102". Present on the failure statuses and CANCELLED. The prefix lines up with the leg: FAILED_PICKUP carries an EB code, FAILED_DELIVERY an EC code, FAILED_IN_RETURN an ED code. See Error code reference for the full breakdown.
cancelledAtdatetimenullable
Present only on CANCELLED.