Dispatch a delivery from your order push

OrderOut can send a courier for orders placed on your platform. You get a quote, then push the order with that quote. There is no separate "create delivery" call.

❗️

There is no sandbox for dispatch

api.orderout.co dispatches real couriers. Getting quotes and cancelling are safe to test, but pushing an order with delivery.quote_id sends a real driver. If you don't cancel before a driver is assigned, there is a $10 cancellation fee, for you and for OrderOut. Contact us before your first dispatch test.

Before you start

  • Create an account with Onboarding (or Create restaurant) and store the restaurant id.
  • Your channel is connected to the restaurant (destination.storeId in the push).
  • The restaurant's integration is enabled in the OrderOut dashboard. Otherwise pushes return 410.

1. Get quotes

Call Get Quotes (POST /v2/delivery/quotes):

{
  "restaurant_id": 5208499903266816,
  "dropoff_street": "12 Main St",
  "dropoff_city": "Kingston",
  "dropoff_state": "NY",
  "dropoff_zip": "12401",
  "dropoff_country": "US",
  "dropoff_instructions": "Leave at the door",
  "pickup_minutes": 15
}
  • pickup_minutes (default 10) is when the courier should pick up, in minutes from now. Set it to your prep time.
  • Choose a quote from the response. price is in cents (499 = $4.99). Quotes are valid for 7 days and can be used for one order, for the restaurant they were issued for.

2. Push the order with the quote

Call Push Order (POST /api/channel/order/push) with orderType: "DELIVERY" and the quote id in payload.order.delivery.quote_id:

{
  "destination": { "storeId": "<your store id for this restaurant>" },
  "source": {
    "orderNumber": "A-1042",
    "placedOn": "2026-10-15T12:30:01-0400",
    "additionalInfo": ""
  },
  "payload": {
    "customer": {
      "customerName": "Jane Doe",
      "phoneNumber": "5552221234",
      "streetName": "12 Main St",
      "city": "Kingston",
      "state": "NY",
      "zipCode": "12401",
      "deliveryNotes": "Leave at the door"
    },
    "order": {
      "orderType": "DELIVERY",
      "delivery": { "quote_id": 6569738449453056 },
      "subtotal": 24.99,
      "tax": 2.00,
      "deliveryFee": 4.99,
      "driverTip": 3.00,
      "total": 34.98,
      "payment": { "status": "PAID", "mode": "CREDIT_CARD" },
      "items": [
        { "id": "burger", "name": "Burger", "price": 24.99, "quantity": 1, "total": 24.99, "modifiers": [] }
      ]
    }
  }
}
  • Money is in dollars.
  • customer.phoneNumber must be a 10-digit number without the country code. An invalid phone stops the dispatch.
  • The pickup and drop-off addresses come from the quote. The customer name and phone, subtotal and driverTip come from the order.
  • The response's order_id is the OrderOut order id. Keep it to cancel.
  • The push response confirms the order. The courier is dispatched right after; dispatch failures are not reported back yet.

3. Cancel if needed

Call Cancel Order (POST /v2/delivery/orders/{order_id}/cancel) with {"reason": "CustomerCancelled", "reason_comments": "Customer called to cancel"}, using the OrderOut order id from the push response. reason is one of the courier network's reason codes (listed on the Cancel Order page); reason_comments is optional free text. Cancel before a driver is assigned to avoid the $10 fee.

Status updates

Not available yet. See Webhook Statuses.


Did this page help you?