Version upgrade guide
Consult this guide for all breaking API changes organized by domain—such as Company management, Employees, Contractors, and Payroll—along with the associated API version and update required.
To see a comprehensive list of endpoints impacted by breaking changes, see the Endpoint change index section.
To find your application's minimum version, see the API versioning guide. For additional questions, reach out to your Technical Solutions representative.
API version statuses
Consult this table to see the deprecation timelines for each API version that's currently supported. Read our API Versioning guide for more information.
| API Version | Status | Deprecation Start Date | Limited Support Date | Final Sunset Date |
|---|---|---|---|---|
| v2026-06-15 | ✅ Stable | TBD | [Deprecation Start Date] + 6 months | [Limited Support Date] + 6 months |
| v2026-02-01 | Deprecated (Full Support) | June 15, 2026 | November 15, 2026 | June 15, 2027 |
| v2025-11-15 | Deprecated (Full Support) | February 1, 2026 | August 1, 2026 | February 1, 2027 |
| v2025-06-15 | Deprecated (Limited Support) | November 17, 2025 | May 17, 2026 | November 17, 2026 |
| v2024-04-01 | No longer supported | June 15, 2025 | December 15, 2025 | June 15, 2026 |
Breaking changes by version
v2026-06-15
| Domain | Breaking change | Update required |
|---|---|---|
| Authentication | Deprecated legacy terms of service endpoints in favor of new RESTful endpoints. Impacted endpoints: | Migrate to Accept the terms of service and Check the terms of service status for a user. |
| Company management | Removed the | Update references of setup_complete to ready_to_run_payroll. |
| Company management | New | Account for new uuid fields when parsing compensation objects in the company response. |
| Payroll |
| Implement pagination handling. Read page and total_pages from response metadata and iterate through pages as needed. |
| Payroll | Payroll receipt now returns paginated | Implement pagination handling for employee_compensations in the receipt response. |
| Payroll | Off-cycle payroll creation now requires at least one | Include at least one employee_uuid in the request body when creating an off-cycle payroll. |
| Payroll |
| Update handling to expect null for initial_check_date and payroll_late on off-cycle payrolls. |
| Payroll | Employee compensation currency fields now return strings (e.g., | Update parsing logic to handle these compensation fields as strings instead of floats. |
v2026-02-01
| Domain | Breaking change | Update required |
|---|---|---|
| Company management | Adds new blockers and warnings to the migrate and migration readiness endpoints:
| Account for new blockers and warnings during the company migration process. |
| Company management | New error category | Account for the new response structure on migrate and migration readiness responses. |
| Company management | New response structure for the migrate endpoint: | Update your client to handle the new boolean migration_status and inline warnings. |
| Company management | Require payroll admin to accept the terms of service and retrieve the terms of service. These endpoints are transitioning to new URLs and the current endpoints will be deprecated in a future API version. Impacted endpoints: | Migrate to the new terms of service endpoints:
|
| Company management | Remove the signing of the terms of service from the migrate endpoint and introduce a migration blocker when the terms of service isn't signed by a company payroll admin. The | Call Accept the terms of service for a payroll admin before calling the migrate endpoint. |
| Employees | Update benefit now validates the presence of, or auto-populates, the | Account for the additional validation on the elective field. |
| Employees | Require the | Require the employee email field on your frontend when an employee is self-onboarding, and include it in POST requests or they will be rejected. |
| Payroll | Payroll update requests with invalid versions return a | Update your error handling to account for the new status code. |
| Payroll | Deprecate the | Stop reading the reverse_wire_detail_id field and remove any dependencies on it. |
v2025-11-15
| Domain | Breaking change | Update required |
|---|---|---|
| Company management | Fix a bug to allow | Ensure your application is not depending on the error that was thrown prior to this fix. |
| Contractors | Fix a bug so that Sign contractor document fields | Ensure your application is not relying on the field mappings from before the fix. |
| Employees | Optional query params | Use effective_date in place of effective_from and effective_to, and use the UUID in place of id. |
| Payroll | Updating a payroll by ID now returns a | Handle the new 422 error in your payroll update flow. |
| Payroll | Remove | Update your client to read reimbursements from the employee_compensations object. |
| Payroll | Deprecate the | Read errors from the employee_compensations key. |
| Payroll | Payroll error messages no longer include the employee name. Impacted endpoints: | Use the employee_uuid from the error message to look up additional employee details if needed. |
| Payroll | Skipping a termination payroll now requires the fields | Pass the new required fields when calling the skip payroll endpoint. |
| Payroll | Rename the | Rename references from auto_pilot to auto_payroll. |
v2025-06-15
| Domain | Breaking change | Update required |
|---|---|---|
| Contractors | Preview a contractor payment group now always returns a | Pass the creation_token from the preview response when calling Create a contractor payment group. |
| Employees | Get an employee rehire now returns a | Expect a 204 response instead of a 404 when a valid employee UUID has no rehires. |
| Payroll | Results are automatically paginated in Get a single payroll and Prepare a payroll for update. The default page size is 25 items and the default page number is 1. Impacted endpoints: | Adjust your page size and request the appropriate page number. |
| Payroll | The maximum page size for all payroll endpoints is 100 items. This corresponds to 100 payrolls for Get all payrolls for a company, and 100 employee compensations for Prepare a payroll for update, Update a payroll by ID, and Get a single payroll. Impacted endpoints: | Adjust your page size and request the appropriate page number. |
| Payroll | Update a payroll by ID accepts a maximum of 100 employee compensation inputs. The endpoint now returns only the employee compensation objects that were inputted, instead of all employee compensation objects on the payroll. Impacted endpoints: | Make the appropriate number of update calls for a given payroll. |
v2024-04-01
| Domain | Breaking change | Update required |
|---|---|---|
| Authentication | API token authentication has been deprecated. | Migrate to System Access Tokens. |
v2024-03-01
| Domain | Breaking change | Update required |
|---|---|---|
| Other | Notification status is no longer included in the Get a notification response. | Subscribe to Notifications webhooks and the Get events endpoint to fetch notification status updates, and store the notification state in your own system. |
| Payroll | Fixed compensation behaviors were modified for unprocessed payrolls to improve performance. Payroll | Read fixed compensation types from the fixed_compensation_types array returned by Prepare a payroll for update. Apply fixed compensations by calling Update a payroll by ID with the name from that array, a non-$0 amount, and the employee compensation version returned by the prepare request. |
Endpoint change index
Alphabetical list of endpoints with breaking changes, and the versions in which they changed.
Endpoint change index
Updated 28 days ago