API change log

This document describes the changes in Toast API releases.

Note

As Toast products continue to improve, historical release notes may not reflect the current state of API functionality. For the most up to date API information, see the Toast API Reference.

For more information about using Toast APIs and building integrations, see the How to build a Toast integration.

2024-10-03

New orders updated webhook

The Toast platform includes a new orders updated webhook. You can use the orders updated webhook to receive order updates as they occur. The orders updated webhook provides details about new orders, and updates to existing orders. When a restaurant makes any update to an order, or creates a new order, the orders webhook sends an HTTP request to an endpoint you specify using the order_updated webhook event.

The HTTP request that you receive includes:

  • The Toast platform unique identifier (GUID) of the order_updated event.

  • A timestamp value indicating when an order is updated or created.

  • An Order object containing the complete order information.

  • The Toast platform unique identifier (GUID) for the restaurant that made the update.

For more information about the new orders webhook, see Orders webhook.

Note

If your integration currently polls the /ordersBulk endpoint of the orders API for new and updated orders, Toast support recommends evaluating the orders updated webhook for a more efficient integration.

2024-09-18

posName, posButtonColorLight, and posButtonColorDark added to Premodifier object in menus API

The Premodifier object of the menus API has been updated with the following values:

  • posName: Specifies the button label name displayed for the premodifier in the Toast POS app.

  • posButtonColorDark: Defines the button color for the premodifier in the Toast POS app when it is in dark mode. The color is specified in hexadecimal RGB notation.

  • posButtonColorLight: Defines the button color for the premodifier in the Toast POS app when it is in light mode. The color is specified in hexadecimal RGB notation.

When an employee configures the POS button color for a premodifier, they select a color pairing that consists of two colors, one for light mode and one for dark mode. posButtonColorLight contains the hexadecimal (hex) code for the light mode color. posButtonColorDark contains the hex code for the dark mode color.

The default color pairing is WHITE. In the WHITE color pairing, posButtonColorLight is #f7f7f7 and posButtonColorDark is #1a1c23.

For a table that shows the color pairing names and the color hex codes for light and dark mode associated with each pairing, see POS button color hex codes for light and dark modes.

Like all changes to the menus API, these new values become available in the menu JSON after a restaurant has made a menus-related change and published the new menu, which regenerates the restaurant's menu data. For more information, see Menus API returns published data only.

This change applies to both V2 and V3 of the menus API.

Note

For information on the differences between V2 and V3 of the menus API, see Comparing menus API V2 and V3.

2024-09-11

OpenAPI specification files now available for Toast APIs

You can now download OpenAPI specification files for Toast platform APIs. OpenAPI is a standard for defining HTTP REST APIs. You can use OpenAPI specification files to make building and maintaining your Toast platform integration more efficient and reliable. For example, you can use tools such as OpenAPI Generator to generate API client code.

Download OpenAPI specification files for Toast APIs from the overview page for an API in the Toast API reference documentation. You open the overview page for an API by selecting the API name in the left navigation pane of the API reference documentation page. For example, you can download the authentication API OpenAPI specification from the authentication API overview page. The following image shows the download link for the authentication API.

The Toast API reference documentation web page, with the overview page for the authentication API selected and visible on the page. The API reference documentation page includes a button labeled "download."

2024-09-05

Tender API requests will include HTTP header field Accept

The tender API will include an HTTP Accept header field in the REST requests it sends to your tender API integration on 2024-09-19. The value of the new Accept header field will be application/json for all tender API requests. The Accept header field indicates that the tender API (the client) will accept response data (for example, a TenderTransactionResponse object) in JSON format.

This change has already been deployed in the sandbox environment. You can now verify that your integration can accept requests that include the HTTP header Accept field in the sandbox environment to make sure that you do not experience disruption when the change affects the production environment on 2024-09-19.

New relatedTransaction value for gift cards API redeem transactions

The gift cards integration API includes a new relatedTransaction value in the TransactionInformationRedeem object for gift card redeem transactions. The relatedTransaction value is the Toast platform unique identifier for a previous gift card transaction. Your integration can use this identifier to confirm information about a previous, related transaction such as PIN verification. For example, if a restaurant employee adds a tip or gratuity to a transaction, the Toast POS reverses the initial redemption and sends another redemption with the new amount. This value provides the identifier of the initial transaction. If the current transaction is not part of an adjustment (for example, reversing a transaction) the relatedTransaction value is null.

2024-08-15

displayNumber added to orders API

The Order object in the orders API has been updated with a displayNumber value that provides a number for each order in a single day. Typically, the displayNumber value starts with 1 for the first order of the day and increments by 1 for each additional order placed that same day. displayNumber restarts each day. This pattern, however, is not guaranteed and you should not rely on it when programming critical functions for your integration.

While the displayNumber typically contains numeric values, it is of type string.

posName added to menus API

For menus API V2, the Menu, MenuGroup, MenuItem, ModifierGroup, and ModifierOption objects have been updated with a posName value. This value contains the button label name displayed for the menu entity in the Toast POS app.

For menus API V3, the MenuGroup, MenuItem, ModifierGroup, and ModifierOption objects have been updated with the posName value. The Menu object has not been updated with the posName value in menus API V3.

posName contains an empty string if a posName has not been defined for the menu entity and the name value is used for the button label instead.

Like all changes to the menus API, these new values become available in the menu JSON after a restaurant has made a menus-related change and published the new menu, which initiates regeneration of the restaurant's menus data. For more information, see Menus API returns published data only.

This change applies to both V2 and V3 of the menus API.

Note

For information on the differences between V2 and V3 of the menus API, see Comparing menus API V2 and V3.

2024-08-05

Stock API inventory update endpoint behavior change

The behavior of the /stock/v1/inventory/update endpoint of the stock API will change on 2024-08-26. The endpoint will no longer return an error response if some menu items in the request are not found in the restaurant location menu configuration. After the behavior change, the endpoint will make updates to inventory information for menu items in an update request, even if some menu items are not found.

  • Currently, if any menu item identifier in an update request is invalid (the identifier does not match an active menu item configured for the restaurant location), the endpoint returns an HTTP 404 response listing each invalid identifier and does not take any action.

  • On 2024-08-26, if any menu item identifier in an update request is invalid, the endpoint will return an HTTP 200 response and will update the inventory information for each menu item in the request that matches existing menu items. The response body will include an array of the MenuItemInventory objects in your request. The itemGuidValidity value in each object will indicate whether the menu item was found and the inventory information updated or not found and no action was taken. If a menu item status is INVALID, your integration should update the list of menu items it associates with the restaurant location.

The following example shows the HTTP 200 response data that you will receive from the /stock/v1/inventory/update endpoint starting on 2024-08-26.

[
    {
        "guid": "e1e874d8-08fe-40dd-88b7-03686a2fbaf5",
        "itemGuidValidity": "VALID",1
        "status": "QUANTITY",
        "quantity": 70.0,
        "multiLocationId": "200000008746447369",
        "versionId": "e1e874d8-08fe-40dd-88b7-03686a2fbaf5"
    },
    {
        "guid": "12ed7e46-58cf-42bf-817d-2c3980b82a20",
        "itemGuidValidity": "INVALID",2
        "status": "QUANTITY",
        "quantity": 80.0,
        "multiLocationId": "200000008746446309",
        "versionId": "12ed7e46-58cf-42bf-817d-2c3980b82a20"
    }
]

1

When a menu item identifier in the inventory update request matches a menu item configured for the restaurant location, the itemGuidValidity value is VALID. This indicates that the API updated the inventory information for that menu item.

2

On 2024-08-26, the endpoint will return an HTTP 200 response even when some menu item identifiers do not match menu items configured for the restaurant location. In the response data, the MenuItemInventory object for each menu item that is not found at the restaurant location will include the itemGuidValidity value INVALID. This indicates that the API did not find the menu item and did not update any inventory information for it.

New restaurants API parameter and response value to identify archived restaurants

The /v1/restaurants/{restaurantGUID} endpoint of the restaurants API has a new includeArchived query parameter. You use the includeArchived parameter to control whether the endpoint will return information about a Toast platform restaurant that has been archived. The restaurants API General object includes a new archived value that indicates whether a restaurant is in the archived status.

Archiving a restaurant is functionally similar to deleting a restaurant from the Toast platform. Archiving restaurants is rare, and you do not need to actively check the status of restaurants to determine whether they are archived. An example reason for archiving a restaurant is that the restaurant was created in error. A Toast platform restaurant location that becomes inactive because it goes out of business or no longer uses the Toast platform is not archived. An inactive state for a restaurant is more common than the archived state.

By default, the /v1/restaurants/{restaurantGUID} endpoint returns an HTTP 404 Not Found response when you request information about an archived restaurant. Now when you set the includeArchived query parameter to true, the endpoint will return information about the archived restaurant.

New deleted value for inactive restaurants in partners API

The PartnerAccessExternalRep object in the partners API includes a new deleted value to indicate whether a restaurant is actively using the Toast platform. You can use this value to understand the status of Toast platform restaurant locations that are connected to your integration. For example, if a restaurant is no longer operating, or is no longer using the Toast platform, the restaurant location is inactive and the deleted value is true.

2024-06-18

posButtonColorLight and posButtonColorDark added to menus API

The Menu, MenuGroup, MenuItem, ModifierGroup, and Modifier objects of the menus API have been updated with the following values:

  • posButtonColorDark: Specifies the button color for the menu entity on the Toast POS app when the app is running in dark mode.

  • posButtonColorLight: Specifies the button color for the menu entity on the Toast POS app when the app is running in light mode.

When an employee configures a POS button's color, they select a color pairing that consists of two colors, one for light mode and one for dark mode. posButtonColorLight contains the HEX code for the light mode color. posButtonColorDark contains the HEX code for the dark mode color.

posButtonColorLight defaults to #f7f7f7 and posButtonColorDark defaults to #1a1c23, the HEX codes when the WHITE color pairing is chosen.

The following table shows the color pairing names and the color HEX codes for light and dark mode associated with each pairing.

Color pairing names and their light and dark HEX codes

Color pairing name

Light HEX code

Dark HEX code

WHITE

#f7f7f7

#1a1c23

TERRACOTTA_1

#ffe6e9

#7e635d

TERRACOTTA_2

#efa49f

#74504D

TERRACOTTA_3

#f07166

#722e25

TERRACOTTA_4

#e45a4e

#561408

ORANGE_1

#fbd9b6

#8f5f3d

ORANGE_2

#f7be6e

#7e4116

ORANGE_3

#f98c1f

#803500

ORANGE_4

#e56f1a

#682d03

YELLOW_1

#fbf5b6

#7e6b44

YELLOW_2

#fed850

#7b5f27

YELLOW_3

#e9b10c

#7c5000

YELLOW_4

#c78605

#633d09

GRASS_1

#e8f7d4

#657552

GRASS_2

#afe26c

#556e34

GRASS_3

#71b314

#37570a

GRASS_4

#32a206

#113a00

SKY_1

#e3f0fb

#637486

SKY_2

#9fc5f0

#4d6074

SKY_3

#77a5e4

#2a456b

SKY_4

#558edd

#213554

LAVENDER_1

#f1e3fd

#78668a

LAVENDER_2

#dab2f7

#5e4776

LAVENDER_3

#b26ee2

#402960

LAVENDER_4

#a270db

#25174f

GRAY_1

#d0d0d0

#6c6c6c

GRAY_2

#c3c3c3

#5f5f5f

GRAY_3

#b1b1b1

#474747

GRAY_4

#989898

#404040


Like all changes to the menus API, these new values become available in the menu JSON after a restaurant has made a menus-related change and published the new menu, which initiates regeneration of the restaurant's menus data. For more information, see Menus API returns published data only.

This change applies to both V2 and V3 of the menus API.

Note

For information on the differences between V2 and V3 of the menus API, see Comparing menus API V2 and V3.

2024-05-28

Bearer authorization type string enforced for API authentication

When you authenticate your API client to use Toast APIs, you provide a bearer-type authentication token in the Authorization header field of your request. The string Bearer is a required part of the header field format Authorization: Bearer [token].

Toast APIs will enforce the required bearer token Authorization field format, including the string Bearer, on 2024-08-26. If your integration does not already include the string Bearer in the Authorization header field for all Toast API requests, you must implement authentication in a way that includes that string before 2024-08-26.

For more information about Toast API authentication, see Using an authentication token.

2024-05-13

TLS certificate provider change

The TLS certificate provider for Toast APIs will change from Let's Encryptâ„¢ to Googleâ„¢. The Let's Encrypt root certificate is changing in September 2024 to a newer trust root that is not installed in older devices and systems. By switching from Let's Encrypt to Google, the Toast platform remains on a trust chain that is installed on all systems in current use on the internet.

This change has already been made to the Toast sandbox environment and will be made to the Toast production environment on or after 2024-05-20. Make test API requests in the sandbox environment and confirm that your integration can correctly handle the new certificate provider.

For more information, see:

2024-04-23

Optional phoneCountryCode field added to the orders API customer object

The orders API customer object now includes the optional phoneCountryCode field. The phoneCountryCode field specifies the international phone number country code for a guest.

For more information about the phoneCountryCode field, and the orders API customer object, see the orders API customer object.

2024-04-02

New administrativeArea value in orders API delivery addresses

The orders API DeliveryInfo object now includes an administrativeArea value. The administrativeArea value indicates the geographic or government division, larger than a city/town, for the delivery destination. For example, the name of a province, county, or region might be the administrativeArea value for a delivery address.

The new administrativeArea value is optional, not all delivery addresses include a regional area name other than a city. If you include the state value, you would not include an administrativeArea.

Use the following rules to choose either the new administrativeArea value or the existing state value for a delivery address when you create orders in the orders API.

  • If the country for the delivery address is the United States (U.S.) or Canada, use the state value for the U.S. state or Canadian province. Omit the administrativeArea value.

  • If the country for the delivery address is not the U.S. or Canada (anywhere else in the world), use the administrativeArea value. Include the string XX in the required state value.

Packaging configuration API is now available

The packaging configuration API is now available. The packaging configuration API lets you retrieve a restaurant's packaging preferences and add them to an order using the orders API. Packaging preferences are specifications that a guest can add to their order to indicate whether they want to include items like napkins, utensils, and condiments.

To retrieve packaging preferences with the packaging configuration API, restaurants must have packaging preferences configured. Restaurant leaders can configure packaging preferences in Toast Web at Takeout & delivery > Packaging preferences.

For more information about the packaging configuration API and packaging preferences, see Packaging preferences and Packaging configuration API.

Tender API gratuity and reverse transactions now include order details

The tender API has been updated in the following ways:

  • The TENDER_GRATUITY transaction now includes the check object which describes a transaction's complete order details. The TENDER_GRATUITY transaction payload is now larger as a result of adding the check object.

  • The TENDER_GRATUITY transaction now includes the orderGuid field. The orderGuid is the transaction's unique Toast identifier.

  • The TENDER_REVERSE transaction now includes the refunded order's orderGuid.

For more information about the tender API, see Tender provider integrations overview.

2024-03-15

Menu configuration options for channel-specific visibility available at restaurants

Menu visibility settings that control whether menus are available in specific ordering integrations are now available at all Toast platform restaurant locations.

  • If your ordering integration uses menus API v3 to get menu information, you can expect that all Toast restaurants can now choose which menus appear in your menus API v3 response.

  • If your integration uses menus API v2, you need to transition to using menus API v3. You can work with Toast restaurants to make sure that their menu visibility settings are configured to include the correct menu information in your menus API v3 response.

Toast restaurants can choose which ordering partners a menu is visible to. They manage visibility settings from the menu builder configuration controls in Toast Web. For more information about configuring visibility settings and the menus API, see Specifying ordering channel visibility, Restricting menu visibility to specific online ordering partners, and Comparing menus API V2 and V3.

When a restaurant turns On your integration in the Online ordering partners channel visibility option for a menu, that menu is in the response data you get from the menus API v3. If the restaurant turns your integration Off in the channel visibility option, the menu is not included in the menus API v3 response.

The following image shows the Online ordering partners channel visibility options for menu visibility.

The location of the online ordering partner-specific visibility settings

If your integration uses menus API v2, you need to transition to using menus API v3. The way that your integration filters the menus API v2 response to show only the menu information that a restaurant intends to offer in your integration makes a difference in the way that you can transition to using menus API v3:

  • If your integration only filters menus in the menus API v2 by ORDERING_PARTNERS visibility (the Online ordering partners visibility option in Toast Web), you can safely transition to the v3 endpoint without losing access to menus.

  • If your integration allows restaurants to use visibility settings for menus API v2 other than ORDERING_PARTNERS (the Online ordering partners visibility option in Toast Web), the restaurant will need to update their menu visibility settings to be compatible with menus API v3.

For example, if your integration is still using menus API v2 and you integrate with a restaurant that indicates that a menu should be available in your integration by setting Kiosk, Toast Order and Pay visibility, these menus would be visible to you in the menus v2 response but not in the menus v3 response. To make the visibility setting compatible with menus API v3, the restaurant can select Online order partners and make sure that your integration is set to On in addition to Kiosk, Toast Order and Pay.

Make sure that your ordering integration uses menus API v3 by 2024-08-01.

2024-02-14

New identifierSource and verification code source values in gift card integration

The Toast gift card integration now includes new enumeration values:

  • The identifierSource value of the TransactionInformation object now includes a KEYED_ONLINE value. The KEYED_ONLINE value indicates that a guest entered the identifier of a gift card account while using a Toast Online Ordering website.

  • The source value of the VerificationCode object now includes a VERIFIED value. The VERIFIED value indicates that the Toast platform previously verified the gift card account verification code for this transaction. Typically, your integration receives a request with the source set to VERIFIED for subsequent transactions on an order, after the guest's account is already verified. If your integration receives a request with the verification code source set to VERIFIED, do not verify the guest's code again. For more information about verification codes, see Handle verification codes.

Note

If your gift card program has not opted-in to these features, your integration will not receive the new enumeration values. Contact developer support to inquire about adding Verification Code (PIN) support to your Toast API implementation scope.

2024-01-25

Toast Online Ordering supports loyalty integrations

Toast Online Ordering sites now support integrated loyalty programs. Your loyalty program integration will now receive loyalty integration API requests from Toast restaurant guests who are using Toast Online Ordering site functionality. For more information about loyalty program integrations and Toast Online Ordering sites, see this Toast Central article.

Loyalty integrations support international telephone numbers

The Toast loyalty integration now supports guest telephone number formats for countries other than the United States. Previously, the loyalty integration did not accept international phone number formats.

2023-11-30

kitchenName and prepStations added to ModifierOption object in the menus API

The ModifierOption object of the menus API has been updated to include a kitchenName value. This value specifies the name that appears on kitchen tickets for the modifier. The kitchenName value is null if a kitchen name is not configured for the modifier.

The ModifierOption object of the menus API has also been updated to include a prepStations value. This value contains an array of GUIDs for the prep stations that have been assigned to this modifier option.

If a modifier's item reference has prep stations assigned to it, then the modifier uses those prep stations. If the modifier's item reference does not have prep stations assigned to it, then the modifier inherits the prep stations of the menu item, menu group, or modifier (in the case of nested modifiers) it is modifying.

The array is empty if no prep stations have been assigned to the modifier.

Like all changes to the menus API, this new value will become available in the menu JSON after a restaurant has made a menus-related change and published the new menu, which initiates regeneration of the restaurant's menus data. For more information, see Menus API returns published data only.

This change has been made to both V2 and V3 of the menus API.

Note

For information on the differences between V2 and V3 of the menus API, see Comparing menus API V2 and V3.

2023-11-13

New selectionType values in orders API on 2024-01-22

On 2024-01-22, the selectionType value in the Selection object of the orders API will include two new enumerated values. The following values indicate that the selection is a Toast gift card purchase or a transaction to add value to a Toast gift card.

  • TOAST_CARD_SELL

  • TOAST_CARD_RELOAD

Beginning on 2023-01-22, the order information that you get from the orders API might contain these new selectionType values. Make sure your integration will handle the new values without interruption.

2023-10-19

New country code value for employee telephone numbers

The labor API Employee object now includes an optional phoneNumberCountryCode value to hold the international country code of an employee's telephone number. You can set the country code for an employee's telephone number when you create an employee record.

Resources to find component amounts in mcaRepaymentAmount

You can use Toast platform reports and Toast product information resources to understand how different repayment amounts make up the total mcaRepaymentAmount value in an orders API order.

The mcaRepaymentAmount value in the Payment object for an order indicates the total amount withheld as payments or repayments that apply to your business. For example, the mcaRepaymentAmount might include:

  • Toast Capital payments

  • Marketplace facilitator tax

  • Toast Delivery Services costs

  • Instant deposits

You can use the following resources to understand the different repayment amounts that are included in the orders API mcaRepaymentAmount value.

2023-08-23

New credit card payment surcharge information in orders API

The AppliedServiceCharge object in the orders API includes information about credit card payment surcharges and also service charges in two new values:

  • serviceChargeCategory - the type of the service charge or surcharge. Values are:

    SERVICE_CHARGE - the default value. Used for service charges that are not in one of the other categories.

    CREDIT_CARD_SURCHARGE - a fee assessed only on payment transactions that use a credit card.

    FUNDRAISING_CAMPAIGN - a service charge applied for a charity or similar fundraising effort.

  • paymentGuid - the unique identifier of the credit card payment that a credit card surcharge service charge is applied to. You can use this identifier to match a service charge to a Payment object on a Check. The paymentGuid value is null for any service charge that is not a credit card surcharge.

The Toast platform functionality that sets this service charge and surcharge information in the orders API is in limited release. Initially, API orders only include service charge and surcharge information for orders created by the Toast POS app.

Orders in Toast Takeout and the Toast local ordering website remit marketplace facilitator tax payments

Orders created by the Toast Takeout ordering app and the Toast local ordering website now remit tax payments for restaurants as marketplace facilitators. The facilitatorCollectAndRemitTax value in the AppliedTaxRate object for order items indicates whether the tax payment was remitted by a marketplace facilitator on behalf of the restaurant. If your integration uses detailed tax payment information, this change might affect the way you handle orders API response data for some restaurant locations.

The Toast platform change that handles tax payments as marketplace facilitator tax payments for Toast Takeout and Toast local orders is in limited release. Not all Toast platform restaurants are configured to use Toast Takeout and the Toast local ordering site as marketplace facilitators.

For more information about getting marketplace facilitator tax information from the orders API, see Marketplace facilitator tax information.

2023-08-17

kitchenName added to menuItem object in the menus API

The menuItem object of the menus API has been updated to include a kitchenName value. This value specifies the name that appears on kitchen tickets for the menu item. The kitchenName value is null if a kitchen name has not been configured for the menu item.

Like all changes to the menus API, this new value will become available in the menu JSON after a restaurant has made a menus-related change and published the new menu, which initiates regeneration of the restaurant's menus data. For more information, see Menus API returns published data only.

This change has been made to both V2 and V3 of the menus API.

Note

For information on the differences between V2 and V3 of the menus API, see Comparing menus API V2 and V3.

2023-07-25

Credit cards API guestIdentifier value accepts any identifying string

You can now set the guestIdentifier value in the PaymentRequestMetadata object of the credit cards API to any identifying string for a guest. For example, you can set the guestIdentifier value to an email address or phone number. Previously, the guestIdentifier value required a UUID (Universal Unique Identifier) identifier string. You include an identifying string for guests to improve fraud evaluation for credit card payments. For more information about using the guestIdentifier value, see Using guestIdentifier values.

Restaurants API restaurant information includes currency code

The General object in the restaurants API now includes a currencyCode value. The currencyCode value is the ISO-4217 currency code of the monetary currency a restaurant accepts for purchases. For example, if a restaurant accepts United States dollars, the currencyCode value is USD.

2023-06-22

disabled value in labor API Employee object is deprecated

The disabled value in the labor API Employee object is deprecated and will be removed in the Toast production API environment on 2023-11-27. There is no replacement for the disabled value. This functionality is no longer used by the Toast platform.

2023-05-24

Daily order for tracking excess food

The orders API now returns a daily excess food order for restaurants that use the Toast platform's waste tracking feature. An excess food order, also referred to as a waste order, is a special type of order created in the Toast platform to track excess food in a restaurant. Like guest orders, excess food orders may contain menu items, modifiers, or both.

The Toast platform creates one excess food order per day at each restaurant using the waste tracking feature. The Toast platform creates the daily excess food order the first time a restaurant employee uses the waste tracking feature to identify excess food. If restaurant employees identify additional excess food over the course of the business day, that excess food is added to the daily excess food order. If no excess food is identified on a given day, no excess food order is created for that day.

The orders API indicates that an order is an excess food order using the excessFood value on the Order object. Excess food orders are structurally the same as standard guest orders. However, certain behavior is applied to these orders automatically by the waste tracking feature:

  • The excessFood field is set to true.

  • Exactly one check is created on each excess food order.

  • Each selection on the check is discounted to $0 using an item-level 100% discount. This discount is created automatically by the Toast platform and has the name Waste.

  • If the restaurant has configured waste reasons and the employee identifying the waste selects one of those reasons when tracking the item in the POS, that reason is applied to the discounted selection. Note that waste reasons are not returned in orders API responses.

Because all selections on the check are discounted, the price value on each selection and the amount value of the check is always $0. The preDiscountPrice value on each selection, however, reflects the retail value of each selection. If you use the preDiscountPrice field in order to report on gross sales, you might want to exclude excess food orders from this calculation.

The waste tracking feature is not available to Toast restaurants yet, so you won't see excess food orders right away. Toast support is providing this information ahead of time so you can prepare your integration if it performs reporting activities for Toast restaurants. The waste tracking feature will be available to Toast restaurants in approximately 90 days.

New parameter includes deleted time entries in labor API request

You can use the new includeArchived query parameter for the labor API /timeEntries endpoint to get information about deleted (archived) time entries. The includeArchived parameter controls whether the endpoint response includes deleted time entries, when using the startDate and endDate parameters.

Important

The includeArchived parameter has no effect if you use the modifiedStartDate and modifiedEndDate parameters or the businessDate parameter to select time entries.

  • Querying by a date and time range using the startDate and endDate parameters of the /timeEntries endpoint returns deleted time entries if you include the includeArchived parameter and set it to true. The includeArchived parameter is optional and its default value is false.

  • Querying by modified date range using the the modifiedStartDate and modifiedEndDate parameters of the /timeEntries endpoint always returns deleted time entries.

  • Querying by business date using the businessDate parameter of the /timeEntries endpoint never returns deleted time entries.

You can identify deleted time entries in the response data for the /timeEntries endpoint by checking the deleted and deletedDate values of a TimeEntry object. If the deleted value is true and the deletedDate is not null, the time entry is deleted. The following example shows a TimeEntry object for a deleted time entry.

TimeEntry object for a deleted time entry

{
        "guid": "e3c23dd7-7e01-4388-b6a4-65efa53d4ccf",
        "entityType": "TimeEntry",

        [contents omitted]        

        "deleted": true,1
        "deletedDate": "2023-05-23T23:42:53.671+0000",2

        [contents omitted]

    }

1

The deleted value for a deleted time entry is true.

2

The deletedDate value for a deleted time entry is not null.


2023-05-16

New location values in restaurants API, stateCode value deprecated

The Location object in the restaurants API includes two new values:

  • administrativeArea - The name of the geographical division (for example, state, province, or county) that the restaurant is located in.

  • phoneCountryCode - A numeric code corresponding to one or more countries, used as a telephone number prefix when making international telephone calls.

The stateCode value in the Location object is now deprecated. Use the administrativeArea value to get the state or province of a restaurant, instead of the stateCode value.

Authentication and scope information in API reference documentation

The API reference documentation for Toast APIs now includes information about the authentication method and authorization scopes required for each API endpoint. For example, the API reference documentation for the /orders/{guid} endpoint of the orders API indicates that the endpoint requires the orders:read scope.

2023-04-26

Online ordering partner-specific menu visibility settings are available in sandbox

Previously, Toast support announced the availability of V3 of the menus API for online ordering integrations. With menus API V3, the /menus endpoint only returns the menu entities that are visible to the online ordering integration that is making a request.

The corresponding UI that allows restaurants to configure which menus should be visible to each online ordering integration has been released to the sandbox environment. For more information on using these settings, see Restricting menu visibility to specific online ordering partners.

The location of the online ordering partner-specific visibility settings

The partner-specific settings are not yet available for restaurants to use in the production environment. Toast support is making these settings available to you in the sandbox environment so you can test your integrations with them.

2023-03-30

prepTime added to ModifierOption object in the menus API

The ModifierOption object of the menus API has been updated to include a prepTime value. This value specifies the amount of time, in seconds, that it takes to prepare the modifier option. The prepTime value is null if a prep time has not been configured for the modifier option.

Like all changes to the menus API, this new value will become available in the menu JSON after a restaurant has made a menus-related change and published the new menu, which initiates regeneration of the restaurant's menus data. For more information, see Menus API returns published data only.

This change has been made to both V2 and V3 of the menus API.

Note

For information on the differences between V2 and V3 of the menus API, see Comparing menus API V2 and V3.

2023-03-17

New createdInTestMode value in orders API

The orders API Order object now contains a createdInTestMode value. The Boolean createdInTestMode value indicates whether an order was created while a restaurant location was configured to allow employees to test and train with Toast POS system functionality without affecting real production data. For more information about test mode, see this Toast Central article.

Increased maximum page size for connectedRestaurants endpoint

The maximum pageSize query parameter value for response data from the partners API connectedRestaurants endpoint is now 200. Previously the maximum page size was 100. You use the pageSize query parameter to control the number of connected restaurants the endpoint returns in a single, paginated response body.

2023-01-17

multiLocationId value added to PreModifier and PreModifierGroup objects in the menus API

The multiLocationId value has been added to the PreModifer and PreModifierGroup objects in both V2 and V3 of the menus API.

A multiLocationId is used to identify and consolidate menu entities that are versions of each other.

For more information on multilocation IDs, see Toast identifiers. For more information on premodifiers, see Applying modifiers and pre-modifiers.

2023-01-06

New table waitlist order source value in orders API

The source value of the orders API Order object will include a new order source value on 2023-02-13. The following new order source value indicates that an order originated from the Toast Tables table waitlist function.

  • Toast Tables

2022-11-18

New catering order source values in orders API

The source value of the orders API Order object will include two new order source values on 2022-12-05. The following new order source values indicate that an order originated from Toast platform catering and event functionality.

  • Catering

  • Catering Online Ordering

2022-10-24

Customer object will be removed from loyalty API

The loyalty integration API Customer object and the customer value in the Check object have been deprecated and will be removed from the API on 2022-11-01. The information about restaurant guests in the Customer object is no longer used by the loyalty integration API.

2022-10-05

Menus API V3 filters menu entities for ordering partners

A new version of the menus API, version 3 (V3), is now available.

Important

Ordering partner integrations must switch to using V3 of the menus API by 2023-01-13. Other partner integration types should continue to use V2 until further notice.

With menus API V3, the /menus endpoint has been re-factored for ordering partners so that it returns only those entities that are visible to the online ordering partner making the request. This eliminates the need for an ordering partner integration to filter the menu data it receives from the /menus endpoint. The Toast platform uses the partner token included with the request to determine which ordering partner has made the request and filters the menu data accordingly.

To access the /V3/menus endpoint, an ordering partner's API account must have the menus.channel:read scope. Toast support will assign the menus.channel:read scope to ordering partners. Only ordering partners will receive this scope.

Note that currently menus API V3 only supports ordering partners. Additional re-factoring will happen in the future to support other types of partner integrations, including integrations that continue to need the aggregated view of all of a restaurant's menu entities that menus API V2 provides. Other integration partners should continue to use menus API V2 until further notice. Access to menus API V2 will continue to be gated by the menus:read scope.

Ordering partners, see Switching to menus API V3 for more information on switching to menus API V3.

All partners, see Comparing menus API V2 and V3 for more information on the differences between V2 and V3.

Switching to menus API V3

To switch to using the V3 version of the /menus endpoint, your integration must replace V2 with V3 in the URL it uses to call the endpoint. It must also remove any logic that filters out menu entities whose visibility array did not include the ORDERING_PARTNERS value. This logic is no longer necessary because the /V3/menus endpoint filters the menu entities it returns based on the ordering partner integration making the request.

Testing your integration with menus API V3

Toast support is making V3 of the menus API available to ordering partners before the corresponding UI settings are available in Toast Web that allow restaurants to define the specific ordering partners a menu entity is visible to. This staggered release allows ordering partners to prepare their integrations for the new ordering partner-specific visibility settings before restaurants start using them.

That said, menus API V3 still provides immediate value to online ordering partners because it filters what it returns to include only menu entities that should be visible to any online ordering partner (that is, menu entities whose Online ordering partners setting in the menu builder, or Online orders: Ordering partners setting in the classic menu details pages, is enabled). Also, the updates required to make your integration compatible with menus API V3 now will continue to work when the more granular ordering channel visibility settings are introduced, meaning you will not have to make additional code changes when those settings become available.

To test your integration now, mark a menu entity as visible to Online ordering partners (in the menu builder) or Online orders: Ordering partners (in the classic menu details pages). Menu entities with these settings enabled will be included in the menu JSON your integration receives from menus API V3. Menu entities with these settings disabled will be filtered out of the menu JSON your integration receives.

Toast will make the more granular visibility settings available to online ordering partners in the sandbox environment in November, 2022, allowing you to do final testing on your re-factored integration with the new settings before the changes go live in the Production environment.

2022-09-09

Attempted login with credentials for a different environment produces a 400 error message

Previously, if you attempted to log in to an environment with credentials that belong to a different environment, you would get a 403 error message.

Now, a 400 error message is returned indicating that the domain tenant and tenant associated with the client_id or connection_id are not the same.

2022-08-22

API reference documentation includes data object definitions

The Toast API reference documentation now includes detailed information about the values in data objects in a new Data definitions section for each API. You can browse through the data objects used by each Toast API and easily find information about the objects you are working with.

For example, the Data definitions sections include the following reference documentation for data objects:

In the reference documentation entries for data objects, you can expand the entries for values that hold array and object data types by clicking the caret icon. For example, the entry shown in the following image is expanded to show information about a value that holds an array of objects.

An API reference documentation entry for a data object with the contents of a value expanded to show information about the array of objects it holds.

2022-08-05

New chosenName value in labor API Employee object

The labor API Employee object now includes a chosenName value. The chosenName value is an optional, preferred name that employees set for themselves. The chosen name is used instead of the employee's first name in some Toast platform functionality. For example, the employee's chosen name is shown in:

  • Kitchen display system (KDS) tickets

  • Printed kitchen tickets

  • The Toast POS app order activity screen

  • Payment receipts

Employees set the chosen name in the Personal Info section of the Employees configuration page of Toast Web.

You can set the chosen name when you create an employee using a POST request and you can update an employee's chosen name using a PATCH request.

The following example shows an Employee object with the new chosenName value.

{
  "guid": "4d7651d2-0ea8-4496-97fd-558cfd3514f1",
  "entityType": "RestaurantUser",
  "externalId": "MYORG:20220804232724",
  "v2EmployeeGuid": "a59b2b0b-f9f2-44ed-be49-6d1dac49a419",
  "lastName": "Gauthier",
  "wageOverrides": [],
  "firstName": "Josephine",
  "chosenName": "Jo",1
  "createdDate": "2022-08-05T03:27:25.799+0000",
  "deleted": false,
  "deletedDate": null,
  "jobReferences": [],
  "modifiedDate": "2022-08-05T03:30:27.609+0000",
  "disabled": false,
  "externalEmployeeId": "",
  "email": "jgauthier@example.com"
}

1

The new chosenName value includes an optional, preferred name for the employee. It is used instead of the firstName value in some Toast platform functionality.

2022-07-27

Alcohol labeling for menus API now available in Toast Web

The setting for returning information about whether a menu item or modifier contains alcohol and would benefit from additional handling is available for restaurants to use in Toast Web. For more information about the underlying menus API for this setting, see Determining if a menu item or modifier contains alcohol.

2022-07-18

Orders API prevents inappropriately large orders from being posted

The orders API has been updated to return an HTTP status code 400 response when a client integration attempts to:

  • Post an order with more than 1,000 top-level selections.

  • Post an item to an order that causes the order to have more than 1,000 top-level selections. For example, if an order has 995 top-level selections and your integration posts six items to that order in a single request, that request will be rejected.

A top-level selection is defined as a selection that is not the child of another selection in the order.

To avoid exceeding the 1,000 top-level selection limit, Toast support encourages the grouping of identical items together, so:

  • 1 soda

  • 1 lemonade

  • 1 energy drink

  • 1 soda

  • 1 lemonade

  • 1 soda

Can be combined into:

  • 3 sodas

  • 2 lemonades

  • 1 energy drink

This reduces the number of top-level selections in the request from six to three while providing the same order data.

2022-06-16

Improved error message from the GET /menus endpoint when the Amazonâ„¢ S3 service is unavailable

Previously, if the Amazon S3 service was unavailable, the GET /menus endpoint of the menus API would return a 404 HTTP error code with the message:

No published data found for restaurant GUID: [restaurant-guid]. Make sure restaurant GUID is correct and that data has been published.

This message was misleading because it provided the wrong cause and resolution for the problem.

Now, when the Amazon S3 service is unavailable, the GET /menus endpoint returns a 503 HTTP error code with the following message:

Unable to retrieve menus for restaurant due to a service outage.

2022-05-18

Menu items and modifiers that contain alcohol are identifiable

The menus API has been updated to return information about whether a menu item or modifier contains alcohol and may require, or benefit from, additional handling. Examples for why a restaurant would identify a menu item or modifier as containing alcohol include the following:

  • A menu item or modifier that contains alcohol may require delivery drivers to request identification before giving the items to a guest.

  • Under some local laws and regulations, guests may not accrue discount or loyalty points on purchases of items that contain alcohol.

Note that not all menu items or modifiers that contain alcohol require, or benefit from, additional handling. For example, a drink containing rum would require an ID check before it is delivered, while a piece of rum cake would not. The alcohol identification feature is designed for menu items and modifiers that need some type of additional handling after they are ordered, such as an ID check or the prevention of loyalty point accruals.

Support for alcohol identification in the menus API

To support the identification of items that contain alcohol, the MenuItem and ModifierOption objects of the menus API have a new contentAdvisories value. The following code sample shows the contentAdvisories value on a MenuItem object:

"menuItems": [
  {
    "name": "Rum Punch",
    "guid": "0a6e4999-cfl1-4dd6-bf4d-f4d2b65f7d88",
    "multiLocationId": "100000000100009153",

    [contents omitted]

    "contentAdvisories": {
      "alcohol": {
        "containsAlcohol": "YES"
      }
    }
  }                       
]

The contentAdvisories value holds a single object of type ContentAdvisories. The purpose of the ContentAdvisories object is to encapsulate important information about a menu item or modifier's contents. Currently, this object only has information about whether a menu item or modifier contains alcohol. In the future, it could be used for other content information, such as whether the menu item or modifier contains common allergens or is compatible with various dietary restrictions.

The ContentAdvisories object has an alcohol value that holds a single object of type Alcohol. The Alcohol object encapsulates information related to the alcoholic aspects of the menu item or modifier. Currently, the Alcohol object has one value, containsAlcohol. The containsAlcohol value is a string and may be one of the following:

  • YES - The menu item or modifier contains alcohol.

  • NO - The menu item or modifier does not contain alcohol.

The containsAlcohol value may also be null. A null value indicates that the corresponding user interface option in Toast Web has not been set for this menu item or modifier.

The following code samples show the different ways the containsAlcohol value may appear in the menus response data.

MenuItem examples

A MenuItem object for an item that contains alcohol:

"menuItems": [
  {
    "name": "Rum Punch",
    "guid": "0a6e4999-cfl1-4dd6-bf4d-f4d2b65f7d88",
    "multiLocationId": "100000000100003519",

    [contents omitted]

    "contentAdvisories": {
      "alcohol": {
        "containsAlcohol": "YES"
      }
    }
  }                       
]

A MenuItem object for an item that does not contain alcohol:

"menuItems": [
  {
    "name": "Rum Cake",
    "guid": "0a6e4999-cfl1-4dd6-bf4d-f4d2b65f7d88",
    "multiLocationId": "100000000100009153",

    [contents omitted]

    "contentAdvisories": {
      "alcohol": {
        "containsAlcohol": "NO"
      }
    }
  }                       
]

A MenuItem object for an item whose containsAlcohol option has not been set in Toast Web:

"menuItems": [
  {
    "name": "Grilled Cheese",
    "guid": "0a6e4999-cfl1-4dd6-bf4d-f4d2b65f7d88",
    "multiLocationId": "100000000100009153",

    [contents omitted]

    "contentAdvisories": {
      "alcohol": {
        "containsAlcohol": null
      }
    }
  }                       
]
ModifierOption examples

A ModifierOption object for a modifier that contains alcohol:

"modifierOptionReferences": {
  "1": {
    "referenceId": 1,
    "name": "Rum Shot",
    "guid": "429f9045-74a1-81bc-4c48-86ce51c2f6ae",
    "multiLocationId": "100000000100008684",

    [contents omitted]

    "contentAdvisories": {
      "alcohol": {
        "containsAlcohol": "YES"
      }
    }
  }
}

A ModifierOption object for a modifier that does not contain alcohol:

"modifierOptionReferences": {
  "2": {
    "referenceId": 2,
    "name": "Lettuce",
    "guid": "429f9045-74a1-81bc-4c48-86ce51c2f6ae",
    "multiLocationId": "100000000100008684",

    [contents omitted]

    "contentAdvisories": {
      "alcohol": {
        "containsAlcohol": "NO"
      }
    }
  }
}

A ModifierOption object for a modifier that has not had its containsAlcohol option set in Toast Web:

"modifierOptionReferences": {
  "3": {
    "referenceId": 3,
    "name": "Cheese",
    "guid": "429f9045-74a1-81bc-4c48-86ce51c2f6ae",
    "multiLocationId": "100000000100008684",

    [contents omitted]

    "contentAdvisories": {
      "alcohol": {
        "containsAlcohol": null
      }
    }
  }
}
containsAlcohol value is null until the corresponding user interface option is available

The ModifierOption value has been included in the menus API payload now, before the corresponding user interface option has been added to Toast Web, to allow you to prepare your integration to consume the new value before restaurants start using it in their configurations. This means that, until the UI option is available, the containsAlcohol value for menu items and modifiers will always be null. A subsequent release note will inform you when the UI option is available in Toast Web and restaurants may begin using it to identify menu items and modifiers that contain alcohol.

UI option for modifiers will exist on the item reference details page

When it becomes available, the UI option to indicate that a modifier contains alcohol will exist on the details page for the modifier’s underlying menu item reference, not on the details page for the modifier itself.

2022-05-09

Labor API TimeEntryBreak object includes new guid value

The labor API TimeEntryBreak object now includes a guid value. The GUID value is the Toast platform identifier for an individual break entry.

2022-04-15

Stock API and webhook improvements

Several improvements and updates have been made to the stock API and the stock webhook.

New identifier values in stock API and stock webhook payload

The stock API and stock webhook payloads include two additional identifiers:

  • multiLocationId is a consistent identifier that applies to all versions of a menu item that is shared across locations. Toast support recommends using the multiLocationId instead of a menu item guid, when submitting requests to Toast APIs. For more information, see Toast identifiers.

  • versionId has been added for future use.

Stock API search endpoint accepts multi-location IDs or GUIDs

When making a request to the /inventory/search endpoint, the message body you submit can now contain either multi-location IDs or GUIDs to identify the menu items you want to retrieve inventory information for. For more information, see Getting stock information using the stock API.

New stock API endpoint to update inventory information

The stock API has a new /inventory/update endpoint that you can use to update inventory information for menu items or modifiers. You can set one of the following status values for a menu item or modifier:

  • IN_STOCK

  • OUT_OF_STOCK

  • QUANTITY - If you set an item status to QUANTITY, you must also provide a quantity value with double data type. For example, you can set the quantity to 0.5, 7.0, or 10.75.

For more information, see Updating stock.

New restaurant availability API

The new restaurant availability API retrieves information about a restaurant's availability to accept online orders. The restaurant availability API is a fallback API service for the restaurant_availability webhook, which is the most efficient way for you to get availability information about restaurants.

The restaurant availability API returns a status value that can be either ONLINE or OFFLINE. You can use information about whether a restaurant is available for online ordering to avoid sending guest orders that will not be fulfilled or that will overwhelm the restaurant when it becomes available again.

For more information, see Getting a restaurant's online ordering availability.

Updated Postman collection of example API requests

The Postmanâ„¢ collection of API requests that you can use to test Toast API functionality has been updated. The updated collection includes requests for all current APIs, a pre-request script that auto-requests a new authentication token when the old one expires, and example responses for all APIs. For more information, see Example API requests.

2022-03-29

Invalid Toast-Restaurant-External-ID value returns HTTP 400 response

Toast APIs now return an HTTP 400 (bad request) response if you submit a request with a Toast-Restaurant-External-ID header parameter value that is not a valid GUID. Previously, Toast APIs returned an HTTP 500 response in this situation.

2022-03-11

Webhooks retry messages after HTTP 429 response

The Toast platform now retries sending webhook messages after a receiving endpoint returns an HTTP 429 (too many requests) response. Previously, the Toast platform did not attempt to resend a webhook messages after receiving an HTTP 429 response. For information about the way the Toast platform retries sending webhook messages, see Retry support.

2022-03-02

Summary of the Order object now available

A new Order object summary section has been added to the Toast API Developer Guide. The new section contains an overview diagram of the Order object. It also provides explanations of related fields in the object, including identifiers, status values, dates and times, and order amounts. The order amount information uses an example order to demonstrate the relationships among the amount values.

Orders API includes a new order source enumeration value and an updated source value name

A new enumerated value has been added to the source value of the orders API Order object. The new value is Toast Pickup App which represents the Toast Takeout app. Additionally, the OPT value has been corrected to Order-and-Pay-at-Table.

Updated error rate limits for Toast webhook subscriptions

The following list describes the new rules for pausing and stopping webhook subscriptions that are experiencing errors:

  • If a webhook endpoint returns fifty or more errors during a five-minute interval, the subscription is paused for one minute.

  • If a webhook endpoint is paused nine times during a ten-minute interval, then the subscription is stopped and you must contact Toast support to restart it.

Previously, the Toast platform followed these rules for pausing and stopping webhook subscriptions that were experiencing errors:

  • If a webhook endpoint returned three or more errors during a one-minute interval, the subscription is paused for one minute.

  • If a webhook endpoint is paused three times during a three-minute-and-20-second interval, then the subscription is stopped and you must contact Toast support to restart it.

For more information, see Back-off support.

2022-02-09

Loyalty API externalId value for menu entities will be null

Loyalty API requests for restaurants using an upcoming release of the Toast POS app will always include a null externalId value for menu entities. This change will take effect when a restaurant starts using version 2.55 of the Toast POS app. The date that a restaurant begins using version 2.55 depends on the upgrade policy of the restaurant location. Your integration might receive loyalty API requests with null externalId values on 2022-02-23.

Currently, the externalId value for menu entities in a loyalty API request includes a numeric string that is not an external identifier for the menu entity.

2022-01-31

Orders API includes new Invoice order source enumeration value

The source value enumeration in the orders API Order object will include a new Invoice value on 2022-02-07. The value Invoice indicates that the order was created by upcoming Toast platform functionality that is in limited release.

New multiLocationId identifier for menus API menu entities

The menus API includes a new multiLocationId identifier for menu entities. The multiLocationId identifier is equivalent to the masterId identifier and is used to identify and consolidate menu entities that are versions of each other. The name of the new multiLocationId value is more consistent with Toast API terminology standards. The masterId value is now deprecated and will remain in the menus API for backwards compatibility. If your integration uses masterId, you should update the value name to use multiLocationId. For more information, see Understanding GUIDs, referenceIds, and multiLocationIds.

2022-01-21

New email subscription for webhook notifications

You can now designate an email address for Toast webhook start and stop notification messages. These messages indicate that a webhook subscription has paused, stopped, or restarted.

Previously, the Toast platform sent all start and stop notification messages to your support email address. In some cases, teams who handle technical support email messages are different from the teams who would can update your webhook configuration and resolve webhook processing errors. For example, a software development team might handle webhook configuration and processing.

You now designate both a support email address and a dedicated start and stop message email address for a new webhook subscription. For existing webhook subscriptions, the Toast integrations team will configure the new start and stop message email address that you want to use.

You can use this web form to enter the start and stop message email address. Only use this form if you already use a webhook subscription. You cannot use this form to request a new webhook subscription.

The email addresses you designate for your webhook subscriptions can be different for each subscription you use. For example, you can designate different email addresses for a menus webhook subscription and a stock webhook subscription.

For more information about webhook start and stop email messages, see Back-off support.

Gift card add value transactions limited to $500

The Toast platform now limits gift card add value transactions to $500. If you use the Toast gift card integration, your integration will no longer receive add value transactions for amounts over that limit. This new transaction value limit does not make any functional or technical changes to the Toast gift card API.

Loyalty account identifier on reversal can be null

The Toast loyalty API will change the behavior of the loyaltyIdentifier value in the TransactionInformationReverse object for reversal transaction requests on 2022-03-14. The loyaltyIdentifier value for a reversal transaction will always match the loyaltyIdentifier of the transaction that is being reversed.

By 2022-03-14, your loyalty API integration must handle a null loyaltyIdentifier for a LOYALTY_REVERSE transaction. If you receive a LOYALTY_REVERSE transaction with a null loyaltyIdentifier, your integration must return an HTTP 200 response code and the transactionStatus ACCEPT if the transaction is structured correctly.

The reversal transaction account identifier will match the account identifier of the original transaction:

  • When the loyalty account identifier of the original transaction is null.

    In this situation, the loyalty account identifier of the reversal transaction will be null. This is a change from current API behavior.

  • When the loyalty account identifier value of the original transaction includes the account identifier string.

    In this situation, the loyalty account identifier of the reversal transaction will also include the identifier value.

Currently, the Toast loyalty API sends a non-null loyaltyIdentifier value for some reversal transactions that apply to a transaction that contained a null loyaltyIdentifier value.

The following procedure describes one situation that can result in a non-null loyaltyIdentifier value in a reversal transaction for a transaction that included a null loyaltyIdentifier value.

  1. A restaurant guest does not provide loyalty account information when paying for a check. The Toast loyalty API sends your loyalty service an accrual transaction request. The loyaltyIdentifier value in the TransactionInformationCheck object is null. The Toast loyalty API sends an accrual request transaction for all check payments, even when the guest has not presented loyalty account information.

    When your service receives a transaction request with no loyalty account identifier, your integration might discard the transaction information. The action your service takes with this request depends on the design of your integration.

  2. After completing the payment transaction, the guest presents loyalty account information and wants to apply the check payment to the loyalty program.

  3. The Toast loyalty API sends your service a reversal transaction for the check payment. The transaction identifier of the reversal request matches the transaction identifier of the accrual request.

    Currently, the Toast loyalty API includes the loyalty account identifier that the guest provided in the loyaltyIdentifier value of the TransactionInformationReverse object for the reversal request. This behavior will change on 2022-03-14 and the loyaltyIdentifier on this transaction will be null.

  4. If your loyalty program service did not store the original transaction (which did not include a loyalty program account identifier), the correct method for handling the reversal request for that transaction might not be clear. The way that your service handles this situation depends on the design of your integration.

On 2022-03-14, the Toast loyalty API will include a null loyaltyIdentifier value for the reversal request described in Step 3.

By 2022-03-14, your loyalty API integration must handle a null loyaltyIdentifier for a LOYALTY_REVERSE transaction. If the you receive a LOYALTY_REVERSE transaction with a null loyaltyIdentifier, your integration must return an HTTP 200 response code and the transactionStatus ACCEPT if the transaction is structured correctly.

Menus API menu item includes taxInclusion value

The MenuItem object returned by the menus API now has a taxInclusion value that you can use to determine if the taxes on a menu item are included in the item price.

Important

The taxInclusion value will not appear in the menus API response data until restaurant employees make a menu-related change and publish that change. For more information, see API updates may require publishes.

The taxInclusion value is a string that represents the tax inclusion setting for the menu item. Values include:

  • TAX_INCLUDED: The menu item's price includes taxes. You should not display additional tax (added to the menu item price) in an ordering interface.

  • TAX_NOT_INCLUDED: The menu item's price does not include taxes. You should display the tax amount in addition to the menu item price in your ordering interface.

  • SMART_TAX: The menu item is using smart tax, a feature that allows restaurant employees to configure menu item prices to include or not include taxes, depending on the section of the restaurant that the item is ordered in (for example, the bar or the dining room). For example, a restaurant might have service areas in which a guest can order an item at either the bar or in the main dining room. To prevent bartenders from having to handle coins, which can slow down service, and to make tipping easier, the restaurant wants the price of the item to be a whole number that includes tax when it is ordered at the bar. In the main dining room, where speed of service is less of a concern, the restaurant does not want the item's price to include tax, so that it does not lose the extra revenue.

Typically, the smart tax setting is used for on-site ordering where the efficiency of money handling is a priority and is less frequently used for online ordering integrations. If the taxInclusion value for a menu item is set to SMART_TAX, your ordering integration should treat the menu item as if tax is not included. For more information on the smart tax feature, see Smart tax.

Note

The tax inclusion setting for a menu item is inherited by any modifiers that are applied to that menu item. For more information, see Tax functionality interaction.

2021-12-16

New order management configuration API

The new order management configuration API provides information about the online ordering schedule for a restaurant. The ordering schedule indicates the hours when a guest can place an order for takeout or delivery. For more information, see the order management configuration API reference documentation.

409 error indicates a restaurant published new data during retrieval of a paginated response

It is possible that a restaurant will change its configuration while your integration client is in the process of retrieving paginated data for that restaurant. For example, a restaurant may create a new menu item while you are retrieving menu items using the /menuItems endpoint of the configuration API. If a restaurant your client is retrieving paginated data for publishes any changes to its configuration during the data retrieval, the Toast platform now sends a 409 HTTP error (previously, it sent a 500 error in this situation). If your integration client receives a 409 error, it should re-submit the request it is making, without the pageToken query parameter, so that the response restarts from the first page. For more information, see Paginating response data.

Detailed menu hierarchy description and diagram are available

A new Menu hierarchy section has been added to the Toast platform guide that provides detailed information about the menu hierarchy and its menu entities. This section also includes information about the rules for menu entity sharing and re-use. To illustrate the concepts discussed in the section, a diagram is provided that shows the menu hierarchy structure along with examples of the entity sharing and re-use rules.

2021-12-10

New menus webhook indicates changed menus

The new menus webhook sends a message when a restaurant that uses your integration publishes a change to its menus. The message payload includes the GUID of the affected restaurant and a timestamp, in the UTC time zone, for when the restaurant last published its menus. For more information, see Menus webhook.

The new menus webhook is now the best way to determine when the menu data for a restaurant becomes stale. Toast support recommends that you use the menus webhook as a primary indicator and use the /metadata endpoint of the menus API as a fallback method. For example, your integration could check the /metadata endpoint every 30 minutes, to make sure that you have not missed a webhook message. For more information, see Determining if a restaurant's menu data has gone stale.

2021-11-17

Gift card integration will include cash-out redeem transactions

On 2022-01-17, the Toast platform will allow cash-out transactions through gift card provider integrations. If your gift card provider service uses the Toast gift card integration, your integration may receive GIFTCARD_REDEEM type transactions with the isCashOut value of the TransactionInformationRedeem object set to true. The value true indicates that the restaurant redeemed gift card funds as cash paid out to the restaurant guest. Currently, the Toast platform does not allow cash-out transactions for gift card program integrations and the isCashOut value is always false.

Toast cash drawer reports present cash-out gift card transactions separately from gift card purchase transactions. If your gift card provider service includes reporting information about gift card transactions, your integration should be prepared to present cash-out redeem transaction information by 2022-01-17.

New multiLocationId value in orders API menu item selections

The item and itemGroup values for menu item selections in orders API response data now conform to a new ConfigReference object type. The ConfigReference object includes a new multiLocationId value in addition to the guid value for the item or item group. The ConfigReference object and the multiLocationId value are components of upcoming orders API functionality.

Currently, orders API response data includes the new multiLocationId value. You can use the multiLocationId value to associate menu entities that are versions of a shared menu entity within a multi-location restaurant group. Restaurant groups with multiple locations use menu entity versions to customize shared menu entities for use at specific locations. The multiLocationId value is a consistent identifier that applies to all versions of a shared menu entity at all locations in the restaurant group. The multiLocationId value in the orders API corresponds to the masterId value for menu configuration entities in the menus API (future Toast API improvements will make the value names consistent). For more information about the menus API masterId value, see multiLocationId values. For more information about menu item versions, see Creating a version of a configuration entity.

Menus API rate limit increase

The rate limit for the menus API has been increased from one request per minute per location to one request per second per location. For more information, see Toast rate limit values.

2021-10-08

New orders API endpoint adds selections to a check

The orders API includes a new endpoint that you can use to add menu item selections to an existing check. The POST method of the new /orders/{orderGuid}/checks/{checkGuid}/selections endpoint takes an array of Selection objects and adds those menu item selections to the order and check that you indicate in path parameters. For more information, see Adding items to an existing check.

New orders API endpoint updates order delivery information

The orders API includes a new endpoint that you can use to update delivery information for an existing order. The PATCH method of the /orders/{orderGuid}/deliveryInfo endpoint updates the following delivery information:

  • Delivery time

  • Dispatch time

  • Delivery state

  • Delivery employee

For more information, see Updating delivery information for an order.

Menus API modifier group ordering correctly follows Modifier Ordering Priority setting

The menus API now correctly returns modifier groups in the same order that the Toast POS app displays. The order of modifier groups is affected by the setting a restaurant chooses in the Modifier Ordering Priority setting. Previously, the menus API always used Display Ordering Priority numbers when it calculated the order in which to return modifier groups, even if the Modifier Ordering Priority setting was No. The Toast POS app was not affected by this problem and correctly ordered modifier groups according to the configuration of the Modifier Ordering Priority setting. This resulted in inconsistent modifier group ordering in the POS app and menus API.

Several settings and conditions affect the order that modifier groups are displayed in on Toast platform ordering channels, or returned by the menus API. For information about ordering modifier groups, see Modifier group display order overview. The incorrect modifier group ordering problem occurred in the following situation:

  • The Modifier Ordering Priority setting was No.

  • The Display Ordering Priority number field for one or more modifier groups contained a number.

The menus API now orders modifier groups in the same way as the Toast POS app. For restaurant locations that use the modifier group configuration described above, the order in which modifier groups are returned by the menus API will change to match the order used by the Toast POS app.

2021-09-03

New pagination parameter for the configuration and kitchen APIs, old pagination parameters deprecated

The configuration API and the kitchen API use a new query parameter and response header field to control the pagination of endpoint requests. The existing pagination query parameters for configuration API endpoints are deprecated and will be removed from the API on 2021-12-06. You can test the new pagination parameter in the production environment immediately.

The new pagination query parameter and response header field are:

  • pageToken - A string that identifies the set of data objects that the endpoint will return in its response data. You can use this parameter to control the pagination of response data. You get the value that you supply in the pageToken parameter from the Toast-Next-Page-Token header field value of a previous request to the endpoint.

  • Toast-Next-Page-Token - A string that identifies the following set of objects that the endpoint will return. You can use this value to control the pagination of response data. To return the next page of objects you supply this value in the pageToken parameter of the next request to the endpoint.

For more information, see Paginating response data.

New guestOrderStatus in the orders API

The orders API Order object includes a new guestOrderStatus value. This value is reserved for future use in the orders API. Do not use the new value in your Toast API integration.

2021-07-02

New email format for new integrated restaurant locations

The email message you receive when a restaurant location adds your integration partner service has changed. This change applies only to restaurant groups that use partner credentials, and does not affect groups that use restaurant management credentials.

  • The email message now contains only the restaurant location GUID for all new restaurant locations.

  • Previously, the email message for new restaurant locations that are not part of a multiple-location restaurant management group contained additional detail about the new location.

  • Previously, the email message contained information from the Toast restaurants API.

You should use this email as a secondary source of information only. We recommend using the partners webhook for the most up-to-date information about the list of restaurants that are connected to you integration.

You can get additional information about new restaurant locations from the restaurants API. For more information, see the restaurants API reference documentation.

Webhooks HTTP message Content-Type header field specifies JSON character encoding

Toast webhook HTTP messages now specify the Unicode character encoding of the JSON message body in the HTTP Content-Type header field.

  • Previously, the Toast webhook message Content-Type header field specified application/json.

  • Now, the Content-Type header field specifies application/json; charset=utf-8.

This change makes it easier for some webhook listening software to interpret strings that include characters that require Unicode support. For example, the string Café might be interpreted correctly after this change when it was truncated or otherwise incorrectly interpreted before.

New Google order source in the orders API

The source value of the orders API Order object contains a new Google value. When the source value in an order object is Google, it indicates that the order originated from a Googleâ„¢ food ordering application.

2021-06-11

Menus API restaurantTimeZone value is no longer null

This Toast API update fixes a problem that occasionally caused the restaurantTimeZone value in the menus API Restaurant object to be null. If the menus API response data for a restaurant still includes a null restaurantTimeZone value, it will be resolved when the restaurant publishes again.

Menus API will correctly support menu-specific pricing for reused modifier options

This Toast API update fixes a problem that caused the menus API to incorrectly calculate the price of modifier options that are reused in multiple menus and that also use menu-specific pricing. The corrected API behavior will result in a change to the pricing information that the menus API returns in this situation. This change will occur in the production environment on 2021-06-21.

Note

You can use the orders API /prices endpoint to return correct pricing information for the menu items and modifier options in an order.

New EXTERNAL tax rate type in configuration API

The type enumeration of the configuration API TaxRate object includes a new EXTERNAL value that indicates that the tax is for a marketplace facilitator order and that the marketplace facilitator organization calculated the tax amount.

For more information about getting orders with marketplace facilitator information, see Marketplace facilitator tax information.

2021-01-13

Refund information changes in Order object changes to support new refund functionality

The Order object used in the orders API and loyalty API will handle information about refunds differently for restaurant locations that use version 2.46 of the Toast POS mobile application. Version 2.46 of the Toast POS application is expected to be available in Toast platform restaurant locations starting on 2021-01-27.

Refund information for Toast platform orders is available in:

  • The refund value of a Payment object. The refund value is a Refund object that describes a currency amount removed from a guest payment.

  • The refundDetails value of the Selection and AppliedServiceCharge objects. The refundDetails value is a RefundDetails object that provides information about refunded currency amounts for an item selection, modifier option, or service charge

Behavior of totalAmount value consistent for all refunds

The new refund functionality in version 2.46 of the Toast POS application no longer changes the totalAmount value for checks.

Previously, restaurant employees voided items from checks to give refunds to restaurant guests on POS devices. The void transaction updated the totalAmount value. Now, the new refund functionality on a Toast POS device is separate from the item void function in the Toast POS application. The amount of the refund is available in the RefundDetails object.

For example, if a restaurant employee gives a guest a $7 refund for a $20 check using a Toast POS device, previously the totalAmount would have been $13. Now, the totalAmount remains $20.

In restaurants using versions of the Toast POS application earlier than 2.46, you can perform refunds from Toast Web that do not require voiding items and do not update the totalAmount value for checks. Before version 2.46, this behavior was different from POS device refunds. Now Toast Web refunds and POS device refunds affect check amounts consistently. No refunds will change the check amount.

This change might affect the way that you implement a Toast loyalty API integration. Because previous refund transactions used the void function of the POS app, some refund transactions caused the Toast platform to update the totalAmount value for a check. It was possible to adjust loyalty rewards accrual amounts based on the updated totalAmount value. This is no longer possible.

If your integration needs to determine whether an employee issued a refund, the integration can determine that by examining the refund value of the Payment object and the refundDetails value of the Selection and AppliedServiceCharge objects.

Refund details object values include refund information

The RefundDetails object that includes information about refunded currency amounts for an item selection, modifier option, or service charge no longer returns null values. The RefundDetails object is part of the new refund functionality of the Toast platform.

Restaurant employees can refund more payment types

Restaurant employees can use the new refund functionality to refund:

  • Credit card payments

  • Cash payments

  • Toast gift card payments

Previously, employees could only refund credit card payments.

Partners webhook reports location identifier correctly for restaurants

The externalRestaurantRef value in partners webhook payloads for a restaurant location now reports restaurant location identifiers correctly. Previously, partners webhook payloads sometimes included the incorrect location identifier for a restaurant location.