Place order for Catering Pickup

This guide will show you how to develop a flow that enables your customers to place an order for Catering Pickup (see Order Types for more information).

Note

The terms Catering Pickup and Catering Takeout are used interchangeably.

Menu Screen with Pickup Time selected Order Pickup Time Configuration Scheduled order date selection
catering_pickup_menu_screen.png
catering_pickup_pickup_times.png
catering_pickup_date_selection.png
Order summary Catering pickup event details Order placed
catering_pickup_order_summary.png
catering_pickup_special_instructions.png
catering_pickup_order_placed.png

Before proceeding, you should have implemented:

Get Singular Point

Singular Points are physical or virtual destinations, connected to Areas, that orders are placed to.

In order to retrieve the Singular Point UUID for the Catering Pickup Area, the venue needs to be retrieved.

We can make a call to /venues/{venue_uuid} in order to get all details of the Venue, including its Areas:

Request

{
  "method": "get",
  "url": "https://api-public-playground.menu.app/api/venues/{venue_uuid}",
  "headers": {
    "X-Request-ID": "69da3547-204b-4093-a225-54e084c24215",
    "Application": "f3a90488ffee32c3acb6fcd0ca417cf6",
    "Api-Version": 4.38.0
  }
}

Response

{
    "status": "OK",
    "code": 200,
    "data": {
        "venue": {
            "id": "a9d6d0c8-1689-4114-b1ec-6da9c33f0384",
            "uuid": "a9d6d0c8-1689-4114-b1ec-6da9c33f0384",
            "name": "Kauwela San Francisco 5",
            "code": "3342",
            "currency_id": "692f600e-3e2a-4c43-9bed-66e5a23473bc",
            "language_id": 1,
            "external_dlc_id": null,
            "brand_id": "de3a0527-7e4c-4888-91de-71b6d29efa74",
            "timezone": {
                "name": "America/Los_Angeles",
                "offset": "-07:00"
            },
            "description": "",
            "kiosk_receipt_footer": "",
            "imprint": "",
            "welcome_message": "welcome_message welcome_messagewelcome_message",
            "translations": {
                "description": "",
                "kiosk_receipt_footer": null,
                "welcome_message": "welcome_message welcome_messagewelcome_message"
            },
            "address": "798 Brannan St",
            "state": 1,
            "city": "San Francisco",
            "zip": "94103",
            "latitude": 37.7737509,
            "longitude": -122.4135012,
            "tax_number": "123XYZ234",
            "phone": "134829481",
            "price_configuration": {
                "order_types": [
                    {
                        "type_id": 1,
                        "price_configuration": null
                    },
                    {
                        "type_id": 4,
                        "price_configuration": null
                    },
                    {
                        "type_id": 6,
                        "price_configuration": null
                    },
                    {
                        "type_id": 7,
                        "price_configuration": 3
                    },
                    {
                        "type_id": 8,
                        "price_configuration": null
                    },
                    {
                        "type_id": 9,
                        "price_configuration": null
                    }
                ],
                "external_channels": []
            },
            "used_price_configurations": [
                3
            ],
            "cuisine": "",
            "store_url": "",
            "is_shown_in_directory": true,
            "allow_item_comments": false,
            "tip_default": 5,
            "tip_max": 15,
            "service_charge": 0,
            "pickup_time": 5,
            "is_pickup_on_open_allowed": false,
            "calculation_method": "exclusive",
            "image": {
                "thumbnail_small": "https://s3.eu-central-1.amazonaws.com/api.playground/images/venue_images/_thumbs280/2023-07-27/5ffd72acf623047511e49a2f91e19a55.jpeg",
                "thumbnail_medium": "https://s3.eu-central-1.amazonaws.com/api.playground/images/venue_images/_thumbs720/2023-07-27/5ffd72acf623047511e49a2f91e19a55.jpeg",
                "fullsize": "https://s3.eu-central-1.amazonaws.com/api.playground/images/venue_images/2023-07-27/5ffd72acf623047511e49a2f91e19a55.jpeg"
            },
            "available_payment_methods": [
                {
                    "payment_method_id": "e3423d4d-7200-4c16-a154-a51fb2695838",
                    "payment_method_type_id": 1,
                    "payment_method_brand": "Visa",
                    "payment_processor_type_id": 32,
                    "payment_processor_id": "5bab16ce-bb27-4e62-aff4-124266647eaf",
                    "properties": null,
                    "fraud_detection_processor_id": null,
                    "visibility_scopes": null
                },
                {
                    "payment_method_id": "ea1ac590-b980-4d79-9376-9411fae5ff11",
                    "payment_method_type_id": 1,
                    "payment_method_brand": "MasterCard",
                    "payment_processor_type_id": 32,
                    "payment_processor_id": "5bab16ce-bb27-4e62-aff4-124266647eaf",
                    "properties": null,
                    "fraud_detection_processor_id": null,
                    "visibility_scopes": null
                },
                {
                    "payment_method_id": "8f78d853-2ad1-4371-9a47-68ca18f291cf",
                    "payment_method_type_id": 1,
                    "payment_method_brand": "Amex",
                    "payment_processor_type_id": 32,
                    "payment_processor_id": "5bab16ce-bb27-4e62-aff4-124266647eaf",
                    "properties": null,
                    "fraud_detection_processor_id": null,
                    "visibility_scopes": null
                },
                {
                    "payment_method_id": "e7ac7117-13ba-4da3-a7f2-142cba95eb48",
                    "payment_method_type_id": 1,
                    "payment_method_brand": "Diners Club",
                    "payment_processor_type_id": 32,
                    "payment_processor_id": "5bab16ce-bb27-4e62-aff4-124266647eaf",
                    "properties": null,
                    "fraud_detection_processor_id": null,
                    "visibility_scopes": null
                }
            ],
            "country": {
                "id": "5123365b-2d43-45bf-8418-21dcacc595ef",
                "currency_id": "692f600e-3e2a-4c43-9bed-66e5a23473bc",
                "name": "American Samoa",
                "code": "AS",
                "code_alpha3": "ASM",
                "code_numeric": "016",
                "calling_code": "+1-684",
                "distance_unit": "km",
                "is_address_number_first": false,
                "currency_settings": {
                    "currency_space": true,
                    "decimal_separator": ".",
                    "thousands_separator": ",",
                    "symbol_position": "left"
                },
                "supported_travel_modes": [
                    "driving"
                ],
                "available_payment_methods": []
            },
            "currency": {
                "id": "692f600e-3e2a-4c43-9bed-66e5a23473bc",
                "code": "EUR",
                "code_numeric": "978",
                "symbol": "€",
                "rounding_unit": 0.01,
                "rounding_unit_tip": 0.01
            },
            "order_types": [
                {
                    "id": "81035813-b64f-4776-8a6c-ef00043aff05",
                    "type_id": 1,
                    "reference_type": "OrderTypeDineIn",
                    "state": 1,
                    "is_table_supported": true,
                    "external_channel_only": false,
                    "tip_default": 0,
                    "tip_max": 0
                },
                {
                    "id": "aaa1ae2f-6bbf-4547-b722-61375cf1f835",
                    "type_id": 4,
                    "reference_type": "OrderTypePreorder",
                    "state": 1,
                    "is_table_supported": false,
                    "external_channel_only": false,
                    "tip_default": 0,
                    "tip_max": 0
                },
                {
                    "id": "b3265e27-eef5-425d-8f21-0f9780ff6236",
                    "type_id": 6,
                    "reference_type": "OrderTypeTakeOut",
                    "state": 1,
                    "is_table_supported": false,
                    "external_channel_only": false,
                    "tip_default": 5,
                    "tip_max": 15
                },
                {
                    "id": "3ca0c042-4a89-43fa-b197-7820a2818782",
                    "type_id": 7,
                    "reference_type": "OrderTypeDelivery",
                    "state": 1,
                    "is_table_supported": false,
                    "external_channel_only": false,
                    "tip_default": 0,
                    "tip_max": 0
                },
                {
                    "id": "5514ba04-70d9-47f8-826d-7c22deff741a",
                    "type_id": 8,
                    "reference_type": "OrderTypeCurbside",
                    "state": 1,
                    "is_table_supported": false,
                    "external_channel_only": false,
                    "tip_default": 5,
                    "tip_max": 15
                },
                {
                    "id": "a20372c5-d989-4d20-b64c-141f558f499e",
                    "type_id": 9,
                    "reference_type": "OrderTypeFoodspot",
                    "state": 1,
                    "is_table_supported": false,
                    "external_channel_only": false,
                    "tip_default": 0,
                    "tip_max": 0
                }
            ],
            "temporary_updated_entities": [],
            "serving_times": [
                {
                    "id": "219f26ca-2ccc-4433-b099-dcb4147cc512",
                    "type_id": 2,
                    "reference_type": "WeekDays",
                    "time_from": "06:30",
                    "time_to": "23:00",
                    "delivery_at": null,
                    "days": [
                        1,
                        2,
                        3,
                        4,
                        5
                    ]
                },
                {
                    "id": "60931918-f682-4e4a-a9db-65ae8d3d9d1f",
                    "type_id": 1,
                    "reference_type": "SpecialDays",
                    "time_from": null,
                    "time_to": null,
                    "delivery_at": null,
                    "date": "2023-08-31",
                    "date_to": "2023-08-31",
                    "working": false
                },
                {
                    "id": "4adfb91d-19a0-4313-8b42-86c96b3a737e",
                    "type_id": 1,
                    "reference_type": "SpecialDays",
                    "time_from": "08:00",
                    "time_to": "13:00",
                    "delivery_at": null,
                    "date": "2023-09-01",
                    "date_to": "2023-09-05",
                    "working": true
                }
            ],
            "is_open": false,
            "will_open": false,
            "has_discounts": true,
            "has_loyalty": true,
            "has_promotions": true,
            "has_delivery_integration": false,
            "delivery_integration_properties": null,
            "delivery_travel_type": "driving",
            "is_calculated_delivery_buffer_used": false,
            "is_monitoring_enabled": false,
            "is_threeds_enabled": false,
            "is_fraud_detection_enabled": false,
            "is_smart_orders_enabled": false,
            "use_pos_order_number": false,
            "has_uc_capacity_management": false,
            "kiosk_face_count": null,
            "is_order_regret_enabled": false,
            "is_billable": true,
            "default_delivery_buffer": 20,
            "integration": {
                "id": "361cc1a1-ca5d-451c-a893-3963c2efd0d7",
                "type_id": 1,
                "reference_type": "Plain",
                "is_windows_pos": false,
                "pos_modifier_group_type": 1,
                "support_combo_meals": false,
                "max_comment_limit": 0,
                "allow_multiple_days_in_advance": true
            },
            "created_at": "2023-07-24 13:54:56",
            "updated_at": "2023-08-05 22:34:33",
            "areas": [
                {
                    "id": "41d2dcf0-5e59-4204-b28d-67f03fcd4d91",
                    "type_id": 4,
                    "reference_type": "AreaTakeOut",
                    "menu_id": "899129db-5b88-4c95-8fe2-972e6faec523",
                    "singular_point_id": "db2f3288-63f4-4939-81f6-d0351bce9c70",
                    "pos_id": null,
                    "name": "takeout",
                    "use_tablet": true,
                    "state": 1,
                    "is_table_supported": 0,
                    "properties": {
                        "location_type": "table"
                    },
                    "order_types": [
                        {
                            "id": "b3265e27-eef5-425d-8f21-0f9780ff6236",
                            "type_id": 6,
                            "reference_type": "OrderTypeTakeOut",
                            "state": 1,
                            "is_table_supported": null,
                            "external_channel_only": false,
                            "tip_default": 5,
                            "tip_max": 15
                        }
                    ],
                    "table_pos_id": null,
                    "tablet": {
                        "id": "fdca7af8-1650-48dd-9481-df8059f33517",
                        "name": "SF tablet",
                        "use_notifications": 0,
                        "show_kiosk_orders": false,
                        "kiosk_notification_type": 0,
                        "middleware_endpoint": null,
                        "pls_name": null,
                        "state": 3,
                        "is_online": false,
                        "last_request_at": null,
                        "failure_reported": false,
                        "is_critical": false,
                        "area_ids": [
                            "41d2dcf0-5e59-4204-b28d-67f03fcd4d91",
                            "b39d789b-ecad-455a-a8d2-ad5bfa4e43d0",
                            "c2e6402c-518f-4d54-8830-6d818b25b608",
                            "2b7a5795-965a-4258-9f0d-8c9a987d0e26",
                            "181cbf5d-580c-4fb5-8391-79e850715872"
                        ],
                        "allow_disable_product": false
                    }
                },
                {
                    "id": "b39d789b-ecad-455a-a8d2-ad5bfa4e43d0",
                    "type_id": 6,
                    "reference_type": "AreaCurbside",
                    "menu_id": "899129db-5b88-4c95-8fe2-972e6faec523",
                    "singular_point_id": "661f5619-9495-4df0-94f0-a1e3dd552e99",
                    "pos_id": null,
                    "name": "curbside",
                    "use_tablet": true,
                    "state": 1,
                    "is_table_supported": 0,
                    "properties": null,
                    "order_types": [
                        {
                            "id": "5514ba04-70d9-47f8-826d-7c22deff741a",
                            "type_id": 8,
                            "reference_type": "OrderTypeCurbside",
                            "state": 1,
                            "is_table_supported": null,
                            "external_channel_only": false,
                            "tip_default": 5,
                            "tip_max": 15
                        }
                    ],
                    "table_pos_id": null,
                    "tablet": {
                        "id": "fdca7af8-1650-48dd-9481-df8059f33517",
                        "name": "SF tablet",
                        "use_notifications": 0,
                        "show_kiosk_orders": false,
                        "kiosk_notification_type": 0,
                        "middleware_endpoint": null,
                        "pls_name": null,
                        "state": 3,
                        "is_online": false,
                        "last_request_at": null,
                        "failure_reported": false,
                        "is_critical": false,
                        "area_ids": [
                            "41d2dcf0-5e59-4204-b28d-67f03fcd4d91",
                            "b39d789b-ecad-455a-a8d2-ad5bfa4e43d0",
                            "c2e6402c-518f-4d54-8830-6d818b25b608",
                            "2b7a5795-965a-4258-9f0d-8c9a987d0e26",
                            "181cbf5d-580c-4fb5-8391-79e850715872"
                        ],
                        "allow_disable_product": false
                    }
                },
                {
                    "id": "c2e6402c-518f-4d54-8830-6d818b25b608",
                    "type_id": 7,
                    "reference_type": "AreaFoodspot",
                    "menu_id": "899129db-5b88-4c95-8fe2-972e6faec523",
                    "singular_point_id": "d24c7292-455f-447c-8434-3d42da923a5d",
                    "pos_id": null,
                    "name": "FoodSpot",
                    "use_tablet": true,
                    "state": 1,
                    "is_table_supported": 0,
                    "properties": null,
                    "order_types": [
                        {
                            "id": "a20372c5-d989-4d20-b64c-141f558f499e",
                            "type_id": 9,
                            "reference_type": "OrderTypeFoodspot",
                            "state": 1,
                            "is_table_supported": null,
                            "external_channel_only": false,
                            "tip_default": 0,
                            "tip_max": 0
                        }
                    ],
                    "table_pos_id": null,
                    "tablet": {
                        "id": "fdca7af8-1650-48dd-9481-df8059f33517",
                        "name": "SF tablet",
                        "use_notifications": 0,
                        "show_kiosk_orders": false,
                        "kiosk_notification_type": 0,
                        "middleware_endpoint": null,
                        "pls_name": null,
                        "state": 3,
                        "is_online": false,
                        "last_request_at": null,
                        "failure_reported": false,
                        "is_critical": false,
                        "area_ids": [
                            "41d2dcf0-5e59-4204-b28d-67f03fcd4d91",
                            "b39d789b-ecad-455a-a8d2-ad5bfa4e43d0",
                            "c2e6402c-518f-4d54-8830-6d818b25b608",
                            "2b7a5795-965a-4258-9f0d-8c9a987d0e26",
                            "181cbf5d-580c-4fb5-8391-79e850715872"
                        ],
                        "allow_disable_product": false
                    }
                },
                {
                    "id": "175cff75-3f8f-4908-bde7-74d1f8c6a542",
                    "type_id": 1,
                    "reference_type": "AreaFullService",
                    "menu_id": "899129db-5b88-4c95-8fe2-972e6faec523",
                    "singular_point_id": "93397e8d-d889-4e6b-8764-fa3ecfbfe8bf",
                    "pos_id": null,
                    "name": "Full Service",
                    "use_tablet": false,
                    "state": 1,
                    "is_table_supported": 1,
                    "properties": {
                        "location_type": "table"
                    },
                    "order_types": [
                        {
                            "id": "81035813-b64f-4776-8a6c-ef00043aff05",
                            "type_id": 1,
                            "reference_type": "OrderTypeDineIn",
                            "state": 1,
                            "is_table_supported": null,
                            "external_channel_only": false,
                            "tip_default": 0,
                            "tip_max": 0
                        }
                    ],
                    "singular_point_input_type": "ManualInput"
                },
                {
                    "id": "2b7a5795-965a-4258-9f0d-8c9a987d0e26",
                    "type_id": 3,
                    "reference_type": "AreaQuickService",
                    "menu_id": "899129db-5b88-4c95-8fe2-972e6faec523",
                    "singular_point_id": "a1bb94d6-b4bb-4938-8388-1e63075afe4f",
                    "pos_id": null,
                    "name": "Quick Service",
                    "use_tablet": true,
                    "state": 1,
                    "is_table_supported": 0,
                    "properties": {
                        "location_type": "table"
                    },
                    "order_types": [
                        {
                            "id": "aaa1ae2f-6bbf-4547-b722-61375cf1f835",
                            "type_id": 4,
                            "reference_type": "OrderTypePreorder",
                            "state": 1,
                            "is_table_supported": null,
                            "external_channel_only": false,
                            "tip_default": 0,
                            "tip_max": 0
                        }
                    ],
                    "table_pos_id": null,
                    "tablet": {
                        "id": "fdca7af8-1650-48dd-9481-df8059f33517",
                        "name": "SF tablet",
                        "use_notifications": 0,
                        "show_kiosk_orders": false,
                        "kiosk_notification_type": 0,
                        "middleware_endpoint": null,
                        "pls_name": null,
                        "state": 3,
                        "is_online": false,
                        "last_request_at": null,
                        "failure_reported": false,
                        "is_critical": false,
                        "area_ids": [
                            "41d2dcf0-5e59-4204-b28d-67f03fcd4d91",
                            "b39d789b-ecad-455a-a8d2-ad5bfa4e43d0",
                            "c2e6402c-518f-4d54-8830-6d818b25b608",
                            "2b7a5795-965a-4258-9f0d-8c9a987d0e26",
                            "181cbf5d-580c-4fb5-8391-79e850715872"
                        ],
                        "allow_disable_product": false
                    }
                },
                {
                    "id": "181cbf5d-580c-4fb5-8391-79e850715872",
                    "type_id": 5,
                    "reference_type": "AreaDelivery",
                    "menu_id": "899129db-5b88-4c95-8fe2-972e6faec523",
                    "singular_point_id": "63b07572-302f-4c77-ba23-18b048fac9b9",
                    "pos_id": null,
                    "name": "Delivery",
                    "use_tablet": true,
                    "state": 1,
                    "is_table_supported": 0,
                    "properties": null,
                    "order_types": [
                        {
                            "id": "3ca0c042-4a89-43fa-b197-7820a2818782",
                            "type_id": 7,
                            "reference_type": "OrderTypeDelivery",
                            "state": 1,
                            "is_table_supported": null,
                            "external_channel_only": false,
                            "tip_default": 0,
                            "tip_max": 0
                        }
                    ],
                    "delivery_area_maps": [
                        {
                            "minimal_order_amount": 2000,
                            "name": "Zone 1",
                            "coordinate_polygon": [
                                [
                                    [
                                        -122.41478866031048,
                                        37.786212408637766
                                    ],
                                    [
                                        -122.39770835330202,
                                        37.78153183822485
                                    ],
                                    [
                                        -122.40809386661071,
                                        37.75676736819847
                                    ],
                                    [
                                        -122.43779128482215,
                                        37.75893883148851
                                    ],
                                    [
                                        -122.41478866031048,
                                        37.786212408637766
                                    ]
                                ]
                            ],
                            "radius": null,
                            "state": 1,
                            "created_at": "2023-08-05 22:21:54",
                            "updated_at": "2023-08-05 22:21:54",
                            "delivery_fee": {
                                "type_id": 1,
                                "reference_type": "DeliveryFeeFixed",
                                "price": 150,
                                "price_per_unit": 0,
                                "unit": "kilometer",
                                "created_at": "2023-08-05 22:21:33",
                                "updated_at": "2023-08-05 22:21:33"
                            }
                        },
                        {
                            "minimal_order_amount": null,
                            "name": "Zone 2",
                            "coordinate_polygon": [
                                [
                                    [
                                        -122.464913782376,
                                        37.75547803172418
                                    ],
                                    [
                                        -122.43015235354434,
                                        37.74665565298056
                                    ],
                                    [
                                        -122.39324515749658,
                                        37.75235638718793
                                    ],
                                    [
                                        -122.39556258608592,
                                        37.790757026685185
                                    ],
                                    [
                                        -122.40431731631512,
                                        37.79672565261811
                                    ],
                                    [
                                        -122.45487159183062,
                                        37.79638653906568
                                    ],
                                    [
                                        -122.464913782376,
                                        37.75547803172418
                                    ]
                                ],
                                [
                                    [
                                        -122.43779128482215,
                                        37.75893883148851
                                    ],
                                    [
                                        -122.40809386661071,
                                        37.75676736819847
                                    ],
                                    [
                                        -122.39770835330202,
                                        37.78153183822485
                                    ],
                                    [
                                        -122.41478866031048,
                                        37.786212408637766
                                    ],
                                    [
                                        -122.43779128482215,
                                        37.75893883148851
                                    ]
                                ]
                            ],
                            "radius": null,
                            "state": 1,
                            "created_at": "2023-08-05 22:21:54",
                            "updated_at": "2023-08-05 22:21:54",
                            "delivery_fee": {
                                "type_id": 2,
                                "reference_type": "DeliveryFeeDistance",
                                "price": 0,
                                "price_per_unit": 200,
                                "unit": "kilometer",
                                "created_at": "2023-08-05 22:21:48",
                                "updated_at": "2023-08-05 22:21:48"
                            }
                        }
                    ],
                    "delivery_times": [
                        {
                            "id": "8b644f29-1604-47ac-9623-2e6b0596c9c2",
                            "type_id": 2,
                            "reference_type": "WeekDays",
                            "time_from": "09:30",
                            "time_to": "21:30",
                            "delivery_at": null,
                            "days": [
                                1,
                                2,
                                3,
                                4,
                                5
                            ]
                        },
                        {
                            "id": "aa5eac96-99fa-483a-99f2-9c5f2b9a784a",
                            "type_id": 1,
                            "reference_type": "SpecialDays",
                            "time_from": null,
                            "time_to": null,
                            "delivery_at": null,
                            "date": "2023-08-31",
                            "date_to": "2023-08-31",
                            "working": false
                        },
                        {
                            "id": "7e328d69-18d8-4f73-8726-39e27d8ef9e2",
                            "type_id": 1,
                            "reference_type": "SpecialDays",
                            "time_from": "04:00",
                            "time_to": "14:00",
                            "delivery_at": null,
                            "date": "2023-09-01",
                            "date_to": "2023-09-05",
                            "working": true
                        }
                    ],
                    "tablet": {
                        "id": "fdca7af8-1650-48dd-9481-df8059f33517",
                        "name": "SF tablet",
                        "use_notifications": 0,
                        "show_kiosk_orders": false,
                        "kiosk_notification_type": 0,
                        "middleware_endpoint": null,
                        "pls_name": null,
                        "state": 3,
                        "is_online": false,
                        "last_request_at": null,
                        "failure_reported": false,
                        "is_critical": false,
                        "area_ids": [
                            "41d2dcf0-5e59-4204-b28d-67f03fcd4d91",
                            "b39d789b-ecad-455a-a8d2-ad5bfa4e43d0",
                            "c2e6402c-518f-4d54-8830-6d818b25b608",
                            "2b7a5795-965a-4258-9f0d-8c9a987d0e26",
                            "181cbf5d-580c-4fb5-8391-79e850715872"
                        ],
                        "allow_disable_product": false
                    }
                }
            ],
            "menu_id": "899129db-5b88-4c95-8fe2-972e6faec523",
            "days_in_advance": 0,
            "payment_processors": [
                {
                    "id": 3288,
                    "venue_id": 3342,
                    "payment_method_type_id": 1,
                    "payment_processor_id": 3866,
                    "properties": null
                }
            ]
        }
    }
}
Attribute Type Example Value Description
venue Venue resource Venue resource - see Select a Store for Dine-in or Takeout for more details
venues.[i].venue.areas array[Area] See Areas reference
venues.[i].venue.areas.type_id int 9 Type ID of Area - see Areas reference
venues.[i].venue.areas.singular_point_id int db2f3288-63f4-4939-81f6-d0351bce9c70 Singular Point ID, which will be used for placing the order
venues.[i].venue.areas.state int 1 Current status of Area - refer to States reference
venues.[i].venue.areas.order_types array[OrderType] Array of OrderTypes that are configured for that Area
venues.[i].venue.timezone.name string "America/Los_Angeles" Name of timezone for pickup time conversions - see Timezone resource for more details
venue[i].venue.areas.properties.notice_period int 2 Catering Pickup notice period
venue[i].venue.areas.properties.cancellation_period int 1 Catering Pickup cancellation period
venue[i].venue.areas.properties.days_in_advance int 15 Number of allowed days for future date ordering for Catering Pickup
venue[i].venue.areas.properties.minimal_order_amount int 0 Catering Pickup minimal order amount

From the areas array, the Catering Pickup area has to be extracted. This can be achieved by finding the object with the type id 9 which is the Catering Pickup Area Type ID.

{
    "id": "41d2dcf0-5e59-4204-b28d-67f03fcd4d91",
    "type_id": 9,
    "reference_type": "AreaCateringTakeOut",
    "singular_point_id": "db2f3288-63f4-4939-81f6-d0351bce9c70"m
    "properties": {
      "notice_period": 2,
      "days_in_advance": 30,
      "cancellation_period": 1,
      "minimal_order_amount": 50
    },
    "is_open": true,
    "will_open": true,
}
}
Attribute Type Example Value Description
will_open boolean true Catering Pickup availability for ordering later during the day. Combine with venue flag will_open in order to get the correct result since there are separate configurations for the venue and for the order type
is_open boolean true Catering Pickup current availability for ordering. Combine with venue flag is_open in order to get the correct result since there are separate configurations for the venue and for the order type
properties.notice_period int 2 The least amount of time before the first order can be placed for Catering pickup compared to the current moment.
properties.cancellation_period int 1 The maximum amount of time the user has to cancel the Catering pickup order after it has been created
properties.days_in_advance int 15 Availability for future date orders for Catering pickup. Maximum value is 30

Most the relevant data for Catering Pickup that has been setup in the Management center can be extracted from the Catering Pickup area.

Make a note of the singular_point_id, since we will need it to place the order.

Pickup Times

Pickup Times determine at which time the order will be picked up, including which products will be available at the chosen Pickup Time (e.g. if I am ordering for in the afternoon, I will not be able to order breakfast items). Catering Pickup orders can only be placed for a specific pickup time, because there is a notice period that can be setup in the Management Center. The minimum value of the notice period is 2 hours.

Using the /orders/pickup-times API call, we can call all available Pickup Times for the current day:

Request

Attribute Type Example Value Description
singular_point_id string "db2f3288-63f4-4939-81f6-d0351bce9c70" Singular Point ID from /venues/{venue_uuid} call
order_type_id int 11 Order type ID (see Order Types)
{
  "method": "post",
  "url": "https://api-public-playground.menu.app/api/orders/pickup-times",
  "headers": {
    "X-Request-ID": "69da3547-204b-4093-a225-54e084c24215",
    "Application": "f3a90488ffee32c3acb6fcd0ca417cf6",
    "Api-Version": 4.38.0,
    "Content-Type": "application/json"
  },
  "body": {
    "singular_point_id": "db2f3288-63f4-4939-81f6-d0351bce9c70",
    "order_type_id": 11
  }
}

Response

{
    "status": "OK",
    "code": 200,
    "data": {
        "pickup_times": [
            "2023-08-06 22:00:00",
            "2023-08-06 22:05:00",
            "2023-08-06 22:10:00",
            "2023-08-06 22:15:00",
            "2023-08-06 22:20:00",
            "2023-08-06 22:25:00",
            "2023-08-06 22:30:00",
            "2023-08-06 22:35:00",
            "2023-08-06 22:40:00",
            "2023-08-06 22:45:00",
            "2023-08-06 22:50:00",
            "2023-08-06 22:55:00",
            "2023-08-06 23:00:00",
            "2023-08-06 23:05:00",
            "2023-08-06 23:10:00",
            "2023-08-06 23:15:00",
            "2023-08-06 23:20:00",
            "2023-08-06 23:25:00",
            "2023-08-06 23:30:00",
            "2023-08-06 23:35:00",
            "2023-08-06 23:40:00",
            "2023-08-06 23:45:00",
            "2023-08-06 23:50:00",
            "2023-08-06 23:55:00",
            "2023-08-07 00:00:00",
            "2023-08-07 00:05:00",
            "2023-08-07 00:10:00",
            "2023-08-07 00:15:00",
            "2023-08-07 00:20:00",
            "2023-08-07 00:25:00",
            "2023-08-07 00:30:00",
            "2023-08-07 00:35:00",
            "2023-08-07 00:40:00",
            "2023-08-07 00:45:00",
            "2023-08-07 00:50:00",
            "2023-08-07 00:55:00",
            "2023-08-07 01:00:00",
            "2023-08-07 01:05:00",
            "2023-08-07 01:10:00",
            "2023-08-07 01:15:00",
            "2023-08-07 01:20:00",
            "2023-08-07 01:25:00",
            "2023-08-07 01:30:00",
            "2023-08-07 01:35:00",
            "2023-08-07 01:40:00",
            "2023-08-07 01:45:00",
            "2023-08-07 01:50:00",
            "2023-08-07 01:55:00",
            "2023-08-07 02:00:00",
            "2023-08-07 02:05:00",
            "2023-08-07 02:10:00",
            "2023-08-07 02:15:00",
            "2023-08-07 02:20:00",
            "2023-08-07 02:25:00",
            "2023-08-07 02:30:00",
            "2023-08-07 02:35:00",
            "2023-08-07 02:40:00",
            "2023-08-07 02:45:00",
            "2023-08-07 02:50:00",
            "2023-08-07 02:55:00",
            "2023-08-07 03:00:00",
            "2023-08-07 03:05:00",
            "2023-08-07 03:10:00",
            "2023-08-07 03:15:00",
            "2023-08-07 03:20:00",
            "2023-08-07 03:25:00",
            "2023-08-07 03:30:00",
            "2023-08-07 03:35:00",
            "2023-08-07 03:40:00",
            "2023-08-07 03:45:00",
            "2023-08-07 03:50:00",
            "2023-08-07 03:55:00",
            "2023-08-07 04:00:00",
            "2023-08-07 04:05:00",
            "2023-08-07 04:10:00",
            "2023-08-07 04:15:00",
            "2023-08-07 04:20:00",
            "2023-08-07 04:25:00",
            "2023-08-07 04:30:00",
            "2023-08-07 04:35:00",
            "2023-08-07 04:40:00",
            "2023-08-07 04:45:00",
            "2023-08-07 04:50:00",
            "2023-08-07 04:55:00",
            "2023-08-07 05:00:00",
            "2023-08-07 05:05:00",
            "2023-08-07 05:10:00",
            "2023-08-07 05:15:00",
            "2023-08-07 05:20:00",
            "2023-08-07 05:25:00",
            "2023-08-07 05:30:00",
            "2023-08-07 05:35:00",
            "2023-08-07 05:40:00",
            "2023-08-07 05:45:00",
            "2023-08-07 05:50:00",
            "2023-08-07 05:55:00",
            "2023-08-07 06:00:00",
            "2023-08-07 06:05:00",
            "2023-08-07 06:10:00",
            "2023-08-07 06:15:00",
            "2023-08-07 06:20:00",
            "2023-08-07 06:25:00",
            "2023-08-07 06:30:00",
            "2023-08-07 06:35:00",
            "2023-08-07 06:40:00",
            "2023-08-07 06:45:00",
            "2023-08-07 06:50:00",
            "2023-08-07 06:55:00",
            "2023-08-07 07:00:00",
            "2023-08-07 07:05:00",
            "2023-08-07 07:10:00",
            "2023-08-07 07:15:00",
            "2023-08-07 07:20:00",
            "2023-08-07 07:25:00",
            "2023-08-07 07:30:00",
            "2023-08-07 07:35:00",
            "2023-08-07 07:40:00",
            "2023-08-07 07:45:00",
            "2023-08-07 07:50:00",
            "2023-08-07 07:55:00",
            "2023-08-07 08:00:00",
            "2023-08-07 08:05:00",
            "2023-08-07 08:10:00",
            "2023-08-07 08:15:00",
            "2023-08-07 08:20:00",
            "2023-08-07 08:25:00",
            "2023-08-07 08:30:00",
            "2023-08-07 08:35:00",
            "2023-08-07 08:40:00",
            "2023-08-07 08:45:00",
            "2023-08-07 08:50:00",
            "2023-08-07 08:55:00",
            "2023-08-07 09:00:00",
            "2023-08-07 09:05:00",
            "2023-08-07 09:10:00",
            "2023-08-07 09:15:00",
            "2023-08-07 09:20:00",
            "2023-08-07 09:25:00",
            "2023-08-07 09:30:00",
            "2023-08-07 09:35:00",
            "2023-08-07 09:40:00",
            "2023-08-07 09:45:00",
            "2023-08-07 09:50:00",
            "2023-08-07 09:55:00",
            "2023-08-07 10:00:00",
            "2023-08-07 10:05:00",
            "2023-08-07 10:10:00",
            "2023-08-07 10:15:00",
            "2023-08-07 10:20:00",
            "2023-08-07 10:25:00",
            "2023-08-07 10:30:00",
            "2023-08-07 10:35:00",
            "2023-08-07 10:40:00",
            "2023-08-07 10:45:00",
            "2023-08-07 10:50:00",
            "2023-08-07 10:55:00",
            "2023-08-07 11:00:00",
            "2023-08-07 11:05:00",
            "2023-08-07 11:10:00",
            "2023-08-07 11:15:00",
            "2023-08-07 11:20:00",
            "2023-08-07 11:25:00",
            "2023-08-07 11:30:00",
            "2023-08-07 11:35:00",
            "2023-08-07 11:40:00",
            "2023-08-07 11:45:00",
            "2023-08-07 11:50:00",
            "2023-08-07 11:55:00",
            "2023-08-07 12:00:00",
            "2023-08-07 12:05:00",
            "2023-08-07 12:10:00",
            "2023-08-07 12:15:00",
            "2023-08-07 12:20:00",
            "2023-08-07 12:25:00",
            "2023-08-07 12:30:00",
            "2023-08-07 12:35:00",
            "2023-08-07 12:40:00",
            "2023-08-07 12:45:00",
            "2023-08-07 12:50:00",
            "2023-08-07 12:55:00",
            "2023-08-07 13:00:00",
            "2023-08-07 13:05:00",
            "2023-08-07 13:10:00",
            "2023-08-07 13:15:00",
            "2023-08-07 13:20:00",
            "2023-08-07 13:25:00",
            "2023-08-07 13:30:00",
            "2023-08-07 13:35:00",
            "2023-08-07 13:40:00",
            "2023-08-07 13:45:00",
            "2023-08-07 13:50:00",
            "2023-08-07 13:55:00",
            "2023-08-07 14:00:00",
            "2023-08-07 14:05:00",
            "2023-08-07 14:10:00",
            "2023-08-07 14:15:00",
            "2023-08-07 14:20:00",
            "2023-08-07 14:25:00",
            "2023-08-07 14:30:00",
            "2023-08-07 14:35:00",
            "2023-08-07 14:40:00",
            "2023-08-07 14:45:00",
            "2023-08-07 14:50:00",
            "2023-08-07 14:55:00",
            "2023-08-07 15:00:00",
            "2023-08-07 15:05:00",
            "2023-08-07 15:10:00",
            "2023-08-07 15:15:00",
            "2023-08-07 15:20:00",
            "2023-08-07 15:25:00",
            "2023-08-07 15:30:00",
            "2023-08-07 15:35:00",
            "2023-08-07 15:40:00",
            "2023-08-07 15:45:00",
            "2023-08-07 15:50:00",
            "2023-08-07 15:55:00",
            "2023-08-07 16:00:00",
            "2023-08-07 16:05:00",
            "2023-08-07 16:10:00",
            "2023-08-07 16:15:00",
            "2023-08-07 16:20:00",
            "2023-08-07 16:25:00",
            "2023-08-07 16:30:00",
            "2023-08-07 16:35:00",
            "2023-08-07 16:40:00",
            "2023-08-07 16:45:00",
            "2023-08-07 16:50:00",
            "2023-08-07 16:55:00",
            "2023-08-07 17:00:00",
            "2023-08-07 17:05:00",
            "2023-08-07 17:10:00",
            "2023-08-07 17:15:00",
            "2023-08-07 17:20:00",
            "2023-08-07 17:25:00",
            "2023-08-07 17:30:00",
            "2023-08-07 17:35:00",
            "2023-08-07 17:40:00",
            "2023-08-07 17:45:00",
            "2023-08-07 17:50:00",
            "2023-08-07 17:55:00",
            "2023-08-07 18:00:00",
            "2023-08-07 18:05:00",
            "2023-08-07 18:10:00",
            "2023-08-07 18:15:00",
            "2023-08-07 18:20:00",
            "2023-08-07 18:25:00",
            "2023-08-07 18:30:00",
            "2023-08-07 18:35:00",
            "2023-08-07 18:40:00",
            "2023-08-07 18:45:00",
            "2023-08-07 18:50:00",
            "2023-08-07 18:55:00",
            "2023-08-07 19:00:00",
            "2023-08-07 19:05:00",
            "2023-08-07 19:10:00",
            "2023-08-07 19:15:00",
            "2023-08-07 19:20:00",
            "2023-08-07 19:25:00",
            "2023-08-07 19:30:00",
            "2023-08-07 19:35:00",
            "2023-08-07 19:40:00",
            "2023-08-07 19:45:00",
            "2023-08-07 19:50:00",
            "2023-08-07 19:55:00",
            "2023-08-07 20:00:00",
            "2023-08-07 20:05:00",
            "2023-08-07 20:10:00",
            "2023-08-07 20:15:00",
            "2023-08-07 20:20:00",
            "2023-08-07 20:25:00",
            "2023-08-07 20:30:00",
            "2023-08-07 20:35:00",
            "2023-08-07 20:40:00",
            "2023-08-07 20:45:00",
            "2023-08-07 20:50:00",
            "2023-08-07 20:55:00",
            "2023-08-07 21:00:00",
            "2023-08-07 21:05:00",
            "2023-08-07 21:10:00",
            "2023-08-07 21:15:00",
            "2023-08-07 21:20:00",
            "2023-08-07 21:25:00",
            "2023-08-07 21:30:00",
            "2023-08-07 21:35:00",
            "2023-08-07 21:40:00",
            "2023-08-07 21:45:00"
        ]
    }
}
Attribute Type Example Value Description
pickup_times array[string] ["2023-08-06 22:00:00","2023-08-06 22:05:00]", Array of available pickup times (to be presented to customer) - in UTC and needs to be converted to Venue timezone using venue.timezone.name

Based on the chosen pickup time, you should check the ServingTimes of the subcategories to determine which products will be available for order at the chosen pickup time.

If the customer changes their pickup time after having added products to their cart, it may be that certain products are no longer available for the new pickup time, and you will need to present your customer with an experience showing that certain products are going to be removed from their cart.

Verify Pickup Time before proceeding to Checkout

We recommend that you make another call to /orders/pickup-times when the customer makes their intent to go to checkout, in order to verify that the previously chosen Pickup Time is still available.

In case it is not, a new Pickup Time should be chosen and the cart may need to be adjusted.

Depending on how long the customer remains on checkout, it may make sense for you to make a final verification call for the Pickup Time, prior to going ahead and placing the order.

Calculate

With every modification to the cart (e.g as the customer is adding, modifying or deleting products) a call to /orders/calculate should be made, in order to calculate the order totals for presentation to the customer:

Request

Attribute Type Example Value Description
singular_point_id string "db2f3288-63f4-4939-81f6-d0351bce9c7"0 Singular Point ID from /venues/{venue_uuid} call
order_type.id id 11 Type ID of order type for calculations are being created - see Order Types reference
menu_items array[MenuItem] Array of Menu Items that are included in the cart
menu_items.id string "833c2e35-5066-4b1c-a813-fe5cb349a6aa"", Menu Item UUID
menu_items.quantity int 1 Number of the same Menu Items with same price level and modifiers that are in cart
menu_items.price_level_id string "76efaa5d-b849-4549-9468-72b8131b904a"", UUID of Price Level of Menu Item that customer chose
calculate_accurate_tax bool false Defines whether external tax engine (such as POS system) should be used to calculate accurate taxes, or whether a prediction should be returned - should be set to true when proceeding to checkout and be false while the customer is still composing their cart.
{
  "method": "post",
  "url": "https://api-public-playground.menu.app/api/orders/calculate",
  "headers": {
    "X-Request-ID": "69da3547-204b-4093-a225-54e084c24215",
    "Application": "f3a90488ffee32c3acb6fcd0ca417cf6",
    "Api-Version": 4.38.0,
    "Content-Type": "application/json"
  },
  "body": {
    "singular_point_id": "db2f3288-63f4-4939-81f6-d0351bce9c70",
    "order_type": {
        "id": 11
    },
    "menu_items": [
        {
            "id": "833c2e35-5066-4b1c-a813-fe5cb349a6aa",
            "quantity": 1,
            "price_level_id": "76efaa5d-b849-4549-9468-72b8131b904a"
        }
    ],
    "calculate_accurate_tax": false
  }
}

Response

{
    "status": "OK",
    "code": 200,
    "data": {
        "calculations": {
            "calculation_method": "exclusive",
            "subtotal": 1200,
            "discount": 0,
            "subsidy": 0,
            "service_charge": 0,
            "service_charge_rate": 0,
            "service_charge_tax_rate": 0,
            "delivery_fee": 0,
            "delivery_fee_tax": 0,
            "delivery_fee_tax_rate": 0,
            "minimum_surcharge": 0,
            "minimum_surcharge_tax": 0,
            "tip": 0,
            "tip_rate": 0,
            "total": 1260,
            "amount_for_payment": 1260,
            "tax": 60,
            "tax_exemption": 0,
            "tax_rates": {
                "5": 60
            },
            "items": [
                {
                    "id": "833c2e35-5066-4b1c-a813-fe5cb349a6aa",
                    "type_id": 1,
                    "price": 1200,
                    "quantity": 1,
                    "subtotal": 1200,
                    "discount": 0,
                    "total": 1260,
                    "tax": 60,
                    "tax_exemption": 0,
                    "tax_rate": 5,
                    "tax_rates": {
                        "5": 60
                    },
                    "modifiers": []
                }
            ],
            "customer_account_id": null
        }
    }
}
Attribute Type Example Value Description
calculations.calculation_method string "exclusive" Whether the tax is included in the product prices ("inclusive") or taxes are not included in product prices and need to be calculated on top ("exclusive")
calculations.subtotal int 1200 Order subtotal (lowest unit), excluding discounts, taxes and fees
calculations.total int 1260 All-in payable total (lowest unit) of the order, including discounts, taxes and fees
calculations.tax int 60 Total tax amount (lowest unit) of the order - depending on calculation_method is included in subtotal or not
calculations.tax_rates object {"5": 60} Tax amount (lowest unit) by tax percentage - depending on your region / country, a tax breakdown may be required to be shown to your customer
calculations.items.[i].price int 1200 Price (lowest unit) of single unit of Menu Item (excl. modifiers)
calculations.items.[i].subtotal int 1200 Price (lowest unit) of Menu Item based on provided quantity (excl. modifiers)
calculations.items.[i].total int 2520 All-in total (lowest unit) of Menu Item, including discounts, taxes and modifiers

Calculating the total for Catering pickup

It has been previously mentioned that Catering Pickup has an optional minimum order amount that can be setup in the Management Center. The minimum order amount has to be reached before order can be placed for both Catering Pickup and Catering Delivery, hence the total has to be equal to or higher than the minimum order amount. It is recommended to include a validation for this prior to allowing the user to continue the checkout page.

Calculating Accurate Tax

Prior to proceeding to checkout, you should also make another call to /orders/calculate with the calculate_accurate_tax flag set to true. This will ensure you have the most accurate taxes calculated (by tax engine, such as from POS) before payment.

Only request accurate taxes when the customer proceeds to checkout, since API fees may apply (depending on tax engine). Implementations with excessive requests for accurate taxes will not be certified and cannot be promoted to production.

Cross-Selling

Cross-selling enables you to show your customer other items they may be interested in, based on the current cart that they have already configured.

Cross-selling is based on pre-configured cross-sell items and applies an algorithm that automatically excludes cross-sell items of subcategories of which items are already in cart, as well as optimizes for the highest possible variety in cross-sell items. A maximum of 5 cross-sell items are returned.

See here to learn more about how to configure cross-sell items in the Management Center.

Using the /venues/{venue_uuid}/menus/{menu_uuid}/cross-sellings API endpoint you can post the menu items that you already have in cart and receive cross-sell item suggestions:

Request

Attribute Type Example Value Description
order_type.id int 11 Type ID of Order Type for which order is being placed - only items that are available for the specified order type will be returned. See Order Types reference for more information
order_type.pickup_asap bool true Whether order is being placed for ASAP or not
menu_item_ids array[string] ["833c2e35-5066-4b1c-a813-fe5cb349a6aa"] Array of Menu Item UUIDs that are already included in the customer's cart
{
  "method": "post",
  "url": "https://api-public-playground.menu.app/api/venues/a9d6d0c8-1689-4114-b1ec-6da9c33f0384/menus/899129db-5b88-4c95-8fe2-972e6faec523/cross-sellings",
  "headers": {
    "X-Request-ID": "69da3547-204b-4093-a225-54e084c24215",
    "Application": "f3a90488ffee32c3acb6fcd0ca417cf6",
    "Api-Version": 4.38.0,
    "Content-Type": "application/json"
  },
  "body": {
      "order_type": {
        "id": 6,
        "pickup_asap": true
      },
      "menu_item_ids" : [
        "833c2e35-5066-4b1c-a813-fe5cb349a6aa"
    ]
  }
}

Response

{
    "status": "OK",
    "code": 200,
    "data": {
        "cross_selling_items": [
            {
                "id": "dd8fdcd6-d1c0-41ee-8b59-ffb9ccbb7d3d",
                "name": "Moringa Bowl",
                "description": "Mango, Spinach, Banana, Moringa, Fresh Pineapple",
                "internal_name": "",
                "printer_id": 0,
                "position": 1,
                "tax_id": "56f60144-370d-4233-8e61-aee9d5471a3b",
                "image": {
                    "thumbnail_small": "https://s3.eu-central-1.amazonaws.com/api.playground/images/item_images/_thumbs280/2023-07-25/76626b232c1aa12512d5bb15bbade9c3.png",
                    "thumbnail_medium": "https://s3.eu-central-1.amazonaws.com/api.playground/images/item_images/_thumbs720/2023-07-25/76626b232c1aa12512d5bb15bbade9c3.png",
                    "fullsize": "https://s3.eu-central-1.amazonaws.com/api.playground/images/item_images/2023-07-25/76626b232c1aa12512d5bb15bbade9c3.png"
                },
                "translations": {
                    "name": "Moringa Bowl",
                    "description": "Mango, Spinach, Banana, Moringa, Fresh Pineapple"
                },
                "allow_takeout": true,
                "is_deliverable": true,
                "is_dine_in_allowed": true,
                "is_foodspot_allowed": true,
                "is_catering_take_out_allowed": true,
                "is_self_serving": false,
                "show_in_menu": true,
                "state": 1,
                "is_visible": true,
                "is_visible_in_cms": true,
                "is_visible_in_store_group": true,
                "is_in_combo": true,
                "temporary_disabled_until": null,
                "allergens": [],
                "food_type": {
                    "id": "vegetarian",
                    "translated_name": "Vegetarian"
                },
                "price_levels": [
                    {
                        "id": "b235b704-84d0-4d03-bb7c-acd51c994902",
                        "name": null,
                        "price": 750,
                        "delivery_price": 750,
                        "price_configuration_2": 750,
                        "price_configuration_3": 750,
                        "price_configuration_4": 750,
                        "price_configuration_5": 750,
                        "price_configuration_6": 750,
                        "price_configuration_7": 750,
                        "pos_id": "",
                        "state": 1,
                        "calories": 195,
                        "is_visible": true,
                        "translations": {
                            "name": "",
                            "description": ""
                        }
                    }
                ],
                "modifier_groups": [
                    {
                        "id": "b0fb219e-4f72-44f1-b277-7feed29025c5",
                        "name": "Rice or Salad",
                        "internal_name": "",
                        "min_selected": 1,
                        "max_selected": 1,
                        "pos_min_selected": 0,
                        "pos_max_selected": 99,
                        "pos_id": "",
                        "pos_name": "",
                        "state": 1,
                        "is_visible": true,
                        "is_visible_in_store_group": true,
                        "is_visible_in_cms": true,
                        "type_id": 1,
                        "reference_type": "CoreGlobalModifierGroup",
                        "position": 0,
                        "translations": {
                            "name": "Rice or Salad"
                        },
                        "modifiers": [
                            {
                                "id": "31d03cb4-5002-43b1-8951-aaa1824d29d5",
                                "type_id": 1,
                                "reference_type": "CoreSimpleModifier",
                                "name": "No Edamame",
                                "internal_name": "",
                                "price": 0,
                                "delivery_price": 0,
                                "price_configuration_2": 0,
                                "price_configuration_3": 0,
                                "price_configuration_4": 0,
                                "price_configuration_5": 0,
                                "price_configuration_6": 0,
                                "price_configuration_7": 0,
                                "pos_id": "",
                                "pos_name": "",
                                "state": 1,
                                "is_visible": true,
                                "is_visible_in_store_group": true,
                                "is_visible_in_cms": true,
                                "temporary_disabled_until": null,
                                "calories": 25,
                                "allergens": [],
                                "image": {
                                    "thumbnail_small": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs280/2023-07-25/ab3b413f2058c9b639a9ad9da1e704b4.png",
                                    "thumbnail_medium": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs720/2023-07-25/ab3b413f2058c9b639a9ad9da1e704b4.png",
                                    "fullsize": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/2023-07-25/ab3b413f2058c9b639a9ad9da1e704b4.png"
                                },
                                "translations": {
                                    "name": "No Edamame"
                                },
                                "channel_visibility": [
                                    "menu"
                                ],
                                "position": 7,
                                "is_preselected": false
                            },
                            {
                                "id": "c49b3847-2d3f-4975-a690-fc9c8bc69091",
                                "type_id": 1,
                                "reference_type": "CoreSimpleModifier",
                                "name": "No Radish",
                                "internal_name": "",
                                "price": 0,
                                "delivery_price": 0,
                                "price_configuration_2": 0,
                                "price_configuration_3": 0,
                                "price_configuration_4": 0,
                                "price_configuration_5": 0,
                                "price_configuration_6": 0,
                                "price_configuration_7": 0,
                                "pos_id": "",
                                "pos_name": "",
                                "state": 1,
                                "is_visible": true,
                                "is_visible_in_store_group": true,
                                "is_visible_in_cms": true,
                                "temporary_disabled_until": null,
                                "calories": 40,
                                "allergens": [],
                                "image": {
                                    "thumbnail_small": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs280/2023-07-25/e18337ced14ced22e6ef4380aa89c104.png",
                                    "thumbnail_medium": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs720/2023-07-25/e18337ced14ced22e6ef4380aa89c104.png",
                                    "fullsize": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/2023-07-25/e18337ced14ced22e6ef4380aa89c104.png"
                                },
                                "translations": {
                                    "name": "No Radish"
                                },
                                "channel_visibility": [
                                    "menu"
                                ],
                                "position": 2,
                                "is_preselected": false
                            },
                            {
                                "id": "cb5c5146-de36-4586-bde7-b8a92903989c",
                                "type_id": 1,
                                "reference_type": "CoreSimpleModifier",
                                "name": "Organic Wild Rice",
                                "internal_name": "",
                                "price": 0,
                                "delivery_price": 0,
                                "price_configuration_2": 0,
                                "price_configuration_3": 0,
                                "price_configuration_4": 0,
                                "price_configuration_5": 0,
                                "price_configuration_6": 0,
                                "price_configuration_7": 0,
                                "pos_id": "",
                                "pos_name": "",
                                "state": 1,
                                "is_visible": true,
                                "is_visible_in_store_group": true,
                                "is_visible_in_cms": true,
                                "temporary_disabled_until": null,
                                "calories": null,
                                "allergens": [],
                                "image": {
                                    "thumbnail_small": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs280/2023-07-25/2864934613df10b0f1e97095390f0658.png",
                                    "thumbnail_medium": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs720/2023-07-25/2864934613df10b0f1e97095390f0658.png",
                                    "fullsize": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/2023-07-25/2864934613df10b0f1e97095390f0658.png"
                                },
                                "translations": {
                                    "name": "Organic Wild Rice"
                                },
                                "channel_visibility": [
                                    "menu"
                                ],
                                "position": 1,
                                "is_preselected": false
                            },
                            {
                                "id": "cacda3ea-4298-477e-a874-b5f02787152a",
                                "type_id": 1,
                                "reference_type": "CoreSimpleModifier",
                                "name": "Organic Arugula",
                                "internal_name": "",
                                "price": 0,
                                "delivery_price": 0,
                                "price_configuration_2": 0,
                                "price_configuration_3": 0,
                                "price_configuration_4": 0,
                                "price_configuration_5": 0,
                                "price_configuration_6": 0,
                                "price_configuration_7": 0,
                                "pos_id": "",
                                "pos_name": "",
                                "state": 1,
                                "is_visible": true,
                                "is_visible_in_store_group": true,
                                "is_visible_in_cms": true,
                                "temporary_disabled_until": null,
                                "calories": 25,
                                "allergens": [],
                                "image": {
                                    "thumbnail_small": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs280/2023-07-25/6ae112b7b131b991a1baf811b6e5647c.png",
                                    "thumbnail_medium": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs720/2023-07-25/6ae112b7b131b991a1baf811b6e5647c.png",
                                    "fullsize": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/2023-07-25/6ae112b7b131b991a1baf811b6e5647c.png"
                                },
                                "translations": {
                                    "name": "Organic Arugula"
                                },
                                "channel_visibility": [
                                    "menu"
                                ],
                                "position": 4,
                                "is_preselected": false
                            },
                            {
                                "id": "90e41b01-40a1-407e-b6eb-eebdcf5af12a",
                                "type_id": 1,
                                "reference_type": "CoreSimpleModifier",
                                "name": "Organic Baby Spinach",
                                "internal_name": "",
                                "price": 0,
                                "delivery_price": 0,
                                "price_configuration_2": 0,
                                "price_configuration_3": 0,
                                "price_configuration_4": 0,
                                "price_configuration_5": 0,
                                "price_configuration_6": 0,
                                "price_configuration_7": 0,
                                "pos_id": "",
                                "pos_name": "",
                                "state": 1,
                                "is_visible": true,
                                "is_visible_in_store_group": true,
                                "is_visible_in_cms": true,
                                "temporary_disabled_until": null,
                                "calories": 25,
                                "allergens": [],
                                "image": {
                                    "thumbnail_small": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs280/2023-07-25/86a15cb93d53a56b819d214e79e42cdd.png",
                                    "thumbnail_medium": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs720/2023-07-25/86a15cb93d53a56b819d214e79e42cdd.png",
                                    "fullsize": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/2023-07-25/86a15cb93d53a56b819d214e79e42cdd.png"
                                },
                                "translations": {
                                    "name": "Organic Baby Spinach"
                                },
                                "channel_visibility": [
                                    "menu"
                                ],
                                "position": 3,
                                "is_preselected": false
                            },
                            {
                                "id": "ff5f69ca-1137-4924-b7d7-b4f15ecf55aa",
                                "type_id": 1,
                                "reference_type": "CoreSimpleModifier",
                                "name": "Warm Organic Quinoa",
                                "internal_name": "",
                                "price": 0,
                                "delivery_price": 0,
                                "price_configuration_2": 0,
                                "price_configuration_3": 0,
                                "price_configuration_4": 0,
                                "price_configuration_5": 0,
                                "price_configuration_6": 0,
                                "price_configuration_7": 0,
                                "pos_id": "",
                                "pos_name": "",
                                "state": 1,
                                "is_visible": true,
                                "is_visible_in_store_group": true,
                                "is_visible_in_cms": true,
                                "temporary_disabled_until": null,
                                "calories": 120,
                                "allergens": [],
                                "image": {
                                    "thumbnail_small": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs280/2023-07-25/9216c8cc0281856facd22db16373fd3a.png",
                                    "thumbnail_medium": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs720/2023-07-25/9216c8cc0281856facd22db16373fd3a.png",
                                    "fullsize": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/2023-07-25/9216c8cc0281856facd22db16373fd3a.png"
                                },
                                "translations": {
                                    "name": "Warm Organic Quinoa"
                                },
                                "channel_visibility": [
                                    "menu"
                                ],
                                "position": 6,
                                "is_preselected": false
                            },
                            {
                                "id": "6da050d5-4f58-4abc-9b6a-65209f3780e2",
                                "type_id": 1,
                                "reference_type": "CoreSimpleModifier",
                                "name": "Organic Mesclun",
                                "internal_name": "",
                                "price": 0,
                                "delivery_price": 0,
                                "price_configuration_2": 0,
                                "price_configuration_3": 0,
                                "price_configuration_4": 0,
                                "price_configuration_5": 0,
                                "price_configuration_6": 0,
                                "price_configuration_7": 0,
                                "pos_id": "",
                                "pos_name": "",
                                "state": 1,
                                "is_visible": true,
                                "is_visible_in_store_group": true,
                                "is_visible_in_cms": true,
                                "temporary_disabled_until": null,
                                "calories": 20,
                                "allergens": [],
                                "image": {
                                    "thumbnail_small": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs280/2023-07-25/595c9060cbaaa2d88bfdd628edcdb30e.png",
                                    "thumbnail_medium": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/_thumbs720/2023-07-25/595c9060cbaaa2d88bfdd628edcdb30e.png",
                                    "fullsize": "https://s3.eu-central-1.amazonaws.com/api.playground/images/modifier_images/2023-07-25/595c9060cbaaa2d88bfdd628edcdb30e.png"
                                },
                                "translations": {
                                    "name": "Organic Mesclun"
                                },
                                "channel_visibility": [
                                    "menu"
                                ],
                                "position": 5,
                                "is_preselected": false
                            }
                        ],
                        "channel_visibility": [
                            "menu"
                        ]
                    }
                ],
                "required_modifier_group_ids": [],
                "channel_visibility": [
                    "menu"
                ]
            }
        ]
    }
}
Attribute Type Example Value Description
cross_selling_items.id string "dd8fdcd6-d1c0-41ee-8b59-ffb9ccbb7d3d" Menu Item UUID
cross_selling_items.name string "Moringa Bowl" Name of Menu Item (in brand's default language)
cross_selling_items.translations.name string "Moringa Bowl" Name of Menu Item (to be presented to customer) - based on language provided in Content-Language header
cross_selling_items.description string "Mango, Spinach, Banana, Moringa, Fresh Pineapple" Description of Menu Item (in brand's default language)
cross_selling_items.translations.description string "Mango, Spinach, Banana, Moringa, Fresh Pineapple" Description of Menu Item (to be presented to customer) - based on language provided in Content-Language header
cross_selling_items.price_levels array[PriceLevel] Array of Price Levels for the Menu Item - see Menu Concepts for more information
cross_selling_items.modifier_groups array[ModifierGroup] Array of Modifier Groups for the Menu Item - see Menu Concepts for more information
cross_selling_items[i].is_catering_take_out_allowed boolean true Is the cross-selling item available for Catering Pickup

After any modification to the cart (including adding one of the cross-sell items), a new call should be made to /venues/{venue_uuid}/menus/{menu_uuid}/cross-sellings to refresh the cross-sell item suggestions.

Initialize Payment

Once all the items, modifiers and combos have been selected by the customer, and they are ready to check out, the Payment Flow is initiated.

for the signed-in customers, the storing of the payment methods is available. See Store Payment Methods guide for more details.

To perform the payment, follow the Make a Payment guide.

The Payment implementation is different depending on the Payment Processor that is being used by the brand. See the PAR Pay guide to implement the PAR Pay Payment Processor

Place Order

For Catering, there is an additional part of the flow which is required in order to place an order and that is collecting the event details from the user. Catering event details consist of the number_of_people field which is mandatory and the special_instructions field which is optional. Catering event details are passed in the place order call under the catering_info field.

Once payment initialization has been completed by the customer, you can proceed with posting the order to /orders:

Request

Attribute Type Example Value Description
singular_point_id string "db2f3288-63f4-4939-81f6-d0351bce9c70" Singular Point ID from /venues/{venue_uuid} call
order_type.id int 11 Type ID of Order Type for which order should be placed - see Order Types reference
order_type.pickup_asap bool false Catering Pickup orders are never ASAP orders
order_type.pickup_at string "2023-08-06 23:20:00" Specific pickup time selected / specified by customer
order_type.catering_info.number_of_people string "5" Mandatory catering delivery number of people field
order_type.catering_info.special_instructions string "Catering delivery special instructions" Optional catering delivery special instructions
menu_items.[i].id string "833c2e35-5066-4b1c-a813-fe5cb349a6aa" Menu Item UUID
menu_items.[i].quantity int 2 Number of Menu Item with same price level and modifiers ordered
menu_items.[i].price_level_id string "76efaa5d-b849-4549-9468-72b8131b904a" UUID of Price Level of Menu Item that was selected by the customer
order_type.customer_info.email string "jane.doe@partech.com" Customer's e-mail address (to send order confirmation e-mail to)
customer_info.first_name string "Jane" Customer's first name (useful for identification at pickup)
customer_info.last_name string "Doe" Customer's last name (useful for identification at pickup)
customer_info.phone_number string "+112345566" Customer's phone number - shown to store in order to contact customer in case of issues
payment_info.payment_init_hash string "6d930b1593304c87f1092001ceb29ae2" Payment initialization identifier, representing payment for the order
{
  "method": "post",
  "url": "https://api-public-playground.menu.app/api/orders",
  "headers": {
    "X-Request-ID": "69da3547-204b-4093-a225-54e084c24215",
    "Application": "f3a90488ffee32c3acb6fcd0ca417cf6",
    "Api-Version": 4.38.0,
    "Content-Type": "application/json"
  },
  "body": {
      "singular_point_id": "db2f3288-63f4-4939-81f6-d0351bce9c70",
      "order_type": {
        "id": 11,
        "catering_info": {
          "number_of_people": "4",
          "special_instructions": "Catering pickup special instructions"
        },
        "pickup_asap": false,
        "pickup_at": "2024-03-15 05:30:00"
      },
      "menu_items": [
          {
              "id": "833c2e35-5066-4b1c-a813-fe5cb349a6aa",
              "quantity": 2,
              "price_level_id": "76efaa5d-b849-4549-9468-72b8131b904a"
          }
      ],
      "customer_info": {
          "email": "jane.doe@partech.com",
          "first_name": "Jane",
          "last_name": "Doe",
          "phone_number": "+112345566"
      },
      "payment_info": {
          "payment_init_hash": "6d930b1593304c87f1092001ceb29ae2"
      }
  }
}