Use the instructions below to build labor reports using information from the Toast platform. This information will help when creating a payroll integration, predicting future staffing needs, identifying the most efficient employees, and more.
You are now ready to provide customers with detailed information related to labor costs and efficiency, providing restaurants with useful information to run their business.
To follow these instructions, you must have the following scopes:
-
config:read
-
labor.employees:read
-
labor:read
-
restaurants:read
-
orders:read
Review and implement the instructions in How to build a Toast integration.
Before you begin development, decide what reports you will build.
The steps below describe how to extract the following labor data:
-
Hours worked per employee
-
Overtime hours worked per employee
-
Breaks taken
-
Shift clock-in timeliness - Requires that the restaurant uses clock-in enforcement functionality
-
Sales per employee
-
Wages earned per employee - Does not include overtime wages
-
Tips earned per employee
If a restaurant begins to use your integration after they are already live on the Toast platform, you must map the existing employees and jobs in the Toast platform to employees and jobs in your service.
Consider doing an initial employee load when a
restaurant first connects to your platform. You can match employees
based on identifying information such as names and email addresses. If
you will use the externalEmployeeId
field, you can also use
this field to map employees in the Toast platform to employees in your
service.
Use the /jobs
endpoint of the labor API to load
initial job information. See the labor
API for the jobs endpoint specification. If your integration
allows restaurants to create employees in your platform and submit this
information to the Toast platform, see Building an employee management integration.
Query the following endpoints at least once per location per day to ensure you maintain accurate labor information over time:
-
The
/employees
and/jobs
endpoints of the labor API -
The
/tipWithholding
endpoint of the configuration API if you report on tips earned per employee -
The
/breakTypes
endpoint of the configuration API if you report on breaks taken
To report on labor information, you need to retrieve transactional information from restaurants at least once per day.
Use the following endpoints to retrieve transactional information:
-
If you report on hours worked or breaks taken, retrieve yesterday's time entries using the
modifiedStartDate
andmodifiedEndDate
parameters of the/timeEntries
endpoint of the labor API. See Getting time entries for employees for more information. -
If you report on shift clock-in timeliness, retrieve yesterday's shifts using the
startDate
andendDate
parameters of the/shifts
endpoint of the labor API. See Getting shift assignments for employees for more information. -
If you report on sales or tips per employee, retrieve yesterday's orders using the
startDate
andendDate
parameters of the/ordersBulk
endpoint of the orders API. See Getting detailed information about multiple orders for more information.
The closeoutHour
value in the General
object returned by the restaurants API contains
the restaurant's closeout hour.
The default closeout hour is 4:00 a.m. local time unless a Toast
employee changes this setting. The businessDate
value on
time entries changes after the closeoutHour
.
Consider daylight savings time when interacting with the closeout hour.
Use the regularHours
and overtimeHours
values on TimeEntry
objects to determine how many regular
and overtime hours an employee worked while they were clocked in.
To determine an hourly employee’s wages earned, multiply the
regularHours
and hourlyWage
values from the
TimeEntry
object.
The labor API does not expose the overtime factor to determine overtime wages earned.
If hourlyWage
is null, the time entry is associated
with a salaried job.
Use the breaks
value on TimeEntry
objects to determine how much paid and unpaid break time an employee
took while clocked in.
The breakType
value on the time entry corresponds to
a BreakType
object in the configuration API.
If the restaurant uses clock-in enforcement functionality, then
the shiftReference
on a TimeEntry
object is
populated with the GUID of the employee's scheduled shift.
If the employee clocked in outside of the restaurant's allowed
clock-in window or the restaurant does not use clock-in enforcement
functionality, the shiftReference
on the time entry is
null.
To compare the employee's scheduled shift time with their actual
clock-in and clock-out times, compare the inDate
and
outDate
values on the corresponding TimeEntry
and Shift
objects.
The employee associated with an order is listed in the
server
value on an Order
object in the orders
API. To calculate an employee's sales and tips, sum the
amount
(for total sales) and tipAmount
(for
tips) on the payments associated with their orders.
If the /tipWithholding
endpoint of the configuration
API indicates that the restaurant uses tip
withholding functionality, your reports should reflect the tip
values that were withheld from the employee.
Toast support recommends using the orders API rather than the
cashSales
, nonCashSales
,
declaredCashTips
, and nonCashTips
values on
the TimeEntry
object to calculate an employee's sales and
tips. The sales values on time entries may not reflect orders an
employee handled outside of their shift, and time entry values will not
update if a manager administratively adjusts the beginning or end time
of a time entry.
To determine if a payment or tip was cash, credit, or another
payment type, use the type
value on the
Payment
object in the orders API.
Consider using the labor information you retrieve from Toast APIs in the following ways:
-
Predict how restaurants should plan future staffing. For example, if a particular day of the week or time of day tends to have a higher order volume, restaurants may want more team members to work during that time.
-
Identify efficient employees as measured by sales or tips per hour worked and shift clock-in timeliness.
-
Use sales, tips, hours worked, and breaks taken when building a payroll product.