GuidesAPI ReferenceChangelogAPI StatusAPI PolicyGusto Security
Guides

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 VersionStatusDeprecation Start DateLimited Support DateFinal Sunset Date
v2026-06-15 StableTBD[Deprecation Start Date] + 6 months[Limited Support Date] + 6 months
v2026-02-01Deprecated (Full Support)June 15, 2026November 15, 2026June 15, 2027
v2025-11-15Deprecated (Full Support)February 1, 2026August 1, 2026February 1, 2027
v2025-06-15Deprecated (Limited Support)November 17, 2025May 17, 2026November 17, 2026
v2024-04-01No longer supportedJune 15, 2025December 15, 2025June 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 setup_complete field from the tax requirements response.

Impacted endpoints:

Update references of setup_complete to ready_to_run_payroll.

Company management

New uuid fields included in compensation response objects (hourly_compensations, fixed_compensations, paid_time_off).

Impacted endpoints:

Account for new uuid fields when parsing compensation objects in the company response.

Payroll

GET /v1/companies/{company_id}/payrolls now paginates by default when no pagination parameters are provided.

Impacted endpoints:

Implement pagination handling. Read page and total_pages from response metadata and iterate through pages as needed.

Payroll

Payroll receipt now returns paginated employee_compensations.

Impacted endpoints:

Implement pagination handling for employee_compensations in the receipt response.

Payroll

Off-cycle payroll creation now requires at least one employee_uuid in the request body. Requests without employee_uuids, with null, or with [] return 422. Termination payrolls (off_cycle_reason: Dismissed employee) retain the existing "exactly one employee" requirement.

Impacted endpoints:

Include at least one employee_uuid in the request body when creating an off-cycle payroll.

Payroll

payroll_status_meta.initial_check_date and payroll_status_meta.payroll_late now return null for off-cycle payrolls. Previously these fields returned values that were not meaningful for off-cycle payrolls.

Impacted endpoints:

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., "1234.56") instead of floats. Affected fields: gross_pay, net_pay, check_amount, employee_deduction (benefits), company_contribution (benefits), amount (deductions, taxes, hourly compensations), qualified_earning_amount (qualified earnings).

Impacted endpoints:

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:

  • Marijuana business warning
  • Gusto managed benefits blocker
  • Time off policies unsupported blocker
  • Company suspended blocker
  • Integrations unsupported warning
  • Terms of service not signed by payroll admin blocker
  • Tier unsupported blocker

Impacted endpoints:

Account for new blockers and warnings during the company migration process.

Company management

New error category "migration_blocker" and warning category "migration_warning" for the migrate and migration readiness endpoints.

Impacted endpoints:

Account for the new response structure on migrate and migration readiness responses.

Company management

New response structure for the migrate endpoint: migration_status is now a boolean instead of a string, and warnings are included with the success response.

Impacted endpoints:

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 email, ip_address, and external_user_id params are no longer required in the migrate endpoint.

Impacted endpoints:

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 elective parameter for Simple IRA employee benefits. If elective is provided, the API validates that it matches the expected value for the benefit type (true for Simple IRA benefits and false for non-elective Simple IRAs). If elective is not provided, the API auto-sets it based on the benefit type.

Impacted endpoints:

Account for the additional validation on the elective field.

Employees

Require the email field for employee self-onboarding.

Impacted endpoints:

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 409 status code instead of 422.

Impacted endpoints:

Update your error handling to account for the new status code.

Payroll

Deprecate the reverse_wire_detail_id metadata field surfaced in the wait_for_reverse_wire credit blocker.

Impacted endpoints:

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 per_anniversary_year time off policies to have carryover_limit_hours. Previously this was an unsupported field and an error was thrown.

Impacted endpoints:

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 exemption_from_FATCA, other, and other_text are properly mapped.

Impacted endpoints:

Ensure your application is not relying on the field mappings from before the fix.

Employees

Optional query params current_home_address and all_home_addresses no longer return id, effective_from, and effective_to.

Impacted endpoints:

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 422 error when updating an employee's payment method to direct deposit if they don't have a bank account on file.

Impacted endpoints:

Handle the new 422 error in your payroll update flow.

Payroll

Remove reimbursements as a single total amount from the fixed_compensations array and from the fixed_compensation_types array. Reimbursements are now only available as their own itemized array within the employee_compensations object.

Impacted endpoints:

Update your client to read reimbursements from the employee_compensations object.

Payroll

Deprecate the payroll_items error key in favor of employee_compensations.

Impacted endpoints:

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 pay_schedule_uuid and end_date, in addition to employee_uuids.

Impacted endpoints:

Pass the new required fields when calling the skip payroll endpoint.

Payroll

Rename the auto_pilot field in the pay schedule and payroll objects to auto_payroll in both input parameters and response payloads.

Impacted endpoints:

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 creation_token. This token is a required body parameter for Create a contractor payment group.

Impacted endpoints:

Pass the creation_token from the preview response when calling Create a contractor payment group.

Employees

Get an employee rehire now returns a 204 instead of a 404 when a valid employee UUID is passed in but no rehires are found.

Impacted endpoints:

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

DomainBreaking changeUpdate required
AuthenticationAPI 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 version is no longer included in the top-level response of Prepare a payroll for update and Update a payroll by ID. A new fixed_compensation_types array has been added.

Impacted endpoints:

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
EndpointVersions changed
GET /v1/companies/{company_id}/adminsv2026-02-01
GET /v1/companies/{company_id}/contractor_payment_groupsv2026-02-01
GET /v1/companies/{company_id}/employeesv2025-11-15
GET /v1/companies/{company_id}/pay_schedulesv2025-11-15
GET /v1/companies/{company_id}/pay_schedules/{pay_schedule_id}v2025-11-15
GET /v1/companies/{company_id}/payrollsv2026-02-01, v2025-11-15, v2025-06-15
GET /v1/companies/{company_id}/payrolls/{payroll_id}v2026-02-01, v2025-11-15, v2025-06-15, v2024-03-01
GET /v1/contractor_payment_groups/{contractor_payment_group_uuid}v2026-02-01
GET /v1/employees/{employee_id}v2025-11-15
GET /v1/employees/{employee_id}/rehirev2025-06-15
GET /v1/eventsv2024-03-01
GET /v1/notifications/{notification_uuid}v2024-03-01
GET /v1/partner_managed_companies/{company_uuid}/migration_readinessv2026-02-01
GET /v1/partner_managed_companies/{company_uuid}/terms_of_servicev2026-02-01
POST /v1/companies/{company_id}/contractor_payment_groupsv2025-06-15
POST /v1/companies/{company_id}/contractor_payment_groups/previewv2026-02-01, v2025-06-15
POST /v1/companies/{company_id}/employeesv2026-02-01
POST /v1/companies/{company_id}/pay_schedulesv2025-11-15
POST /v1/companies/{company_id}/payrollsv2025-11-15
POST /v1/companies/{company_uuid}/payrolls/skipv2025-11-15
POST /v1/companies/{company_uuid}/time_off_policiesv2025-11-15
POST /v1/employees/{employee_id}/employee_benefitsv2026-02-01
POST /v1/partner_managed_companies/{company_uuid}/accept_terms_of_servicev2026-02-01
POST /v1/partner_managed_companies/{company_uuid}/retrieve_terms_of_servicev2026-02-01
POST /v1/partner_managed_companies/{company_uuid}/terms_of_servicev2026-02-01
PUT /v1/companies/{company_id}/pay_schedules/{pay_schedule_id}v2025-11-15
PUT /v1/companies/{company_id}/payrolls/{payroll_id}v2026-02-01, v2025-11-15, v2025-06-15, v2024-03-01
PUT /v1/companies/{company_id}/payrolls/{payroll_id}/preparev2025-11-15, v2025-06-15, v2024-03-01
PUT /v1/company_benefits/{company_benefit_id}/employee_benefitsv2026-02-01
PUT /v1/documents/{document_uuid}/signv2025-11-15
PUT /v1/employee_benefits/{employee_benefit_id}v2026-02-01
PUT /v1/partner_managed_companies/{company_uuid}/migratev2026-02-01
PUT /v1/partner_managed_companies/{company_uuid}/terms_of_servicev2026-02-01
PUT /v1/time_off_policies/{time_off_policy_uuid}v2025-11-15