This guide will be removed on April 29, 2022. Please use our new, easier-to-use Toast technical documentation site. All updated content is on the new site.

Creating curbside pickup orders

You can create a curbside pickup order by specifying a dining option whose behavior is TAKE_OUT and curbside value is true. You use this dining option to include information that the restaurant can use to identify a guest when they arrive outside the premises to pick up their order.

You use the configuration API's /diningOptions endpoint to GET the list of dining options configured for a restaurant. The response from this endpoint contains details about all available dining options and specifies whether an option is configured to have curbside behavior. For more information, see Dining Options for Orders.

When you place an order that specifies a dining option with curbside behavior, the request body can include the CurbsidePickupInfo object. The object must contain transportDescription information. The transportDescription field accepts string input and contains information about a guest's mode of transportation such as the color, make, or model of their vehicle.

Note

You can POST an order that specifies a dining option with curbside behavior without including the CurbsidePickupInfo object in the request body. Including curbside pickup information is recommended as it helps restaurant staff better identify a guest when they arrive to pick up their order.

The following example shows the message body for a POST request to the /orders endpoint that specifies a dining option that is configured as TAKE_OUT with curbside behavior.

Example POST request message body to create a takeout order with curbside behavior

{
  "entityType": "Order",
  "diningOption": {
    "guid": "18855a26-40d4-4a8f-b484-c6af211dd597",1
    "entityType": "DiningOption"
  },
  "curbsidePickupInfo": {2
    "entityType": "CurbsidePickup",
    "notes": "Convertible with top down",
    "transportColor": "blue",
    "transportDescription": "Street Cruiser"
  },

  "checks": [
    {
      "entityType": "Check",
      "selections": [3
        {
          "entityType": "MenuItemSelection",
          "itemGroup": {
            "guid": "75cd1156-c33a-4842-9cbd-717aebbf069e",
            "entityType": "MenuGroup"
          },
          "item": {
            "entityType": "MenuItem",
            "guid": "2478cec3-bca2-4956-a3aa-eda571d5518a"
          },
          "quantity": 1,
          "modifiers": []
        }
      ],
      "customer": {4
          "entityType": "Customer",
          "firstName": "Alice",
          "lastName": "Patron",
          "phone": "333-555-5555",
          "email": "alice@example.com"5
      }
    }
  ]
}

1

The GUID of the dining option for the order. For this example, the dining option is take out and has curbside behavior.

2

The curbsidePickupInfo value contains information about a guest's mode of transportation. The restaurant uses the information in the transportDescription, transportColor, and notes fields to identify the guest when they arrive outside the premises to pick up their order. transportDescription is a required field when the dining option has curbside behavior.

3

The selections value contains menu item information for the order. Its format is similar to the dine-in example.

4

The customer value contains information about the customer who will pick up the order. This customer information is mandatory for takeout orders. The firstName, lastName, phone, and email fields are required and the data must be correctly formatted (for example, the phone number must have exactly 10 digits).

5

The email value in a Customer object is the key value that indicates guest uniqueness. email must be unique per individual guest.


The following example shows the response data returned by the /orders endpoint of the orders API.

Example orders endpoint response data for a takeout order with curbside behavior

{
    "guid": "db3acf81-e63e-47ed-aa1b-cba97e15549f",1
    "entityType": "Order",
    "externalId": null,
    "revenueCenter": null,
    "server": {
        "guid": "fbfb15e0-cc32-44f1-9239-195324d6be76",
        "entityType": "RestaurantUser",
        "externalId": null
    },
    "lastModifiedDevice": {
        "id": null
    },

    [contents omitted]

    "deliveryInfo": null,
    "serviceArea": null,
    "curbsidePickupInfo": {2
        "guid": "0ca623cb-c1eb-4881-8222-67a393e00b5c",
        "entityType": "CurbsidePickup",
        "transportColor": "blue",
        "notes": "Convertible with top down",
        "transportDescription": "Street Cruiser"
    },
    "numberOfGuests": 1,
    "diningOption": {
        "guid": "162a8c8d-4ca9-4cf1-b1bd-88470cc0d928",
        "entityType": "DiningOption",
        "externalId": null
    },
    "openedDate": "2020-06-17T19:14:56.348+0000",
    "voidBusinessDate": null,
    "checks": [
        {
            "guid": "682b5aaf-d4e3-4e7b-ac53-f897ea5cad2d",
            "entityType": "Check",
            "externalId": null,
            "displayNumber": "3",
            "payments": [],3
            "appliedDiscounts": [],
            "lastModifiedDevice": {
                "id": null
            },
            "voidDate": null,
            "paidDate": null,4
            "appliedLoyaltyInfo": null,
            "voided": false,
            "paymentStatus": "OPEN",
            "amount": 15.98,
            "tabName": null,
            "taxExempt": false,
            "openedDate": "2020-06-17T19:14:56.348+0000",
            "totalAmount": 17.1,5
            "selections": [
                {
                    [contents omitted]
                }
            ],
                [contents omitted]
            },
            "closedDate": null,
            "deletedDate": null,
            "modifiedDate": "2020-06-17T19:14:56.565+0000",
            "taxAmount": 1.12,
            "appliedServiceCharges": [],
            "customer": {6
                "guid": "84f4ac23-e05b-46a9-99d9-16a2a8516bb8",
                "entityType": "Customer",
                "firstName": "Alice",
                "lastName": "Patron",
                "phone": "3335555555",
                "email": "alice@example.com"
            }
        }
    ],
    "deleted": false,
    "createdDevice": {
        "id": null
    },
    
    [contents omitted]
}

1

The unique identifier that the Toast platform assigns to the order.

2

Information about the mode of transportation that the guest will use to arrive outside the premises to pick up their order.

3

The payment information is empty because the order request was made without a payments value. This means that the guest has not made any payments for this check.

4

The date and time are null because the guest has not made a payment for the check.

5

The total amount (including tax) of this check.

6

Information about the guest who will pick up the order.


The curbside pickup information you POST while creating a takeout order is displayed at the top of a check on the order screen on Toast POS devices. The information is also printed on kitchen tickets and guest receipts.

The following example shows the guest's name, vehicle description, and phone number displayed at the top of a check on the order screen.