01When does it fire?
- When a cancellation request is decided: approved (APPROVED) or rejected (REJECTED).
- Once per decision — the decision is linked to the same request id carried by the request event.
02Full payload example
{
"id": "mwh:order-cancellation-decided:9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b:c7d1e4a9-2b35-4f68-9c01-5d7e8a9b0c12",
"type": "order.cancellation_decided",
"api_version": "v2",
"tenant_id": "9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b",
"data": {
"request_id": "c7d1e4a9-2b35-4f68-9c01-5d7e8a9b0c12",
"order_id": "3f0c8e6a-1d24-4b7f-9a3e-2c5b8d90f1aa",
"receipt_number": "RCP-20261020-1482",
"status": "APPROVED",
"requested_by": "CUSTOMER",
"reason": "CHANGED_MIND",
"decided_by": "1f2e3d4c-5b6a-4988-8a7b-6c5d4e3f2a1b",
"decided_at": "2026-10-20T12:52:31.884220+00:00",
"decision_reason": "The order had not entered preparation yet",
"changed_at": "2026-10-20T12:52:31.884611+00:00",
"order": {
"order_id": "3f0c8e6a-1d24-4b7f-9a3e-2c5b8d90f1aa",
"receipt_number": "RCP-20261020-1482",
"order_type": "DELIVERY",
"order_source": "WEBSITE",
"status": "PENDING",
"customer_name": "Ahmed Mahmoud",
"customer_phone": "+201001234567",
"delivery_address": "15 El-Tahrir St., Dokki, Giza",
"table_number": null,
"branch_id": "4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f7a",
"payment_method": "COD",
"coupon_code": "WELCOME10",
"total_amount": 624,
"tax_amount": 62,
"shipping_fee": 50,
"discount_amount": 50,
"created_at": "2026-10-20T12:34:56.789147+00:00",
"items": [
{
"product_id": "7a2b9c4e-8f31-4d5a-b6c2-1e9f8a7b6c5d",
"variant_id": "2c4e6f8a-0b1d-4e2f-8a3b-5c6d7e8f9a0b",
"name": "Cotton T-shirt - Blue / L",
"price": 225,
"quantity": 2
},
{
"product_id": "9d8c7b6a-5f4e-4d3c-2b1a-0f9e8d7c6b5a",
"variant_id": null,
"name": "Summer cap",
"price": 112,
"quantity": 1
}
],
"items_truncated": false
}
}
}03data fields
| Field | Meaning |
|---|---|
| request_id | The cancellation request id (UUID). |
| order_id | The order id. |
| receipt_number | The order receipt number. |
| status | The decision: APPROVED or REJECTED. |
| requested_by | The party that originally opened the request. |
| reason | The original cancellation reason. |
| decided_by | The id of the user who decided (UUID). |
| decided_at | When the decision was made, ISO 8601. |
| decision_reason | The decision reason (e.g. why it was rejected). |
| changed_at | When the request row was last updated. |
| order | The full order summary — the same object as the order.created summary. |
04Event identity
Pattern: mwh:order-cancellation-decided:<tenant_id>:<request_id> — the same resource id as the request event, so you can correlate the two easily.
COMPLETE YOUR INTEGRATION
