vGrubs
API Docs
vgrubs.com

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.

Storesupported_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}
Treat 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.

400 Bad Request
{
"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.