HRIS · Beta
Paychex
API integration
Ship HRIS features without building the integration. Full Paychex API access via Proxy and 110+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Built for specific customer use cases. Issues are resolved quickly.
Talk to usUse Cases
Why integrate with Paychex
Common scenarios for SaaS companies building Paychex integrations for their customers.
Sync new hires from your ATS into Paychex
Applicant tracking platforms can push hired candidates into Paychex as in-progress workers, porting over profile data, contacts, and compensation so employers only finalize I-9 and tax setup.
Push timesheets and hours into payroll runs
Workforce management and time-tracking apps can map their hour types to Paychex pay components and create worker checks with the exact allocations before each pay period closes.
Reimburse out-of-pocket expenses on the next paycheck
Spend management tools can inject approved reimbursements as non-taxable check components onto an employee's next unprocessed paycheck, eliminating separate ACH runs and reconciliation work.
Automate 401(k) and benefits deduction updates
Retirement and benefits platforms can update worker pay components and direct deposits whenever employees change contribution rates or enrollment elections, keeping payroll in lockstep with benefits data.
Trigger IT de-provisioning on termination
Identity and access platforms can subscribe to Paychex worker status webhooks and instantly revoke SaaS access the moment HR marks an employee as terminated.
What You Can Build
Ship these features with Truto + Paychex
Concrete product features your team can ship faster by leveraging Truto’s Paychex integration instead of building from scratch.
Bi-directional employee directory sync
Sync workers, statuses, locations, organizations, and job data from Paychex into your app and push updates back with update_a_paychex_worker_by_id.
New hire push from ATS to Paychex
Create workers in Paychex with create_a_paychex_company_worker, along with their contacts, communications, and compensation pay rates to kick off onboarding.
One-off earnings and deduction injector
Add bonuses, commissions, reimbursements, or equipment fees to a worker's next paycheck using create_a_paychex_check_check_component on unprocessed checks.
Timesheet-to-payroll pipeline
Resolve active pay periods, map hour types to company pay components, and create worker checks in bulk so payroll admins never touch a CSV.
Real-time termination and lifecycle webhooks
Register Paychex management hooks on worker demographic and status domains to receive event-driven updates instead of polling.
Multi-state tax and direct deposit updates
Use the bulk update endpoints for federal taxes, state taxes, and direct deposits to keep withholdings and banking accurate when employees move or change banks.
SuperAI
Paychex 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_paychex_companies
List Paychex companies your application has been granted access to. Returns each company's companyId, displayId, legalName, hasPermission, legalId, communications, lineage, and links.
get_single_paychex_company_by_id
A Company. Returns: companyId, displayId, legalName, communications, hasPermission, legalId, lineage, links. Required: id.
get_single_paychex_worker_by_id
Get a single Paychex worker (employee or contractor) by id. Returns: workerId, employeeId, workerType, employmentType, customEmploymentType, exemptionType, workState, birthDate, sex, ethnicityCode, hireDate, clockId, name, seniorityDate, profileImageURL, legalId, laborAssignmentId, locationId, jobId, job, organization, supervisor, currentStatus, communications, _links, workerCorrelationId.…. Required: id.
update_a_paychex_worker_by_id
Worker. Returns: workerId, employeeId, workerType, employmentType, customEmploymentType, exemptionType, workState, birthDate. Required: id.
delete_a_paychex_worker_by_id
Delete an in-progress Paychex worker by id. Returns an empty 204 response on success. Required: id.
list_all_paychex_company_calculation_bases
List calculation bases for a Paychex company. Calculation bases determine what to apply a calculation against during a pay run for worker pay components that are not FLAT_DOLLAR_AMOUNT. Returns: calculationBaseId, calculationBaseName. Required: company_id.
list_all_paychex_company_checks
Company Checks. Returns: workerId, paycheckId, payPeriodId, checkCorrelationId, blockAutoDistribution, earnings, deductions, checkDate. Required: company_id, payperiodid.
create_a_paychex_company_check
Company Checks. Returns: workerId, paycheckId, payPeriodId, checkCorrelationId, blockAutoDistribution, earnings, deductions, checkDate. Required: company_id.
list_all_paychex_company_contact_types
List contact types that your application has been granted access to for a specific Paychex company. Returns: contactTypeId, contactTypeName, relationshipTypes, links. Required: company_id.
list_all_paychex_company_custom_employment_types
List custom employment types configured for a Paychex company that a worker could be assigned to. Returns: customEmploymentTypeId, customEmploymentTypeName, links. Required: company_id.
list_all_paychex_company_custom_fields
List custom fields configured at the company level in Paychex. Returns: customFieldId, customFieldName, categoryId, required, checkStub, employeeEditable, type, booleanValue, links, dateValue, textValue, maxTextLength, numericValue, dropdown. Required: company_id.
create_a_paychex_company_custom_field
Create custom fields at the company level in Paychex by sending an array of field definitions including name, type, and category. Returns: customFieldId, customFieldName, categoryId, required, checkStub, employeeEditable, type, booleanValue, links, dateValue, textValue, maxTextLength, numericValue, dropdown. Required: company_id.
get_single_paychex_company_custom_field_by_id
Get a single custom field by id in Paychex. Returns: customFieldId, customFieldName, categoryId, required, checkStub, employeeEditable, type, booleanValue, links, dateValue, textValue, maxTextLength, numericValue, dropdown. Required: id, company_id.
update_a_paychex_company_custom_field_by_id
Update a custom field at the company level in Paychex by sending an array of field definitions. Returns: customFieldId, customFieldName, categoryId, required, checkStub, employeeEditable, type, booleanValue, links, dateValue, textValue, maxTextLength, numericValue, dropdown. Required: id, company_id.
delete_a_paychex_company_custom_field_by_id
Delete a custom field at the company level in Paychex. Returns an empty 204 response on success. Required: id, company_id.
list_all_paychex_company_custom_field_categories
List custom field categories configured at the company level in Paychex. Returns: categoryId, categoryName, links. Required: company_id.
create_a_paychex_company_custom_field_category
Create a custom field category at the company level in Paychex. Returns: categoryId, categoryName, links. Required: company_id.
get_single_paychex_company_custom_field_category_by_id
Get a single custom field category by id in Paychex. Returns: categoryId, categoryName, links. Required: id, company_id.
update_a_paychex_company_custom_field_category_by_id
Update a custom field category at the company level in Paychex. Returns: categoryId, categoryName, links. Required: id, company_id.
delete_a_paychex_company_custom_field_category_by_id
Delete a custom field category at the company level in Paychex. Returns an empty 204 response on success. Required: id, company_id.
list_all_paychex_company_document_categories
List document categories available to a Paychex company for creating and organizing documents. Returns: categoryId, name, customCategory, links. Required: company_id.
list_all_paychex_company_jobs
List jobs set at the company level in Paychex. Returns: jobId, jobCorrelationId, jobName, startDate, endDate, links, jobNumber, laborAssignmentId, value. Required: company_id.
create_a_paychex_company_job
Create a company-level job in Paychex. If the client's job numbering is structured in 2-3 separate segments, first retrieve the job segment configuration to determine segment names and character lengths before posting. Returns: jobId, jobCorrelationId, jobName, startDate, endDate, links, jobNumber. Required: company_id.
get_single_paychex_company_job_by_id
Get a single Paychex company job by id. Returns: jobId, jobCorrelationId, jobName, startDate, endDate, links, jobNumber. Required: id, company_id.
update_a_paychex_company_job_by_id
Update a single Paychex company job by id. Returns: jobId, jobCorrelationId, jobName, startDate, endDate, links, jobNumber. Required: id, company_id.
list_all_paychex_company_job_segments
List Paychex company job segment structure setup for a client. Returns: segmentNumber, name, segmentLength, links. Only available if the client has job numbering configured in 2-3 separate segments. Required: company_id.
list_all_paychex_company_job_titles
List job titles set at the company level which a worker could be assigned in Paychex. Returns: jobTitleId, title, startDate, endDate, links. Required: company_id.
get_single_paychex_company_job_title_by_id
Get information about a single job title in Paychex. Returns: jobTitleId, title, startDate, endDate, links. Required: id, company_id.
list_all_paychex_company_labor_assignments
List labor assignments set at the company level in Paychex. Returns: laborAssignmentId, name, startDate, endDate, organizationId, positionId, links, locationId, rate, jobId, value. Required: company_id.
get_single_paychex_company_labor_assignment_by_id
Get a single labor assignment by id for a company in Paychex. Returns: laborAssignmentId, name, startDate, endDate, organizationId, positionId, links, locationId, rate, jobId, value. Required: id, company_id.
list_all_paychex_company_locations
List Paychex company locations set at the company level. Returns: locationId, name, address, links, movedIn, movedOut. Required: company_id.
get_single_paychex_company_location_by_id
Get a single Paychex company location by id. Returns: locationId, name, address, links, movedIn, movedOut. The optional asof query parameter returns the location as of a specified date. Required: id, company_id.
list_all_paychex_company_organizations
List organizations set at the company level in Paychex. Returns an array of organization records including organizationId. Required: company_id.
get_single_paychex_company_organization_by_id
Get a single Paychex company organization by id. Returns the organization resource including id and organization-specific attributes. Required: id, company_id.
list_all_paychex_company_pay_components
List pay components configured for a Paychex company. Pay components are the earnings and deductions used for payroll. Returns: componentId, checkComponentId, code, name, classificationType, description, effectOnPay, startDate, endDate, appliesToWorkerTypes, jobId, laborAssignmentId, calculationType, payRateId, payRate, payHours, payUnits, payAmount, organization, lineDate, memoed, links.…. Required: company_id.
get_single_paychex_company_pay_component_by_id
Get a specific pay component (earning or deduction) configured for a Paychex company by id. Returns: componentId, checkComponentId, code, name, classificationType, description, effectOnPay, startDate, endDate, appliesToWorkerTypes, jobId, laborAssignmentId, calculationType, payRateId, payRate, payHours, payUnits, payAmount, organization, lineDate, memoed, links. Required: id, company_id.
list_all_paychex_company_pay_frequencies
List pay frequency combinations available to workers for a Paychex company. Returns: payFrequency, payComponentFrequency, links. Required: company_id.
list_all_paychex_company_pay_periods
List pay periods associated with a Paychex company, optionally filtered by status and date range. Returns: payPeriodId, intervalCode, status, description, startDate, endDate, submitByDate, checkDate, checkCount, originalPayPeriodID, links, payperiodId. Required: company_id.
get_single_paychex_company_pay_period_by_id
Get a single Paychex pay period by id. Returns: payPeriodId, intervalCode, status, description, startDate, endDate, submitByDate, checkDate, checkCount, originalPayPeriodID, links. Required: id, company_id.
list_all_paychex_company_state_taxes
List Paychex company state taxes showing information about states the client has enabled for state income tax. Required: company_id.
list_all_paychex_company_workers
List Paychex workers (employees and contractors) for a specific company. Returns: workerId, employeeId, workerType, employmentType, exemptionType, birthDate, sex, ethnicityCode, hireDate, clockId, name, seniorityDate, profileImageURL, legalId, laborAssignmentId, jobId, locationId, job, organization, supervisor, currentStatus, communications, workerCorrelationId. Required: company_id.
create_a_paychex_company_worker
Create one or more in-progress workers for a Paychex company. Workers receive an IN_PROGRESS status and must be fully configured in Flex. Returns: workerId, employeeId, workerType, employmentType, exemptionType, birthDate, sex, ethnicityCode, hireDate, clockId, name, seniorityDate, profileImageURL, legalId, laborAssignmentId, jobId, locationId, job, organization, supervisor, currentStatus,…. Required: company_id.
list_all_paychex_company_worker_statuses
List company worker statuses in Paychex — the array of statuses set at the company level which a worker could be assigned. Returns: workerStatusId, statusType, statusReason, links. Required: company_id.
get_single_paychex_company_worker_status_by_id
Get a single company worker status in Paychex by its worker status id. Returns: workerStatusId, statusType, statusReason, links. Required: id, company_id.
list_all_paychex_worker_assignment_distributions
List the array of assignments used for auto-distribution assigned to a Paychex worker. Returns: jobId, laborAssignmentId, value. Required: worker_id.
list_all_paychex_worker_checks
List Paychex worker checks within a processed or unprocessed pay period. Returns: workerId, paycheckId, payPeriodId, checkCorrelationId, blockAutoDistribution, earnings, deductions, informational, taxes, links. Required: worker_id, payperiodid.
create_a_paychex_worker_check
Add a check to a Paychex worker for an unprocessed pay period. Returns: workerId, paycheckId, payPeriodId, checkCorrelationId, blockAutoDistribution, earnings, deductions, informational, taxes, links, application/vnd.paychex.payroll.check.v1+json, application/json. Required: worker_id.
get_single_paychex_worker_check_by_id
Get a specific Paychex worker check by id, either processed or unprocessed. Returns: workerId, paycheckId, payPeriodId, checkCorrelationId, blockAutoDistribution, earnings, deductions, informational, taxes, links. Required: id, worker_id.
delete_a_paychex_worker_check_by_id
Delete a specific unprocessed Paychex worker check by id. Returns an empty 204 response on success. Required: id, worker_id.
list_all_paychex_worker_communications
List communications for an Active or In-progress Paychex worker. Returns: communicationId, type, usageType, dialCountry, dialArea, dialNumber, dialExtension, uri, streetLineOne, streetLineTwo, postOfficeBox, city, postalCode, postalCodeExtension, countrySubdivisionCode, countryCode, _links, links. Required: worker_id.
create_a_paychex_worker_communication
Add a single communication to an Active or In-progress Paychex worker. Returns: type, uri, city, _links, links, application/vnd.paychex.worker.communication.v1+json, application/json. Required: worker_id.
get_single_paychex_worker_communication_by_id
Worker Communication. Returns: communicationId, type, usageType, dialCountry, dialArea, dialNumber, dialExtension, uri. Required: id, worker_id.
update_a_paychex_worker_communication_by_id
Update a specific communication item for an Active or In-progress Paychex worker. Returns: type, uri, city, _links, links, application/vnd.paychex.worker.communication.v1+json, application/json. Required: id, worker_id.
delete_a_paychex_worker_communication_by_id
Remove a communication item from an Active or In-progress Paychex worker. STREET_ADDRESS or PO_BOX_ADDRESS types cannot be removed. Returns: content, links, type. Required: id, worker_id.
get_single_paychex_worker_compensation_by_id
Worker Compensation. Returns: metadata, content, errors, message, _links. Required: id.
list_all_paychex_compensation_pay_rates
List compensation pay rates for a Paychex worker. A worker can have up to 25 different rates. Returns: rateId, startDate, rateNumber, rateType, description, amount, standardHours, standardOvertime, effectiveDate, _links, links. Required: worker_id.
create_a_paychex_compensation_pay_rate
Create a single compensation pay rate for an Active or In-progress Paychex worker. Returns the created pay rate including rateId, startDate, rateNumber, rateType, amount, standardHours, default. Required: worker_id.
get_single_paychex_compensation_pay_rate_by_id
Get a single compensation pay rate by id for a Paychex worker. Returns: rateId, startDate, rateNumber, rateType, description, amount, standardHours, standardOvertime, effectiveDate, _links, links. Required: id, worker_id.
update_a_paychex_compensation_pay_rate_by_id
Update a specific compensation pay rate for a Paychex worker. Returns the updated pay rate including rateId, startDate, rateNumber, rateType, description, amount, standardHours, standardOvertime, default, and links. Required: id, worker_id.
delete_a_paychex_compensation_pay_rate_by_id
Delete a specific compensation pay rate from a Paychex worker. Returns an empty 204 response on success. Required: id, worker_id.
list_all_paychex_compensation_pay_standards
List Paychex worker compensation pay standards for a specific worker. Returns: payFrequency, overtimeFactor, calculatedPayPeriod, calculatedAnnualSalary, calculatedAnnualSalaryFromHistory. Required: worker_id.
list_all_paychex_worker_contacts
Worker Contacts. Returns: contactId, contactType, relationship. Required: worker_id.
create_a_paychex_worker_contact
Add one or more contacts to a Paychex worker. Each contact must represent either a person or entity (not both) and include at least one communication (telecom, postal, or email). Returns the created contacts including contactId, contactType, and relationship with person/entity communications. Exactly one contact must be primary per contact type. Required: worker_id.
get_single_paychex_worker_contact_by_id
Worker Contact. Returns: contactId, contactType, relationship. Required: id, worker_id.
update_a_paychex_worker_contact_by_id
Update a Paychex worker contact by id. A contact may be a person or entity but not both, and must include at least one communication (telecom, postal, or email). Returns: contactId, contactType, relationship, application/vnd.paychex.worker.contacts.v1+json, application/json. Exactly one contact must be primary per contact type; postal may have streetLineOne or…. Required: id, worker_id.
delete_a_paychex_worker_contact_by_id
Delete a Paychex worker contact by id. Returns an empty 204 response on success. Required: id, worker_id.
list_all_paychex_worker_custom_fields
List custom fields for a specific Paychex worker. Returns: workerCustomFieldId, customFieldId, type, booleanValue, textValue, numericValue, dateValue, dropdownId, dropdownValue, customFieldName, required, checkStub, employeeEditable. Required: worker_id.
create_a_paychex_worker_custom_field
Create a custom field at the worker level in Paychex. Returns the created worker custom field including workerCustomFieldId. Required: worker_id.
get_single_paychex_worker_custom_field_by_id
Get a specific Paychex worker custom field by worker custom field id. Returns: workerCustomFieldId, customFieldId, type, booleanValue, textValue, numericValue, dateValue, dropdownId, dropdownValue, customFieldName, required, checkStub, employeeEditable. Required: id, worker_id.
update_a_paychex_worker_custom_field_by_id
Update a custom field at the worker level in Paychex. Returns the updated worker custom field including workerCustomFieldId. Required: id, worker_id.
delete_a_paychex_worker_custom_field_by_id
Delete a worker custom field in Paychex. Returns an empty 204 response on success. Required: id, worker_id.
list_all_paychex_worker_direct_deposits
Worker Direct Deposits. Returns: directDepositId, bankAccountId, startDate, paymentType, accountType, value, routingNumber, accountNumber. Required: worker_id.
create_a_paychex_worker_direct_deposit
Worker Direct Deposit. Returns: directDepositId, bankAccountId, startDate, paymentType, accountType, value, routingNumber, accountNumber. Required: worker_id.
paychex_worker_direct_deposits_bulk_update
Update multiple direct deposits for an Active or In-Progress Paychex worker in a single request. Returns the array of updated direct deposits including directDepositId, startDate, paymentType, accountType, value, routingNumber, accountNumber, and priority. In-Progress workers cannot be patched using the application/json-patch+json content type. Required: worker_id.
get_single_paychex_worker_direct_deposit_by_id
Worker Direct Deposit. Returns: directDepositId, bankAccountId, startDate, paymentType, accountType, value, routingNumber, accountNumber. Required: id, worker_id.
update_a_paychex_worker_direct_deposit_by_id
Update a single direct deposit for an Active or In-Progress worker in Paychex. Returns the updated direct deposit object including paymentType, accountType, value, routingNumber, accountNumber, and priority. In-Progress workers cannot be patched using application/json-patch+json content type. Required: id, worker_id.
delete_a_paychex_worker_direct_deposit_by_id
Delete a single direct deposit for an Active or In-Progress worker in Paychex. Returns an empty 204 response on success. Required: id, worker_id.
list_all_paychex_worker_documents
List documents for an Active or Terminated Paychex worker. Returns each document's docId, name, category, workerVisible, workerVisibleDate, expirationDate, expirationReminderDays. Only workers with an Active or Terminated status are supported. Required: worker_id.
create_a_paychex_worker_document
Upload a document to an Active or Terminated Paychex worker with associated metadata. Returns: name, category, document, _links, multipart/form-data. Required: worker_id.
get_single_paychex_worker_document_by_id
Retrieve a document for a Paychex worker. Returns: docId, name, expirationReminderDays, expirationDate, category, workerVisible, workerVisibleDate, document, _links. Required: id, worker_id.
delete_a_paychex_worker_document_by_id
Remove a document from an Active or Terminated worker in Paychex. Returns an empty 204 response on success. Required: id, worker_id.
get_single_paychex_worker_federal_tax_by_id
Get the federal tax setup for an Active or In-progress Paychex worker. Returns the federal tax record including taxId, filingStatus, taxesWithheld, extraWithholdingAmount, and extraWithholdingPercentage. Required: id.
create_a_paychex_worker_federal_tax
Create federal tax setup for a Paychex worker. Returns the federal tax record including taxId, filingStatus, taxesWithheld, extraWithholdingAmount, and extraWithholdingPercentage. This endpoint will be deprecated on 1/30/2026; until then, POST behaves as both a create and update depending on whether the worker already has federal tax setup. Required: worker_id.
paychex_worker_federal_taxes_bulk_update
Update the federal tax setup for an Active or In-progress Paychex worker, allowing changes to extra withholding and override combinations. Returns the federal tax record including taxId, filingStatus, taxesWithheld, extraWithholdingAmount, and extraWithholdingPercentage. Required: worker_id.
get_single_paychex_worker_i_9_status_by_id
Get the I9 status of a Paychex worker (employee or contractor). Returns: status, isRemoteI9, remoteType, createdDate, lastUpdated, _links. Required: id.
list_all_paychex_worker_pay_components
List all pay components for a specific Active worker in Paychex. Returns: workerComponentId, componentId, name, calculationType, calculationBaseId, value, startDate, effectiveDate, endDate, effectOnPay, classificationType, checkLimit, frequency, accountNumber, routingNumber, accountType, workerPayCompScheduledEntries, transactions, _links. Only Active workers are supported;…. Required: worker_id.
create_a_paychex_worker_pay_component
Add a recurring pay component to an Active Paychex worker, supporting both Addition and Reduction types applied per the frequency specified. Returns: workerComponentId, componentId, name, calculationType, calculationBaseId, value, startDate, effectiveDate, endDate, effectOnPay, classificationType, checkLimit, frequency, accountNumber, routingNumber, accountType, workerPayCompScheduledEntries,…. Required: worker_id.
paychex_worker_pay_components_bulk_update
Worker Pay Components. Returns: workerComponentId, componentId, name, calculationType, calculationBaseId, value, startDate, effectiveDate. Required: worker_id.
get_single_paychex_worker_pay_component_by_id
Worker Pay Component. Returns: workerComponentId, componentId, name, calculationType, calculationBaseId, value, startDate, effectiveDate. Required: id, worker_id.
update_a_paychex_worker_pay_component_by_id
Worker Pay Component. Returns: workerComponentId, componentId, name, calculationType, calculationBaseId, value, startDate, effectiveDate. Required: id, worker_id.
delete_a_paychex_worker_pay_component_by_id
Delete a specific pay component from an Active worker in Paychex. The worker must be in an Active state; pay components created today and future-dated pay components cannot be deleted. Returns an empty 204 response on success. Required: id, worker_id.
get_single_paychex_worker_profile_image_by_id
Get a Paychex worker's profile image by id. Returns: fileName, base64Image. Only available for workers with an "Active" or "In-Progress" status. Required: id.
create_a_paychex_worker_profile_image
Add a profile image to a Paychex worker. Returns: profileImageURL. Images must be JPG, PNG, or GIF, no larger than 5MB. Only available for workers with an "Active" or "In-Progress" status. Required: worker_id.
paychex_worker_profile_images_bulk_delete
Delete a Paychex worker's profile image. Returns an empty 204 response on success. Only available for workers with an "Active" or "In-Progress" status. Required: worker_id.
list_all_paychex_worker_state_taxes
List Paychex worker state tax allocations for a given worker. Returns: workerTaxId, countrySubdivisionCode, isResidentState, stateAllocationPercent, regulationType, taxStatusType, filingStatusType, additionalAmount, additionalPercent, overridePercent, flatDollarOverride, exemptionReasonDescription, workerTaxDeductions. Required: worker_id.
paychex_worker_state_taxes_bulk_update
Add and replace existing state tax data for a Paychex worker. Returns: workerTaxId, countrySubdivisionCode, isResidentState, stateAllocationPercent, regulationType, taxStatusType, filingStatusType, additionalAmount, additionalPercent, overridePercent, flatDollarOverride, exemptionReasonDescription, workerTaxDeductions. Required: worker_id.
get_single_paychex_worker_status_by_id
Retrieve all worker statuses (past, present, and future) for a Paychex worker. Returns: workerStatusId, statusType, statusReason, effectiveDate, order, _links, links. If multiple statuses share an effective date, the order field indicates the sequence in which they were posted. Required: id.
get_single_paychex_worker_timeoff_by_id
Get time off balances for a Paychex worker, returning an array of balances for each time off policy type. Returns: policyId, type, name, balance, measure. Only available if the client has the Time Off Accrual product (not related to the Flex Time product). Required: id.
paychex_checks_bulk_delete
Delete Paychex checks for a specific pay period and user. Returns an empty 204 response on success. Required: payperiodid, deletebyuserid.
create_a_paychex_check_check_component
Add a new pay component (earnings, deductions, informational, or taxes) to an individual unprocessed Paychex check. Returns the updated check object including earnings, deductions, and taxes. Required: check_id.
update_a_paychex_check_check_component_by_id
Update a single pay component on an individual unprocessed Paychex check. Returns the updated component including name, classificationType, effectOnPay, payAmount, memoed, and lineDate. Required: id, check_id.
delete_a_paychex_check_check_component_by_id
Delete a single pay component on an individual unprocessed check in Paychex. Returns an empty 204 response on success. Required: id, check_id.
list_all_paychex_management_domains
List available Paychex webhook domains for the calling application. Returns an array of domain identifier strings (e.g., WRKR_DEM) that can be used when registering webhooks via the management hooks endpoint. The available domains vary depending on application type (client or partner).
list_all_paychex_management_hooks
List all webhooks set up for the calling Paychex application. Returns: hookId, companyId, uri, authType, createdDate, domains.
create_a_paychex_management_hook
Create a new webhook for the calling Paychex application by providing a notification URI, authentication configuration, and list of domains. Returns: application/json. Required: uri, authentication, domains.
get_single_paychex_management_hook_by_id
Get a specific Paychex webhook by id. Returns: hookId, companyId, uri, authType, createdDate, domains. Required: id.
delete_a_paychex_management_hook_by_id
Delete a specific Paychex webhook by id. Returns an empty 204 response on success. Required: id.
delete_a_paychex_management_remove_client_access_by_id
Remove (unlink) Paychex client access from a 3rd party partner application by display id. Returns a success response string confirming the client access link has been removed. For partnerships only. Required: id.
create_a_paychex_management_request_client_access
Request client access to link Paychex clients to a 3rd party partner application. Returns: approvalLink. For partnerships only. Required: displayId.
create_a_paychex_oauth_token
Request a Bearer token from Paychex to use as an access token when making calls to resources. Returns: access_token, expires_in, scope, token_type. Credentials are sent as form-encoded body fields; grant_type must be set to "client_credentials".
Why Truto
Why use Truto’s MCP server for Paychex
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.
How It Works
From zero to integrated
Go live with Paychex in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Paychex account
Use Truto’s frontend SDK to connect your customer’s Paychex 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 Paychex
Truto’s Proxy API is a 1-to-1 mapping of the Paychex API. You call us, we call Paychex, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Paychex’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Paychex on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How do end users authorize their Paychex account?
Truto handles the OAuth token exchange (create_a_paychex_oauth_token) and the client access request flow (create_a_paychex_management_request_client_access), which generates an approval link your customer's SMB clients use to authorize the connection. You embed that flow in your UI without managing tokens yourself.
Can I create fully onboarded employees through the API?
Not entirely. create_a_paychex_company_worker creates workers in an IN_PROGRESS status with profile, contact, and compensation data, but the employer must finalize I-9 verification and tax setup inside Paychex Flex. You can monitor completion via get_single_paychex_worker_i_9_status_by_id and get_single_paychex_worker_status_by_id.
Does Truto support real-time updates from Paychex?
Yes. Paychex exposes webhooks via create_a_paychex_management_hook across domains like worker demographics, and Truto normalizes those events so you can react to hires, terminations, and profile changes without polling list endpoints.
How do I add a bonus or reimbursement to a specific paycheck?
List active pay periods with list_all_paychex_company_pay_periods, find the unprocessed check for the worker via list_all_paychex_worker_checks, then call create_a_paychex_check_check_component with the appropriate pay component. Truto handles the pagination and ID resolution across these calls.
Are custom fields supported?
Yes. You can manage both company-level and worker-level custom fields with full CRUD support, including list_all_paychex_company_custom_fields, create_a_paychex_worker_custom_field, and their update and delete counterparts, plus custom field categories.
Can I update taxes and direct deposits in bulk when employees relocate?
Yes. Truto exposes paychex_worker_state_taxes_bulk_update, paychex_worker_federal_taxes_bulk_update, and paychex_worker_direct_deposits_bulk_update, which are ideal for tax mobility and EOR use cases that need to transition withholdings and banking in a single call.
From the Blog
Paychex integration guides
Deep dives, architecture guides, and practical tutorials for building Paychex integrations.
Paychex
Get Paychex integrated into your app
Our team understands what it takes to make a Paychex integration successful. A short, crisp 30 minute call with folks who understand the problem.