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.
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 totrue
. -
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.
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 |
-
Querying by a date and time range using the
startDate
andendDate
parameters of the/timeEntries
endpoint returns deleted time entries if you include theincludeArchived
parameter and set it totrue
. TheincludeArchived
parameter is optional and its default value isfalse
. -
Querying by modified date range using the the
modifiedStartDate
andmodifiedEndDate
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.
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.
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.
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 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.
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. |
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.
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.
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.
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
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
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.
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.
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.
Toast support is making V3 of the menus API available to ordering partners before the corresponding UI settings are available in the Toast administration back-end 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.
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.
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.

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 the Toast administration back-end.
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","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" }
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 the Toast administration back-end. For more information about the underlying menus API for this setting, see Determining if a menu item or modifier contains alcohol.
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.
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.
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.
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 the Toast administration
back-end 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.
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 the Toast
administration back-end:
"menuItems": [ { "name": "Grilled Cheese", "guid": "0a6e4999-cfl1-4dd6-bf4d-f4d2b65f7d88", "multiLocationId": "100000000100009153", [contents omitted] "contentAdvisories": { "alcohol": { "containsAlcohol": null } } } ]
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 the Toast
administration back-end:
"modifierOptionReferences": { "3": { "referenceId": 3, "name": "Cheese", "guid": "429f9045-74a1-81bc-4c48-86ce51c2f6ae", "multiLocationId": "100000000100008684", [contents omitted] "contentAdvisories": { "alcohol": { "containsAlcohol": null } } } }
The ModifierOption
value has been included in the
menus API payload now, before the corresponding user interface option
has been added to the Toast administration back-end, 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 the Toast
administration back-end and restaurants may begin using it to identify
menu items and modifiers that contain alcohol.
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.
Several improvements and updates have been made to the stock API and the stock webhook.
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 themultiLocationId
instead of a menu itemguid
, when submitting requests to Toast APIs. For more information, see Toast identifiers. -
versionId
has been added for future use.
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.
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 toQUANTITY
, you must also provide aquantity
value with double data type. For example, you can set thequantity
to0.5
,7.0
, or10.75
.
For more information, see Updating stock.
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.
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.
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.
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.
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.
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
.
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.
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.
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.
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.
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.
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.
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.
-
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 theTransactionInformationCheck
object isnull
. 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.
-
After completing the payment transaction, the guest presents loyalty account information and wants to apply the check payment to the loyalty program.
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 theTransactionInformationReverse
object for the reversal request. This behavior will change on 2022-03-14 and theloyaltyIdentifier
on this transaction will benull
.-
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.
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 |
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. |
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.
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.
A new Menu hierarchy section has been added to the Toast Administrator’s 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.
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.
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.
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.
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.
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/
endpoint takes an array of {orderGuid}
/checks/{checkGuid}
/selectionsSelection
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.
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/
endpoint updates the following delivery information:
{orderGuid}
/deliveryInfo
-
Delivery time
-
Dispatch time
-
Delivery state
-
Delivery employee
For more information, see Updating delivery information for an order.
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.
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 thepageToken
parameter from theToast-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 thepageToken
parameter of the next request to the endpoint.
For more information, see Paginating response data.
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.
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 specifiedapplication/json
. -
Now, the
Content-Type
header field specifiesapplication/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.
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.
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 |
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.
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 aPayment
object. Therefund
value is aRefund
object that describes a currency amount removed from a guest payment. -
The
refundDetails
value of theSelection
andAppliedServiceCharge
objects. TherefundDetails
value is aRefundDetails
object that provides information about refunded currency amounts for an item selection, modifier option, or service charge
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 the Toast
administration back-end 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
administration back-end 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.
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.
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.