HRIS · Beta
Justworks
API integration
Ship HRIS features without building the integration. Full Justworks API access via Proxy, normalized data through Unified APIs, and 20+ 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 Justworks
Common scenarios for SaaS companies building Justworks integrations for their customers.
Sync employee directory for performance and engagement tools
Performance review, pulse survey, and OKR platforms can pull Justworks members, employments, and manager relationships to automatically keep org charts and review cycles up to date without HR admins exporting CSVs.
Automate 401k and benefits deductions
Retirement, commuter benefits, and HSA providers can push contribution rates directly into Justworks payroll as pre-tax or post-tax deductions, eliminating manual deferral updates before each pay run.
Trigger IT provisioning and offboarding workflows
ITSM, MDM, and identity platforms can detect new hires and terminations in Justworks to automate laptop shipping, SSO account creation, and access revocation the moment employment status changes.
Feed payroll data into accounting and FP&A tools
Accounting, ERP, and financial planning platforms can extract payroll runs, paystubs, and Justworks fees to post journal entries and reconcile labor costs against the general ledger.
Power compliance and security audits
Compliance platforms can treat Justworks as the source of truth for active employment, mapping members to systems access and routing escalations through the manager hierarchy for SOC 2 and ISO audits.
What You Can Build
Ship these features with Truto + Justworks
Concrete product features your team can ship faster by leveraging Truto’s Justworks integration instead of building from scratch.
Incremental employee sync with write-back
Continuously sync Justworks members into your app and write back updates to job title, department, and manager using the Employees and Employments models.
Automated payroll deduction management
Let your users create, bulk update, and cancel pre-tax or post-tax deductions in Justworks directly from your UI, with support for fixed amounts or percentages.
Paystub and payroll run reporting
Pull per-employee paystubs, aggregated payroll runs, and payroll fees to render reconciliation dashboards or export line items to accounting systems.
Time off visibility and balance reports
Display upcoming PTO, policy details, and generate on-demand time off balance reports inside your scheduling, project management, or capacity planning product.
Org chart and group hierarchy builder
Use Groups, Employments, and manager relationships to render a live org chart in your app without asking admins to maintain it separately.
Custom field passthrough
Read company-defined custom fields and member custom field values from Justworks to surface attributes like cost center or employee ID in your workflows.
SuperAI
Justworks 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_justworks_company
Get the Justworks company that authorized this connection (every token is scoped to one company), returned as a single-item list. Includes id, display_name, country_data, addresses, phones, departments, offices, created_at and updated_at. legal_name, tax_id and office addresses are present only when the company.detail:read scope was granted; empty single-value fields are omitted.
list_all_justworks_company_bank_account
Get the bank account on file for the connected Justworks company, returned as a single-item list with account_type, bank_name, account_number_tail (last four digits only) and routing_number. Fields without a value are omitted. Requires the company.bank_account:read scope.
list_all_justworks_company_business_info
Get the connected Justworks company's verified business information, returned as a single-item list: officers (name and titles) and entity_identifiers (state, issue_date, file_number). Requires the company.detail:read scope.
list_all_justworks_company_custom_fields
List the custom fields defined for the connected Justworks company: id, label, category, type (text, selection or unknown), cardinality and, for selection fields, the allowed options. Not paginated. A member's values for these fields come from member_custom_field_values list. Requires the company.detail:read scope.
list_all_justworks_company_jurisdictions
List the jurisdictions (e.g. US states) of the connected Justworks company; each item has a zone_code. Not paginated. Requires both the company.detail:read and member.detail:read scopes.
list_all_justworks_members
List the members (employees, contractors, owners and other types) of the connected Justworks company. Cursor-paginated, up to 100 per page. Filters: status (active or terminated); updated_at, updated_at_gt, updated_at_gte, updated_at_lt, updated_at_lte, updated_at_ne (YYYY-MM-DD). Scope-gated fields are omitted without their scope: type, emails, phones, addresses, manager (member.detail:read); date_of_birth (member.dob:read); sex_assigned_at_birth (member.sex:read); pay fields (member.pay:read); employment fields (member.employment:read). Empty values are omitted.
get_single_justworks_member_by_id
Get one member of the connected Justworks company; id is the member ID (member_...). Returns name, type, active, job_title, emails, phones, addresses, department, office, manager, current_pay, pay_history, current_employment, employment_history and dates. Fields behind optional scopes (member.detail:read, member.dob:read, member.sex:read, member.pay:read, member.employment:read) are omitted when the scope was not granted, as are empty values. pay_rate is in cents.
update_a_justworks_member_by_id
Update a member of the connected Justworks company (id is the member ID): send only the fields to change among job_title, department_id (dept_...) and manager_id (member_...). Requires the member:write scope. Returns 204 No Content (an empty result) on success.
list_all_justworks_member_custom_field_values
List one member's custom field values. Requires member_id (member_...). Each item has id (the custom field ID from company_custom_fields list) and values (an array of strings). Not paginated. Requires the member.detail:read scope.
get_single_justworks_member_tax_id_by_id
Get a member's US Social Security number; id is the member ID (member_...). Returns US.ssn. Domestic members only: international_contractor members return 400, and employee_eor or international_employee members return 404 (no SSN on file). Requires the member.tax_id:read scope.
list_all_justworks_payrolls
List payrolls of the connected Justworks company processed between start_date and end_date (both required, YYYY-MM-DD). Cursor-paginated, up to 100 per page. Each payroll has id, debit_date, pay_date, payment_method, currency and totals in cents (4500 = $45.00): company_debit, gross_pay, net_pay, employee_taxes, employer_taxes. Pass id as payroll_id to payroll_fees list and paystubs list.
list_all_justworks_payroll_fees
List the fees charged for one payroll. Requires payroll_id (from payrolls list). Cursor-paginated, up to 100 per page. Each fee has name, amount (in cents), currency and, when set, type, member_id, reference_type (member or paystub) and reference_id.
list_all_justworks_paystubs
List the paystubs of one payroll. Requires payroll_id (from payrolls list). Cursor-paginated, up to 100 per page. Each item has paystub_id, member_id, pay_period_start, pay_period_end, pay_date, currency, gross_pay and net_pay (in cents) and pay_group. Use paystubs get for the line items.
get_single_justworks_paystub_by_id
Get one paystub; id is the paystub_id from paystubs list. Returns member_id, pay_period_start, pay_period_end, pay_date, currency, gross_pay, net_pay and pay_group plus the earnings, employee_deductions and employer_contributions line items. All amounts are integers in cents (4500 = $45.00). Requires the paystub:read scope.
list_all_justworks_deduction_types
List the deduction types available to the connected Justworks company. Each item has a code and a description; pass code as deduction_type_code when creating deductions. Not paginated. Requires the deductions:read scope.
list_all_justworks_deductions
List payroll deductions of the connected Justworks company. Cursor-paginated, up to 100 per page. Optional filters: member_id, deduction_type, frequency, description. Each deduction has id, member_id, deduction_type_code, frequency, description, currency, amount_type (fixed or percent), amount, start_date and end_date. Fixed amounts are in cents (4500 = $45.00); percent amounts carry 4 decimal places (37000 = 3.7%).
create_a_justworks_deduction
Create one or more deductions in one call. Body: items, an array whose entries need member_id, deduction_type_code, frequency, description, amount_type (fixed or percent), amount and start_date (currency too when fixed; end_date and operation_id optional). Returns 201 with items: one result per entry with deduction_id, member_id, success and error_message. A 201 can still contain failed entries, so check success on each. Amounts: fixed in cents (4500 = $45.00), percent with 4 decimals (37000 = 3.7%).
justworks_deductions_bulk_update
Update one or more existing deductions in one call. Body: items, an array whose entries need deduction_id plus any of deduction_type_code, frequency, description, amount_type, currency, amount, start_date, end_date. Returns items: one result per entry with deduction_id, member_id, success and error_message. A 200 can still contain failed entries, so check success on each. Amounts: fixed in cents, percent with 4 decimals (37000 = 3.7%).
justworks_deductions_cancel
Cancel one or more deductions: send deduction_ids (an array of deduction IDs). Returns items with one result per ID (deduction_id, member_id, success, error_message); a 200 can still contain failed entries, so check success on each. Requires the deductions:write scope.
list_all_justworks_subscriptions
List the Justworks product subscriptions of the connected company (e.g. PEO, Payroll PEPM, Payroll Base). Expired subscriptions are left out unless include_expired=true. Not paginated. Each subscription has id, company_id, product_name, status (ACTIVE, EXPIRED or PENDING), start_date, end_date, prices, discounts and add_ons (child subscriptions with the same fields).
list_all_justworks_time_off_requests
List time off requests of the connected Justworks company. start_date and end_date (YYYY-MM-DD) are required; member_id, policy_id and status (requested, approved, declined, cancelled, deleted, manual) are optional filters. Cursor-paginated, up to 100 per page. Each request has id, member_id, policy_id, start_date, end_date, amount with its unit_type (minutes, hours or days), status, notes, created_at and updated_at.
list_all_justworks_time_off_policies
List the time off policies of the connected Justworks company, optionally filtered by status (active or inactive). Cursor-paginated, up to 100 per page. Each policy has id, name, status, type (vacation, sick_leave, other or international), effective_date and deactivation_date.
create_a_justworks_time_off_balance_report
Start an asynchronous time off balances report. Body fields are all optional: as_of_date (YYYY-MM-DD, the date to calculate balances as of), member_id and policy_id (filters). Returns report_id; then poll time_off_balance_reports get with that ID until status is ready. Requires the time_off:read scope.
get_single_justworks_time_off_balance_report_by_id
Get a time off balances report; id is the report_id returned by time_off_balance_reports create. status is pending, ready or error: poll until it is ready, then read items (member_id, policy_id, available, used, unit_type); message explains the status or error. Requires the time_off:read scope.
Why Truto
Why use Truto’s MCP server for Justworks
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 Justworks
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
Companies
Companies represent the companies in HRIS
Employee Compensations
Represent the compensation configuration for an Employee
Employee Payroll Runs
Employee Payroll Runs represent the Employee Payroll Runs for an Employee
Employees
Represents an employee in HRIS
Employments
Employments represent a job position at a company.
Fields
Represent the fields for various entities in the company
Groups
Groups represent the groups for an Employee
Locations
Locations represent the locations in HRIS
Payroll Runs
Payrollruns represent a group of pay statements for a specific pay schedule.
Timeoff Policies
Represent the time off policies in a company
Timeoff Requests
Represent the time off requests for an Employee
How It Works
From zero to integrated
Go live with Justworks in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Justworks account
Use Truto’s frontend SDK to connect your customer’s Justworks 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 Justworks
Truto’s Proxy API is a 1-to-1 mapping of the Justworks API. You call us, we call Justworks, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Justworks’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Justworks on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How does authentication work for the Justworks integration?
Truto handles the full auth flow with Justworks on your behalf. Your end users connect their Justworks account through Truto's hosted link or your embedded flow, and Truto manages token storage and refresh so you never touch credentials.
Can we write data back to Justworks, or is it read-only?
Justworks supports write operations through Truto. You can update member records (job title, department, manager), create and bulk update payroll deductions, and cancel deductions. Payroll runs, paystubs, and time off data are read-only.
How fresh is the data from Justworks?
Truto polls Justworks on a configurable schedule and supports incremental sync using updated_at filters, so you only fetch records that changed since the last run. You can also trigger on-demand syncs when your users expect immediate updates.
Does the integration expose custom fields defined by the customer in Justworks?
Yes. You can list company-level custom field definitions and read per-member custom field values, then map them into your own schema or expose them through Truto's Fields model.
How are time off balances handled given Justworks uses async reports?
Truto wraps the asynchronous balance report flow: you trigger a balance report creation, and Truto handles polling the report ID until it's ready so your app receives the final data without managing the async handshake.
Can we use the Unified HRIS API and Justworks-specific endpoints together?
Yes. Use the Unified HRIS API for portable models like Employees, Employments, Groups, Payroll Runs, and Timeoff Requests across multiple HRIS providers, and drop down to Justworks-native tools (like deductions or paystubs) when you need provider-specific capabilities.
Justworks
Get Justworks integrated into your app
Our team understands what it takes to make a Justworks integration successful. A short, crisp 30 minute call with folks who understand the problem.