> ## Documentation Index > Fetch the complete documentation index at: https://docs.restaurant365.com/llms.txt > Use this file to discover all available pages before exploring further. # Payroll Summaries > Retrieves payroll summaries for a date range, filtered by location or legal entity **Security** The requesting user must have **all** of the following permissions: - Administration → Legal Entities → View Legal Entities - Locations → View Locations - Labor → Employees → View Employees - Labor → Jobs → View Jobs - Time & Attendance → Timecards → View Timecards ## OpenAPI ````json GET /public/v1/labor/payroll-summaries { "openapi": "3.0.1", "info": { "title": "R365 Public API", "contact": { "name": "R365 Services Team", "email": "r365@restaurant365.com" }, "version": "1.0" }, "security": [ { "Bearer": [] } ], "paths": { "/public/v1/labor/payroll-summaries": { "get": { "tags": [ "labor" ], "summary": "Payroll Summaries", "description": "Retrieves payroll summaries for a date range, filtered by location or legal entity\n\n**Security**\n\nThe requesting user must have **all** of the following permissions:\n\n- Administration → Legal Entities → View Legal Entities\n- Locations → View Locations\n- Labor → Employees → View Employees\n- Labor → Jobs → View Jobs\n- Time & Attendance → Timecards → View Timecards", "parameters": [ { "$ref": "#/components/parameters/TenantId" }, { "name": "businessDateStart", "in": "query", "description": "Starting business date for the payroll period (inclusive). Required if businessDateEnd is provided", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "businessDateEnd", "in": "query", "description": "Ending business date for the payroll period (inclusive). Required if businessDateStart is provided", "required": true, "schema": { "type": "string", "format": "date" } }, { "name": "locationId", "in": "query", "description": "Location identifier. If omitted, returns data for all locations the API user has access to", "required": false, "schema": { "type": "string", "format": "uuid" } }, { "name": "legalEntityId", "in": "query", "description": "Legal entity identifier. If omitted, returns data for all legal entities the API user has access to", "required": false, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Payroll summary rows aggregated by employee, job code, and earning type. Each row represents labor on a single business date for a single employee/job/earning-type combination. Returned as a raw array — no pagination wrapper.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LaborSummaryResponse" } } } } }, "400": { "description": "Bad Request — a parameter value is malformed, of the wrong type, or outside its allowed range." }, "401": { "description": "Unauthorized — the bearer token is missing, invalid or expired, or is not valid for the specified tenant." }, "403": { "description": "Forbidden — the caller lacks the permission required for this operation." }, "404": { "description": "Not Found — the requested resource does not exist, or the supplied continuation token is unknown or has expired." }, "409": { "description": "Conflict — the request conflicts with the current state of the resource and cannot be applied." }, "422": { "description": "Unprocessable Entity — a required parameter is missing, or a supplied parameter value is invalid." }, "429": { "description": "Too Many Requests — the caller has exceeded the rate limit; retry after a short delay." }, "500": { "description": "Internal Server Error — an unexpected error occurred while processing the request." } } } } }, "components": { "parameters": { "TenantId": { "name": "x-r365-context-tenant-id", "in": "header", "required": true, "description": "Identifies the R365 tenant the request applies to. Required on every request.", "schema": { "type": "string" } } }, "schemas": { "LaborSummaryResponse": { "type": "object", "description": "A single payroll summary row aggregating labor by employee, job code, and earning type for a business date.", "properties": { "businessDate": { "type": "string", "format": "date", "description": "Business date of the labor record." }, "legalEntity": { "$ref": "#/components/schemas/ExternalLegalEntity" }, "location": { "$ref": "#/components/schemas/ExternalLocation" }, "employee": { "$ref": "#/components/schemas/ExternalEmployee" }, "earningType": { "type": "string", "nullable": true, "description": "Earning type code for the labor record." }, "earningTypeName": { "type": "string", "nullable": true, "description": "Display name of the earning type." }, "jobCode": { "$ref": "#/components/schemas/JobCode" }, "totalSeconds": { "type": "integer", "format": "int32", "description": "Total duration of labor in seconds." }, "rate": { "type": "number", "format": "double", "description": "Pay rate applied to the labor record." }, "cost": { "type": "number", "format": "double", "description": "Total cost of the labor record (rate × totalSeconds, in currency units)." } }, "additionalProperties": false }, "ExternalLegalEntity": { "type": "object", "description": "Legal entity associated with the labor record.", "properties": { "id": { "type": "string", "format": "uuid", "description": "Unique identifier of the legal entity." }, "name": { "type": "string", "nullable": true, "description": "Display name of the legal entity." }, "number": { "type": "string", "nullable": true, "description": "Legal entity number." }, "payrollProviderId": { "type": "string", "nullable": true, "description": "External payroll provider identifier for the legal entity." } }, "additionalProperties": false }, "ExternalLocation": { "type": "object", "description": "Location where the labor was performed.", "properties": { "id": { "type": "string", "format": "uuid", "description": "Unique identifier of the location." }, "name": { "type": "string", "nullable": true, "description": "Display name of the location." }, "number": { "type": "string", "nullable": true, "description": "Location number." }, "payrollLocationId": { "type": "string", "nullable": true, "description": "External payroll location identifier." } }, "additionalProperties": false }, "ExternalEmployee": { "type": "object", "description": "Employee who performed the labor.", "properties": { "id": { "type": "string", "format": "uuid", "description": "Unique identifier of the employee." }, "name": { "type": "string", "nullable": true, "description": "Display name of the employee." }, "payrollId": { "type": "string", "nullable": true, "description": "External payroll identifier for the employee." } }, "additionalProperties": false }, "JobCode": { "type": "object", "description": "Job code associated with the labor record.", "properties": { "id": { "type": "string", "format": "uuid", "description": "Unique identifier of the job code." }, "name": { "type": "string", "nullable": true, "description": "Display name of the job code." }, "code": { "type": "string", "nullable": true, "description": "Job code value." }, "department": { "type": "string", "nullable": true, "description": "Department the job code belongs to." } }, "additionalProperties": false } }, "securitySchemes": { "Bearer": { "type": "http", "scheme": "Bearer" } } } } ````