Supported Order Types
Which order types a store accepts, where to read them, and what happens to an order a store cannot take.
A store accepts pickup and delivery unless it is a virtual store. A virtual store is a vGrubs brand that is not a physical location. It has no counter of its own, so it accepts delivery only.
| Store | supported_order_types |
|---|---|
| Physical location | ["pickup", "delivery"] |
| Virtual store | ["delivery"] |
Where to read it
The list is returned as supported_order_types by three endpoints. All three return the same value for the same store, so read it from whichever one you already call:
- Publish Menu -
POST /partner/publish-menu/{webhookPath} - Get Merchant Timezone -
POST /partner/get-timezone/{partner-name} - Get Fees -
POST /partner/get-fees/{partner-name}
supported_order_types as a list and check whether it contains a type. Do not compare it to a fixed array: more values may be added later. It is never empty.On Publish Menu, is_virtual: true always comes with supported_order_types: ["delivery"], so you can rely on either one. supported_order_types is the recommended field.
Pickup and cash
Get Fees still returns cash_pickup_allowed separately. It says whether the store accepts cash for pickup orders. A store can include pickup in supported_order_types and still have cash_pickup_allowed: false: pickup is accepted, but it must be prepaid.
Order validation
A new order whose order.type is not in the store's supported_order_types is rejected with 400 and is not created. In practice this means a pickup order sent to a virtual store.
{"error": true,"message": "Order type pickup is not supported for store ID 920."}
Updates of an order vGrubs already has are never rejected by this check.
Cash orders are checked against the cash pickup rules first, so a cash pickup order for a virtual store is rejected with the cash error instead: Cash payment is not allowed for store ID {merchant_id}. or Cash orders are not enabled for this partner.