You will use the same Toast API endpoints across regions, but certain configurations and fields may vary. When offering your integration to new regions, use the guidance below to ensure your integration functions correctly.
|
Note |
|
Toast operates in Australia, Canada, Ireland, the United Kingdom, and the United States. Other locations may be added at a later time. |
To view location configuration information, send a GET
request to the /restaurants
endpoint of the restaurants API. The following values change depending on
the geographic region of a location:
-
In the
Locationobject, thecountryvalue indicates the country in which the location operates. -
In the
Locationobject, theadministrativeAreavalue is the name of the geographical region of the location, such as a state, province, or county, depending on the location'scountry. -
In the
Generalobject, thecurrencyCodevalue is the ISO-4217 currency code used at the location. Any monetary value returned from any Toast API will use thecurrencyCode.
Menu items can be configured as tax-inclusive or tax-exclusive on a
per-item basis, using the taxInclusion
field. This is a menu configuration setting, not a fixed property of a
geographic region, so a single location, and even a single order, can
include a mix of tax-inclusive and tax-exclusive items. Consumer pricing
conventions vary by country, for example, tax-inclusive pricing is
standard practice (and often legally required) in the United Kingdom,
Australia, and Ireland, while tax-exclusive pricing, where tax is added at
checkout, is standard in the United States and Canada. Whether your
integration needs to check the item's own taxInclusion value,
and how, depends on what your integration is doing.
Even though the Toast platform calculates the final, authoritative prices for an order, your integration may still need to understand tax inclusion directly. For example, if you're building a shopping cart or menu display where guests see running totals before checkout, you need to know whether a listed price already includes tax to show an accurate subtotal. Similarly, if you're building sales or accounting reports from completed orders, you need to know whether a discount or price value includes a tax component so your calculations are accurate.
taxInclusion is represented differently depending on
which API you're reading from, and differently again for a modifier than
for the menu item it applies to. The following details will help you
interpret the value correctly wherever you encounter it.
-
The menus API and orders API represent tax inclusion with different values. In the menus API,
MenuItem.taxInclusionisTAX_INCLUDEDorTAX_NOT_INCLUDED. In the orders API,Selection.taxInclusionisINCLUDEDorNOT_INCLUDEDon a menu item selection, orINHERITEDon a modifier selection. Check the correct value set depending on which API your integration is reading from. -
Modifiers always inherit the tax inclusion behavior of the menu item they apply to. In the orders API, a modifier's own
Selection.taxInclusionvalue is alwaysINHERITED, this is the only case whereINHERITEDappears, since a non-modifier selection that inherits its tax inclusion setting from a menu or menu group is still reported asINCLUDEDorNOT_INCLUDED. A modifier's owntaxandappliedTaxesvalues are always zero. The modifier's tax impact is calculated together with the parent item and reported in the parent selection'spriceandtaxvalues, not in the modifier's own selection. In the menus API, themodifierOptionReferencesobject does not expose ataxInclusionfield at all, onlyMenuItemdoes. TheINHERITEDvalue only appears in the orders API, on a modifier'sSelectionobject once it's applied to an order, so don't expect to find it on the menu side.
If you display menu prices to guests (for example, in a kiosk,
online ordering flow, or receipt), use the taxInclusion
value to understand whether the displayed price already reflects tax.
Don't assume every item on a menu, or every location in a given country,
uses the same pricing model.
When placing an order, use the /prices
endpoint to retrieve check and item prices calculated by the Toast
platform. This is the only supported way to determine the amount to
charge a guest, and it already accounts for tax inclusion correctly. For
more information, see Order prices.
Your integration may still calculate totals independently of the
orders API response, for example, when reporting on orders that have
already been placed. In that case, check each item's
taxInclusion value before summing or displaying totals,
since inclusion is set per item and a single order can require different
handling for different line items. When calculating totals across an
item and its modifiers, sum each selection's price and
tax independently, your totals will already be correct.
Don't calculate tax per modifier using the modifier's own
tax or appliedTaxes fields, since those are
always zero under INHERITED, and doing so will
undercount.
If you build sales or accounting reports from order data, keep the following in mind:
-
check.amountandselection.pricealways exclude tax, regardless of an item'staxInclusionsetting. Tax is reported separately, astaxAmounton theCheckobject and astaxon theSelectionobject.taxInclusionaffects how the guest-facing price is built and displayed, not whetheramount,price, ortaxAmountinclude tax. -
If your integration calculates prices from menu data instead of reading order fields directly (for example, multiplying a menu item's listed price by quantity), check the item's
taxInclusionvalue first. A tax-inclusive listed price is not the same as theselection.pricevalue returned by the orders API, sinceselection.pricealways has tax removed. -
When totaling discounts, sum the
discountAmountvalue on eachAppliedDiscountfor tax-exclusive items. For tax-inclusive items, sumnonTaxDiscountAmountinstead. For tax-exclusive items, these two values are the same, since there's no tax component to separate out; for tax-inclusive items,discountAmountincludes a portion attributable to tax, and using it directly will overstate how much the discount reduced the item's price. -
If you report total tax collected, or break that total down by individual tax rate, you don't need to change your logic based on
taxInclusion. ThetaxAmountvalue is reported the same way regardless of whether an item is tax-inclusive or tax-exclusive.
For full guidance on building these reports, see Building a sales report.
When submitting orders to the orders API, consider regional variations in formatting.
-
If you include guest information when you create orders using the orders API, include a
phoneCountryCodevalue in theCustomerobject for non-US phone numbers. -
When updating the
DeliveryInfoobject in the orders API, use the guidance in the Orders developer guide to determine whether to use thestateoradministrativeAreavalue.
The Toast platform cannot process credit card payments in regions outside of the United States. Instead, use an alternative payment type when placing an order using the orders API.
When adding or updating employee phone number information in the
labor API, ensure that the phoneNumberCountryCode
value is accurate for the region of the employee's location.
If you have a loyalty integration, ensure that your integration can
accept the appropriate phone number length for LOYALTY_SEARCH
transactions.