Skip to main content

Order Lifecycle

All orders received via the API are considered auto-confirmed and ready for processing. This page describes the typical lifecycle and statuses.

Order Statuses

Orders progress through various statuses during their lifecycle:

StatusDescription
newActive order ready for preparation
futureOrder scheduled for later fulfillment
readyOrder prepared and ready for pickup/delivery
finishedOrder completed successfully
cancelledOrder was cancelled
rejectedOrder rejected by the system

Status Transitions

Typical Pickup Order Flow

  1. Created: Order arrives as new (immediate) or future (scheduled)
  2. Scheduled: future orders transition to new at scheduled time
  3. Prepared: Kitchen marks order as ready
  4. Completed: Order marked as finished when picked up

Typical Delivery Order Flow

  1. Created: Order arrives as new or future
  2. Courier Assignment: Delivery platform assigns courier
  3. Prepared: Kitchen marks order as ready
  4. In Transit: Courier picks up and delivers order
  5. Completed: Order marked as finished upon delivery

Delivery Statuses

For delivery orders, track courier progress through deliveryStatus:

StatusDescription
ASSIGNEDCourier assigned to order
EN_ROUTE_TO_STORE_LOCATIONCourier traveling to restaurant
EN_ROUTE_TO_CUSTOMERCourier traveling to customer
COMPLETEDDelivery completed
CANCELEDDelivery cancelled

Future Orders

Future orders are scheduled for later fulfillment:

  • Created with future status
  • Include estimatedPickupAt timestamp
  • Automatically transition to new at scheduled time
  • Appear in order lists immediately upon creation

Cancellations

Orders can be cancelled by different parties:

Cancellation Sources

  • Platform: Cancelled by ordering platform (customer request)
  • Merchant: Cancelled by restaurant
  • System: Automatically cancelled (e.g., timeout)

Cancellation Information

When an order is cancelled, the cancellation object provides:

  • by: Who initiated the cancellation
  • reason: Explanation for cancellation
  • at: Timestamp of cancellation

Webhook Event Flow

Track order progression through webhook events:

Pickup Orders

  1. order.created — New order received
  2. order.status.updated — Status changes
  3. order.canceled — If cancelled (optional)

Delivery Orders

  1. order.created — New order received
  2. order.delivery.updated — Courier status updates
  3. order.status.updated — Kitchen status changes
  4. order.canceled — If cancelled (optional)

Best Practices

Handling Status Updates

  • Process status changes idempotently
  • Use updatedAt to determine latest state
  • Handle out-of-order webhook events

Managing Future Orders

  • Display scheduled time to kitchen staff
  • Monitor transition from future to new
  • Allow cancellation before preparation starts

Tracking Deliveries

  • Monitor both status and deliveryStatus
  • status reflects kitchen workflow
  • deliveryStatus tracks courier progress