Skip to main content

In-Store Orders

When a merchant creates an order directly in your POS system (such as call-in orders, walk-in orders, or other first-party orders), you can submit these orders to Stream for processing through the Handle Webhook Event (POS -> Stream) endpoint.

This allows Stream to handle dispatch, delivery coordination, and other services for orders that originated in your POS system.

Submitting In-Store Orders

To submit an in-store order to Stream, send a POST request to the webhook endpoint with the order.created event type. The order will be processed by Stream and can be routed to appropriate delivery partners or services.

{
"event": "order.created",
"data": {
"order": {
"provider_id": "pos_order_123",
"location_id": "location_456",
"fulfillment_type": "delivery",
"customer": {
"name": "John Doe",
"phone": "+1234567890",
"email": "john.doe@example.com"
},
"delivery_address": {
"street": "123 Main St",
"city": "Anytown",
"state": "CA",
"zip": "12345",
"country": "US"
},
"line_items": [
{
"name": "Cheeseburger",
"quantity": 2,
"price_amount": 1200,
"price_currency": "usd",
"provider_id": "item_789",
"modifiers": [
{
"name": "Extra Cheese",
"price_amount": 100,
"price_currency": "usd",
"provider_id": "modifier_101"
}
]
}
],
"subtotal_amount": 2400,
"tax_amount": 200,
"total_amount": 2600,
"currency": "usd",
"notes": "Extra crispy fries please"
}
}
}

Order Processing

Once an in-store order is successfully submitted to Stream:

  1. Order Acceptance: Stream will return a 200 status code with confirmation of order acceptance
  2. Dispatch Processing: For delivery orders, Stream will coordinate with delivery partners
  3. Status Tracking: You can track order status through Stream's order management system
  4. Customer Communication: Stream can handle customer notifications and updates

Order Status Updates

You can update the status of in-store orders by sending status update events to the same webhook endpoint:

{
"event": "order.status.updated",
"data": {
"order": {
"provider_id": "pos_order_123",
"status": "ready_for_pickup"
}
}
}

Available status values:

StatusDescription
preparingOrder is being prepared in the kitchen
ready_for_pickupOrder is prepared and ready for pickup by customer or driver
out_for_deliveryOrder is being delivered (for delivery orders)
completedOrder has been completed (picked up or delivered)
canceledOrder has been canceled

Order Cancellation

To cancel an in-store order that has been submitted to Stream, send a cancellation event:

{
"event": "order.canceled",
"data": {
"order": {
"provider_id": "pos_order_123",
"reason": "Customer requested cancellation"
}
}
}

Special Considerations

  • Call-in Orders: These are typically created manually in the POS and may require additional customer information collection
  • Walk-in Orders: Orders placed in person that may need delivery coordination
  • Future Orders: Orders scheduled for later pickup or delivery should include requested_for timestamp
  • Payment Processing: In-store orders may have different payment processing requirements than third-party orders