Skip to content

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 us
Paylocity

Use Cases

Why integrate with Paylocity

Common scenarios for SaaS companies building Paylocity integrations for their customers.

01

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.

02

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.

03

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.

04

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.

05

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.

01

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.

02

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.

03

Automated deduction management

Create, update, or remove recurring paycheck deductions in Paylocity when employees change benefit elections or retirement deferral percentages in your app.

04

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.

05

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.

06

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.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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

View Docs

Companies

Companies represent the companies in HRIS

View Docs

Employee Compensations

Represent the compensation configuration for an Employee

View Docs

Employees

Represents an employee in HRIS

View Docs

Employments

Employments represent a job position at a company.

View Docs

Group Types

Group types represent the types of group.

View Docs

Groups

Groups represent the groups for an Employee

View Docs

Job Roles

Represent the job roles in a company

View Docs

Locations

Locations represent the locations in HRIS

View Docs

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

View Docs

How It Works

From zero to integrated

Go live with Paylocity in under an hour. No boilerplate, no maintenance burden.

01

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.

02

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.

03

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.

04

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.