Skip to main content

Order Acceptance

Overview

When Stream sends an order via the Handle Order (Stream -> POS) endpoint, your POS must respond to indicate whether the order can be fulfilled.

Standard Order Acceptance

Upon a successful 200 response with order.created event type, Stream considers the order accepted and inserted into the POS successfully. At this point, the DSP is notified that the order is accepted.

Required Response Fields

The only required field in a successful 2xx response is:

  • order.provider_id - Your POS order ID, used for all future communication about this order

Response Example

{
"order": {
"provider_id": "pos-order-12345",
"prep_time_minutes": 15
}
}

Dynamic Prep Time

For dynamic control of preparation time upon order submission, include prep_time_minutes in your acceptance response. This allows you to adjust preparation time based on:

  • Current kitchen load
  • Order complexity
  • Time of day
  • Staff availability

Future Orders

Some DSP platforms support scheduling orders in advance. When this occurs:

  • is_future_order will be set to true
  • requested_for will contain the estimated fulfillment time

Other DSP platforms, for example, Uber & DoorDash, hold the order on their end and notify Stream closer to the fulfillment time. You will not receive advance indication that it was a future order.

Async Order Acceptance

If your POS integration needs additional time to validate or manually review orders before acceptance, see Async Order Acceptance for the deferred acceptance workflow.

When to Use Async Acceptance

Use async acceptance when your POS needs to:

  • Queue orders for manual review by staff
  • Run extended validation processes
  • Check external systems before confirming

Quick Example

Respond with async_acceptance: true to defer the decision:

{
"order": {
"provider_id": "pos-order-123",
"prep_time_minutes": 15,
"async_acceptance": true
}
}

Then send a webhook event within 60 seconds to confirm or reject.

See the full async order acceptance documentation for complete details.

Order Rejection

If your POS cannot fulfill the order, return a 400 status code with validation details. See Order Rejection & Validation for details on validation types and error formats.