HRIS · Beta
Paylocity
API integration
Ship HRIS features without building the integration. Full Paylocity API access via Proxy, normalized data through Unified APIs, and 50+ MCP-ready tools for AI agents — all extensible to your exact use case.
Built for specific customer use cases. Issues are resolved quickly.
Talk to usUse Cases
Why integrate with Paylocity
Common scenarios for SaaS companies building Paylocity integrations for their customers.
Sync employee rosters to automate user provisioning
SaaS companies pull employee demographics, job titles, departments, and reporting structures from Paylocity to automatically provision user accounts and map approval hierarchies—eliminating manual CSV uploads for their mid-market customers.
Push reimbursements and bonuses directly into payroll
Expense management, commission, and recognition platforms use Paylocity's Pay Entry API to inject one-time payments into an upcoming payroll batch, so employees get paid on their next check without HR manually keying amounts.
Automate benefits deduction updates from enrollment changes
Benefits administration and retirement SaaS platforms write updated deduction amounts back to Paylocity whenever an employee changes their elections, keeping payroll in sync without manual intervention from payroll managers.
React to employee lifecycle events in real time
IT provisioning, learning, and compliance platforms listen for Paylocity webhooks on hire, termination, and transfer events to trigger downstream workflows like access revocation or onboarding task creation the moment a status changes.
Import time and attendance data for payroll processing
Shift-scheduling, POS, and workforce management tools push aggregated clock-in/clock-out data into Paylocity so payroll runs include accurate hours without dual data entry across systems.
What You Can Build
Ship these features with Truto + Paylocity
Concrete product features your team can ship faster by leveraging Truto’s Paylocity integration instead of building from scratch.
One-click employee directory sync
Pull the full Paylocity employee roster—including department, manager, compensation, and custom fields—into your product to auto-provision users and build org charts.
Payroll batch injection for reimbursements
Push approved expense reimbursements, spot bonuses, or commission payouts directly into Paylocity's current payroll batch so employees are paid on their next check.
Automated deduction management
Create, update, or remove recurring paycheck deductions in Paylocity when employees change benefit elections or retirement deferral percentages in your app.
Real-time termination and hire triggers
Subscribe to Paylocity's employee status change webhooks to instantly kick off workflows like revoking SaaS licenses on termination or shipping hardware on hire.
New hire push from ATS to Paylocity
When a candidate is marked as hired, automatically create their employee record in Paylocity with name, address, salary, and start date—bypassing manual data entry.
Post-payroll data pull for financial reconciliation
Listen for the Payroll Processed webhook and retrieve finalized pay statement details to reconcile 401k contributions, tax withholdings, or GL entries in your finance product.
SuperAI
Paylocity AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_paylocity_company_info
Get the Paylocity company record for the connected company (companyId, companyName, dba, ein, status, entityType, industryType, address, relationships). Returns one record; not paginated. The credential needs the Company Level Information API.
get_single_paylocity_company_info_by_id
Get the company information (legal name, DBA, EIN, address, status) for one Paylocity Company ID.
list_all_paylocity_employees
List employees (Employee Demographic API v1). Each page comes back as one record: totalCount plus an employees array of up to 20 employees (id, displayName, status, statusType, info, position, currentPayRate, futurePayRates). Truto sends the include default and follows Paylocity's nextToken cursor. Paylocity does not document where nextToken is returned, so paging past 20 is unverified.
get_single_paylocity_employee_by_id
Get one employee by Paylocity employee ID (Employee Demographic API v1): id, displayName, status, currentStatus, info, position, currentPayRate, futurePayRates. Paylocity marks include as required, so Truto sends info,position,status,payrate,futurePayrates unless you pass include.
list_all_paylocity_custom_fields
List custom field definitions for a category (category, label, type, isRequired, defaultValue, values). This is a WebLink API path called on the NextGen gateway with the NextGen token: it needs WebLink access and is unverified in production. Required: category (Paylocity documents only PayrollAndHR). Not paginated. Paylocity says not to use it for companies on Unlimited Custom Fields.
list_all_paylocity_work_locations
List the company's work locations (workLocationId, name, address1, address2, city, state, zip, county, countryCode, defaultCurrencyCode). Returns the full list in one call; not paginated.
list_all_paylocity_positions
List position codes (code, title, effectiveDate, fte, flsaOvertimeExempt, supervisorPosition, eeoClass, workersCompensationCode, careerLevel, families). Paginated with limit/offset, up to 100 per page.
list_all_paylocity_deductions
List the company's deduction codes (code, description, type, calculationCode, rate, amount, frequency, priority, isActive, wasUsedInPayroll). Paginated with limit/offset, up to 100 per page.
list_all_paylocity_earnings
List the company's earning codes (code, description, type, calculationCode, rate, amount, frequency, rateCode, isActive, wasUsedInPayroll). Paginated with limit/offset, up to 100 per page.
list_all_paylocity_pay_frequencies
List the company's pay frequency codes (code, description, baseFrequency, blockWeek1 to blockWeek5, blockLastWeek, allowMakeup). They decide when an earning, deduction or agency code is applied. Returns the full list in one call; not paginated.
list_all_paylocity_taxes
List the company's tax codes (code, description, type, ein, startDate, endDate, depositFrequency, isEmployeeTax, isActive, customFields, rules). Paginated with limit/offset, up to 100 per page.
list_all_paylocity_cost_centers
List Time and Labor cost centers, also called labor levels (id, costCenterId, level, code, name). Only companies on the Time and Labor module have them; payroll cost centers are in payroll-cost-centers. Paginated with limit/offset, up to 1000 per page.
list_all_paylocity_jobs
List job codes (code, description, isActive, isCertified, payEntry, address, payrollBasedJournal). Optional filter on code, isActive, isCertified or payrollBasedJournal fields. Paginated with limit/offset, up to 100 per page.
get_single_paylocity_job_by_id
Get one job code; id is the job code. Returns code, description, isActive, isCertified, payEntry, address, payrollBasedJournal.
create_a_paylocity_job
Create a job code. Body: code (required; up to 20 letters or digits, no spaces or special characters), description, isActive, isCertified, payEntry, address, payrollBasedJournal. Job codes must exist before payroll runs. Returns no content (Paylocity replies 200 with an empty body).
update_a_paylocity_job_by_id
Replace a job code; id is the job code. This is a full replacement (PUT): Paylocity sets every field you leave out to null or its system default, so send the complete job (read it with jobs.get, change it, send it all). The code itself comes from id and cannot change. Returns no content.
delete_a_paylocity_job_by_id
Delete a job code; id is the job code. Paylocity recommends deactivating a code that was used in payroll (jobs.update) instead of deleting it, because deleting it can affect reports. Returns no content.
list_all_paylocity_company_documents
List company documents (documentId, displayName, receivedDate, uploadedDate, companyId). Metadata only; get the file with document-downloads.create. Filter by uploadedDate, uploadedDate.greaterThanOrEqualTo or uploadedDate.lessThanOrEqualTo. Paginated with limit/offset, 100 per page (Paylocity documents no maximum).
list_all_paylocity_employee_documents
List employee documents (documentId, employeeId, displayName, category, receivedDate, uploadedDate, companyConfidential, employeeConfidential). Metadata only; get the file with document-downloads.create. Filter by employeeId and uploadedDate (equals, greaterThanOrEqualTo, lessThanOrEqualTo). Paginated with limit/offset, 100 per page (Paylocity documents no maximum).
list_all_paylocity_employee_earnings
List an employee's active recurring earnings (id, code, frequency, recordType, rate, amount, units, calculationCode, rateCode, effectiveDate, beginCheckDate, endCheckDate, distribution). id is the record's resourceId for get, update and delete. Required: employee_id. Optional filter. Paginated with limit/offset, up to 250 per page.
get_single_paylocity_employee_earning_by_id
Get one recurring earning record; id is its resourceId (the id from employee-earnings.list). Returns code, frequency, recordType, rate, amount, units, calculationCode, effectiveDate, distribution, limits. Required: employee_id, earning_code, id.
create_a_paylocity_employee_earning
Add a recurring earning to an employee (code, effectiveFrom, effectiveTo, calculationCode, rate, units, amount, frequency, rateCode, agency, distribution, limits). Returns the created record with its id. Required: employee_id. The spec marks no body field as required; its examples always send code, effectiveFrom, calculationCode and frequency.
update_a_paylocity_employee_earning_by_id
Update one recurring earning record; id is its resourceId. The body takes the create fields except code (rate, units, amount, frequency, effectiveFrom, effectiveTo, distribution, limits and others); the spec examples send only the fields being changed. Required: employee_id, earning_code, id. Returns no content.
delete_a_paylocity_employee_earning_by_id
Delete one recurring earning record; id is its resourceId (the id from employee-earnings.list). Required: employee_id, earning_code, id. Returns no content.
list_all_paylocity_employee_shifts
List an employee's scheduled shifts (stackId, startDateTime, duration, positionKey, costCenters, shiftId, scheduleId, isPublished). breaks, segments and note are added with include. Required: employee_id. Optional filter on startDateTime or positionKey, and sort. Paginated with limit/offset, 100 per page.
list_all_paylocity_employees_v_2
List employees with Employee Demographic API v2, an early-access beta Paylocity says not to rely on in production. Records have the sections contact, sensitive, workAuthorization, rates, employmentInformation, assignments, position, workLocation, status and timeLabor. Pick sections with fields; narrow with filter. Paginated with limit/offset, up to 20 per page.
get_single_paylocity_employees_v_2_by_id
Get one employee with Employee Demographic API v2 (early-access beta). Sections: contact, sensitive, workAuthorization, rates, employmentInformation, assignments, position, workLocation, status, timeLabor. id is the Paylocity employee ID; pick sections with fields.
list_all_paylocity_rate_codes
List the company's rate codes (code, description). Returns the full list in one call; not paginated.
list_all_paylocity_payroll_cost_centers
List payroll cost centers grouped by level: each record is a level (id, level, description) with a costCenters array (id, code, name, isActive). Returns the full list in one call; not paginated. Time and Labor cost centers are in cost-centers.
update_a_paylocity_payroll_cost_center_by_id
Create or replace (upsert) a payroll cost center in a level. id is the cost center code, which is permanent once used; level is the level number. Body: name (required) and isActive. Returns no content (201 when created, 204 when replaced). Cost centers cannot be deleted; remove employees from one before deactivating it.
list_all_paylocity_pay_grades
List pay grades (code, description, minimum, midpoint, maximum, active, payGradeKey, payGradeCompanies). Paginated with limit/offset, up to 100 per page.
list_all_paylocity_worker_compensation_codes
List workers' compensation codes (code, description, active, positionsAssigned, clientId). Paginated with limit/offset, up to 100 per page.
list_all_paylocity_employee_deductions
List an employee's active recurring deductions (id, code, type, rate, frequency, calculationCode, priority, recordType, effectiveDate, beginCheckDate, endCheckDate, limits). id is the record's resourceId for get, update and delete. Required: employee_id. Optional filter. Paginated with limit/offset, up to 250 per page.
get_single_paylocity_employee_deduction_by_id
Get one recurring deduction record; id is its resourceId (the id from employee-deductions.list). Returns code, type, rate, frequency, calculationCode, priority, recordType, effectiveDate, limits, loan401K. Required: employee_id, deduction_code, id.
create_a_paylocity_employee_deduction
Add a recurring deduction to an employee (code, effectiveFrom, effectiveTo, calculationCode, rate, frequency, priority, note, agency, arrear, loan401K, costCenters, limits). Garnishments cannot be created here. Returns the created record with its id. Required: employee_id. The spec marks no body field as required; its examples always send code, effectiveFrom, rate, frequency, note and priority.
update_a_paylocity_employee_deduction_by_id
Update one recurring deduction record; id is its resourceId. The body takes the create fields except code (rate, frequency, effectiveFrom, effectiveTo, note, priority, limits and others); the spec examples send only the fields being changed. Garnishments cannot be updated here. Required: employee_id, deduction_code, id. Returns no content.
delete_a_paylocity_employee_deduction_by_id
Delete one recurring deduction record; id is its resourceId (the id from employee-deductions.list). Required: employee_id, deduction_code, id. Returns no content.
list_all_paylocity_employee_earnings_by_code
List all of an employee's records for one earning code (id, code, frequency, recordType, rate, amount, units, effectiveDate, beginCheckDate, endCheckDate). Required: employee_id, earning_code. Returns the full list in one call; not paginated.
list_all_paylocity_employee_deductions_by_code
List all of an employee's records for one deduction code (id, code, type, rate, frequency, recordType, effectiveDate, beginCheckDate, endCheckDate). Required: employee_id, deduction_code. Returns the full list in one call; not paginated.
list_all_paylocity_employee_bank_accounts
List an employee's direct deposit bank accounts (bankAccountId, bankName, accountNumber, routingNumber). Sensitive data. Required: employee_id. Returns the full list in one call; not paginated.
get_single_paylocity_employee_bank_account_by_id
Get one direct deposit bank account; id is its bankAccountId. Returns bankAccountId, bankName, accountNumber, routingNumber. Sensitive data. Required: employee_id, id.
list_all_paylocity_company_shifts
List scheduled shifts across the company (stackId, assignedTo, startDateTime, duration, positionKey, costCenters, shiftId, scheduleId, isPublished, isDeleted). breaks, draft, segments and note are added with include. Optional filter on startDateTime or positionKey, and sort. Paginated with limit/offset, 100 per page.
list_all_paylocity_open_shifts
List open (unassigned) shifts (stackId, quantity, startDateTime, duration, positionKey, costCenters, scheduleId, isPublished). breaks, note and claims are added with include. Optional filter on startDateTime or positionKey, and sort. Paginated with limit/offset, 100 per page.
create_a_paylocity_document_download
Create a temporary download URL for a company or employee document (documentId, downloadUrl, expiresIn). Required: document_id (from company-documents.list or employee-documents.list). No request body.
create_a_paylocity_punch_detail
Start a company punch detail operation for a time window (step 1 of 3). Body: relativeStart and relativeEnd, without time zone. Returns 202 Accepted with no response body; the Location response header holds the operation URL, whose last segment is the id for punch-detail-operations.get. Only one operation per company runs at a time (409 otherwise). Proxy API callers receive the header; MCP tool results do not include headers.
list_all_paylocity_punch_details
Get the punch data of a finished punch detail operation (step 3 of 3): one record per worked shift (employeeId, badgeNumber, relativeStart, relativeEnd, segments with punchType, durationHours, earnings, costCenters). Required: resource_id. Optional sort on relativeStart or relativeEnd. Paginated with limit/offset, up to 100 per page.
get_single_paylocity_punch_detail_operation_by_id
Get a punch detail operation's status (step 2 of 3): status (pending, running, succeeded, failed), created, lastUpdated, location, warnings, errors. id is the operation id. When status is succeeded, the last path segment of location is the resource_id for punch-details.list.
list_all_paylocity_employee_punch_details
List one employee's punches for a time window (Punch Detail v2): one record per worked shift (employeeId, badgeNumber, relativeStart, relativeEnd, segments). Hours use four-decimal precision. Required: employee_id, relativeStart, relativeEnd (date-times without time zone, such as 2024-03-05T00:00:00). Returns the full list in one call; not paginated.
create_a_paylocity_pay_entry_batch
Submit a payroll batch for a check date to Run Payroll (batchName, checkDate, payPeriodBeginDate, payPeriodEndDate, checkType, autoAcknowledge, mergeBatchId, payEntries). Returns 202 with fileName, timeImportFileTrackingId and status. Poll pay-entry-batches.get with timeImportFileTrackingId as the id.
get_single_paylocity_pay_entry_batch_by_id
Get the status of a submitted payroll batch; id is the timeImportFileTrackingId from pay-entry-batches.create. Returns fileName, timeImportFileTrackingId and status. Paylocity's text says the status response also reports creation time, a summary and validation errors, but the spec documents only these three fields.
create_a_paylocity_punch_import
Import employee punches into Time and Labor. Body: data, an array of up to 500 records (employeeId, date, time, recordType, hoursDollars, employeeNote, CC1 to CC15 cost center overrides). Only open pay periods accept punches, and the company's API file map must be the default. Returns 202 Accepted; the spec documents no response fields.
Why Truto
Why use Truto’s MCP server for Paylocity
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
Unified APIs
Unified APIs for Paylocity
Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.
Unified HRIS API
Bank Info
Bank info represent the Bank Account information for an Employee
Companies
Companies represent the companies in HRIS
Employee Compensations
Represent the compensation configuration for an Employee
Employees
Represents an employee in HRIS
Employments
Employments represent a job position at a company.
Group Types
Group types represent the types of group.
Groups
Groups represent the groups for an Employee
Job Roles
Represent the job roles in a company
Locations
Locations represent the locations in HRIS
Timesheet Entries
Represents a block of time an employee worked or reported, such as a shift, a punch or a timesheet line, attributed to a single work date
How It Works
From zero to integrated
Go live with Paylocity in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Paylocity account
Use Truto’s frontend SDK to connect your customer’s Paylocity account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Paylocity
Truto’s Proxy API is a 1-to-1 mapping of the Paylocity API. You call us, we call Paylocity, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Paylocity’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Paylocity on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
What authentication method does Paylocity's API use?
Paylocity uses OAuth 2.0 with a client credentials flow. Your end users authorize access through Paylocity's partner onboarding process, and Truto handles token acquisition and refresh so you don't manage credentials directly.
Does Paylocity support webhooks for real-time event notifications?
Yes. Paylocity offers webhooks for key events including Payroll Processed and Employee Status Changes (hired, terminated, transferred). These allow your application to react immediately rather than polling for updates.
What data can I read from Paylocity's employee endpoints?
You can retrieve demographics, job titles, departments, manager IDs, compensation details, tax setup information, and employment status for all employees or by individual employee ID.
Can I write data back to Paylocity, or is it read-only?
Paylocity supports both read and write operations. You can create new employee records, add or update paycheck deductions, push earnings into payroll batches via the Pay Entry API, and import time punch data.
Is a Truto Unified API available for Paylocity today?
Paylocity is not yet mapped to a Truto Unified API but is available as a build-on-request integration. Truto will handle auth, pagination, and API-specific quirks so you get a clean, consistent interface. Reach out to discuss your specific data requirements.
What Paylocity customer segment will this integration serve?
Paylocity's core market is U.S. mid-market companies with 50 to 2,500+ employees across industries like healthcare, education, retail, and manufacturing. If your customers fall in this range, Paylocity is likely in their HR stack.
Paylocity
Get Paylocity integrated into your app
Our team understands what it takes to make a Paylocity integration successful. A short, crisp 30 minute call with folks who understand the problem.