Reference
Order Status Handling & Delivery Time Updates
Handle available order states and delivery-time changes correctly while accounting for differences between ordering platforms.
- Topic
- Orders & delivery
- Last reviewed
How order states and delivery times are handled across platforms
MERGEPORT normalizes orders from different platforms and provides them to POS systems through one unified API. Order status changes and delivery-time updates are sent through the same order endpoint:
PATCH /orders/{orderId}
Example:
{
"state": "acceptedByPOS",
"timeChange": "2026-07-06T18:45:00.000Z"
}
Updating order states
The new state is set in the state field.
{
"state": "pickedUp"
}
Important rules:
- Only use states that are listed in the order's
possibleStateChanges. possibleStateChangesis included with every order.- The most important state is
acceptedByPOS, because it confirms the order to the platform. - Platforms may use different internal state names and state logic.
- State changes can affect customer-facing order views, courier logic, and platform workflows.
Understanding possibleStateChanges
Each order contains the possible next state changes, for example:
"possibleStateChanges": [
{ "state": "acceptedByPOS", "timeChange": true },
{ "state": "ready", "timeChange": false }
]
This means:
state: This state may be sent as the next update.timeChange: Indicates whether a time update is allowed together with this state change.
If timeChange is false, do not send a time update with that state change.
Delivery time updates
Delivery time updates are sent through the timeChange field.
Important rules:
timeChangemust be sent together withstate.timeChangemust be an absolute ISO-8601 timestamp.timeChangeis not a minute delta.- The time should be sent in UTC.
Example:
{
"state": "acceptedByPOS",
"timeChange": "2026-07-06T18:45:00.000Z"
}
We recommend sending time updates mainly with these state changes:
acceptedByPOSpreparing
Avoid frequent or repeated time updates.
Unified delivery logic with drivingTime
To make delivery-order behavior more consistent, the integration setup can include defaultPreparationTime.drivingTime:
SetSiteSpecs in the MERGEPORT API documentation
The POS can then generally send the final customer delivery time as timeChange for delivery orders.
MERGEPORT uses this time differently depending on the platform:
- For Wolt and Uber Eats courier deliveries, MERGEPORT can calculate the required pickup or ready time from it.
- For Wolt
selfDelivery, the final customer delivery time is sent directly to Wolt. - For Lieferando delivery orders, the time refers to the final customer delivery time.
Important:
- For pickup or takeaway orders, the relevant time is the customer pickup time, not a delivery time.
- Only send
timeChangefor state changes wherepossibleStateChanges[].timeChangeistrue.
Platform-specific behavior
Wolt
For Wolt, distinguish between Wolt courier delivery and selfDelivery.
Wolt courier delivery
For Wolt courier deliveries, Wolt generally expects a courier pickup time.
If the POS sends a final customer delivery time and defaultPreparationTime.drivingTime is configured, MERGEPORT subtracts the driving time and sends the calculated pickup or ready time to Wolt.
Example:
- POS sends final delivery time:
19:00 drivingTime:20minutes- MERGEPORT sends to Wolt:
18:40as the pickup or ready time
Note: Wolt limits pickup-time adjustments. The calculated or sent pickup time cannot move arbitrarily far away from the original Wolt estimate.
Wolt selfDelivery
With Wolt selfDelivery, the merchant or the merchant's own driver handles delivery.
In this case, Wolt expects the final customer delivery time. MERGEPORT does not subtract drivingTime.
This means:
- The POS sends the final customer delivery time.
- MERGEPORT sends that time directly to Wolt.
Uber Eats
MERGEPORT generally sends a ready or pickup time to Uber Eats.
If the POS wants to send a final customer delivery time, defaultPreparationTime.drivingTime should be configured. MERGEPORT then subtracts the driving time and sends the corresponding ready or pickup time to Uber Eats.
Example:
- POS sends final delivery time:
19:00 drivingTime:20minutes- MERGEPORT sends to Uber Eats:
18:40as the ready or pickup time
Lieferando / Just Eat Takeaway
For Lieferando delivery orders, the time usually refers to the final customer delivery time.
For pickup orders, the time refers to the customer pickup time.
No drivingTime conversion is required for Lieferando.
Notes:
- Delivery time updates are generally supported, but may be limited depending on the Lieferando setup.
- Certain Lieferando or Scoober setups can have restrictions.
- Time updates should be sent as early as possible, ideally with
acceptedByPOSorpreparing.
Unaccepted orders and timeouts
Unaccepted orders eventually run into a timeout.
Platforms have their own acceptance windows. If an order is not confirmed in time, it may be automatically rejected or canceled from the customer's perspective.
For that reason, always send acceptedByPOS as soon as possible.
Recommendation for POS integrations
For a consistent implementation:
- Retrieve the order or receive it by webhook.
- Check
possibleStateChanges. - Confirm the order promptly with
acceptedByPOS. - If a delivery time should be updated:
- Send
timeChangeonly when it is allowed for the state. - Send an absolute ISO-8601 timestamp.
- For delivery orders, ideally send the final customer delivery time.
- For Wolt or Uber courier deliveries, configure
defaultPreparationTime.drivingTimeso MERGEPORT can calculate the pickup or ready time.
- Send
Example
The POS confirms a delivery order and sets the final customer delivery time:
{
"state": "acceptedByPOS",
"timeChange": "2026-07-06T18:45:00.000Z"
}
MERGEPORT processes this time depending on the platform:
- Wolt courier: converted to pickup time if
drivingTimeis set. - Wolt selfDelivery: forwarded directly as the customer delivery time.
- Uber Eats: converted to ready or pickup time if
drivingTimeis set. - Lieferando: used directly as the customer delivery time.
Help Center
Related articles
Integration Explorer