Skip to main content

Workforce Management

Introduction

This guide outlines the standard workflow for integrating a Workforce Management (WFM) or Payroll system with Lightspeed Restaurant (K-Series). It covers authentication, retrieving sales data for labor cost calculations, tip attribution, and syncing staff and shift (clock-in/out) records.

Step 1 - Authentication and Mapping Business Locations

Before pulling data, your application must authenticate and map the merchant's locations.

OAuth2 Authorization

Use the V2 OAuth2 flow to generate access tokens.
Reference: Authentication Tutorial

Location Mapping

Call the Financial API to retrieve the businessLocationId for the merchant's venues.
Reference: Get Businesses

Step 2 - Syncing Sales Data

WFM systems typically require end-of-day or periodic sales syncs to calculate Labor Cost Percentages.

Fetch Sales

Use the Financial API to pull aggregated or receipt-level sales data.
Reference: Get Business Location Sales

Transaction Types

When processing financial data, ensure your system correctly handles all K-Series accounting transaction types to avoid discrepancies. Pay special attention to transitory types and how open accounts are carried over to the next day.

References:

Step 3 - Syncing Staff and Shifts

To generate payroll and enforce scheduling, you must sync POS users and their clock times.

Staff API

Pull the list of active employees and their assigned user groups.
Reference: Staff Endpoint

Shifts API

Retrieve historical clock-in and clock-out times.
Reference: Get Shifts

Shift Webhooks

For real-time clock-in/out updates, subscribe to shift webhooks rather than polling the API.
Reference: Create Webhook

Step 4 - Tip Management & Attribution

Tip data is not stored in the Shift records. Instead, tip amounts and their corresponding staff attributions are extracted from the Financial API via receipt-level sales data.

Tip Amount

Found within the payments array of each sale object.
Reference: payments.tip

Attributing Tips to Staff

You can attribute the tip to an employee in two ways, depending on the merchant's tip-pooling rules:

  • By Payment Taker

    Use payments.staffId to attribute the tip to the employee who processed the payment.
    Reference: payments.staffId

  • By Receipt Owner

    Use ownerId or ownerName to attribute the tip to the server who owns the overall table/order, regardless of who took the payment.

    References:


Frequently Asked Questions (FAQ)

Q: Is a job title or job code included in the Staff API?

A: The user group is the closest match to a job title or code (e.g., Manager, Server, Busser).

Q: Do you support multiple job codes for a single staff member? (e.g., a user works 3 hours as a server, then 2 hours as a busser)

A: Currently, K-Series uses a 1:1 mapping. A user can only belong to one user group at a time. If an employee has multiple roles, the merchant must create them as separate POS users and assign each user to their respective user group.

Q: Can we pull a general list of all jobs/roles used on the system to preconfigure tip rules?

A: The closest match is pulling the list of user groups. Please note that tip rules are not pre-set at the user group level within K-Series.

Q: Do you support a dedicated Payroll ID field?

A: The API provides a Staff ID. There is currently no dedicated Payroll ID field available.

Q: Are tip amounts included directly in each Shift record?

A: No, aggregated tips are not included in the Shift endpoint. To retrieve tip data, query the Financial API using from/to parameters. The financial response returns the Staff ID on each sale/payment line, along with the corresponding tips as detailed in Step 4.

Q: How do we handle situations where the POS automatically clocks an employee out at the end of the day because they forgot?

A: Merchants can configure a strict setting in the K-Series Back Office that requires users to settle open orders before they are allowed to clock out. This helps prevent unintentional shift closures and missing data.