Pay Schedules

Update a pay schedule

Changed on

Updates a pay schedule. The version parameter from the GET response is required for optimistic concurrency; a mismatch returns 409 Conflict.

Effect on payrolls

Updating a pay schedule will delete any unprocessed regular payrolls whose pay period end date is today or in the future. Already-processed payrolls are not affected.

Pay schedules may be automatically adjusted

If an onboarded company misses their first pay date, Gusto will automatically adjust the pay schedule to the next available pay date.

Webhooks

  • pay_schedule.updated: Fires when a pay schedule is successfully updated.

Related guides

  • Create a pay schedule
  • Manage Pay Schedules via API

scope: pay_schedules:write

put/v1/companies/{company_id}/pay_schedules/{pay_schedule_id}

Request

Path parameters

company_idstring required

The UUID of the company

pay_schedule_idstring required

The UUID of the pay schedule

Headers

X-Gusto-API-Version'2026-06-15'

Determines the date-based API version associated with your API call. If none is provided, your application's minimum API version is used.

Request body

versionstring required

Current version of the pay schedule from the GET response; required for optimistic concurrency. Mismatch returns 409 Conflict.

auto_payrollboolean

With automatic payroll enabled, payroll runs automatically one day before payroll deadlines. When false, payroll does not run automatically and must be run manually. For API versions before 2025-11-15 the request field is auto_pilot.

frequency'Every week' | 'Every other week' | 'Twice per month' | 'Monthly'

The frequency that employees on this pay schedule are paid with Gusto. Only weekly, bi-weekly, twice per month, and monthly are supported on create and update.

  • Every week: Weekly pay.
  • Every other week: Biweekly pay.
  • Twice per month: Two pay dates per month. Provide first_pay_period_pay_day and second_pay_period_pay_day for a regular schedule, and add first_pay_period_end_day and second_pay_period_end_day for a flexible schedule. Legacy day_1/day_2 are still accepted separately. Use 31 for the last day of the month.
  • Monthly: One pay date per month; require day_1 (1-31).
anchor_pay_datestring date

ISO 8601 date (YYYY-MM-DD). Required for anchor and period dates in create, update, and preview requests.

anchor_end_of_pay_periodstring date

ISO 8601 date (YYYY-MM-DD). Required for anchor and period dates in create, update, and preview requests.

day_1integer nullable

Legacy field, retained unchanged for compatibility. The first pay day for Monthly and regular Twice per month schedules, or the first pay-period end day for flexible Twice per month schedules. Prefer the explicit pay-period fields. Do not combine day_1/day_2 with explicit fields in a request.

day_2integer nullable

Legacy field, retained unchanged for compatibility. The second pay day for regular Twice per month schedules, or the second pay-period end day for flexible Twice per month schedules. A value of 31 means the last day of the month. Prefer the explicit pay-period fields. Do not combine day_1/day_2 with explicit fields in a request.

first_pay_period_pay_dayinteger nullable

The first pay day (1-31) for Monthly or Twice per month. For Twice per month, provide both pay-day fields together. Pay days alone configure a regular schedule; adding both explicit period-end days configures a flexible schedule. Omitted fields preserve existing values on update or persisted preview. Pay days on an existing flexible schedule cannot both be cleared. Do not mix explicit fields with day_1/day_2.

second_pay_period_pay_dayinteger nullable

The second pay day (1-31) for Twice per month. Provide both pay-day fields together. Pay days alone configure a regular schedule; adding both explicit period-end days configures a flexible schedule. Omitted fields preserve existing values on update or persisted preview. Pay days on an existing flexible schedule cannot both be cleared. A pay day may fall in the following month. Do not mix explicit fields with day_1/day_2.

first_pay_period_end_dayinteger nullable

The last day (1-31) of the first pay period for a flexible Twice per month schedule. On create or conversion, both explicit period-end days are required. On an existing flexible schedule, omitted values are preserved and changing them requires a matching anchor_end_of_pay_period and anchor_pay_date. Do not mix explicit fields with day_1/day_2.

second_pay_period_end_dayinteger nullable

The last day (1-31) of the second pay period for a flexible Twice per month schedule. A value of 31 means the last day of the month. On create or conversion, both explicit period-end days are required. On an existing flexible schedule, omitted values are preserved and changing them requires a matching anchor_end_of_pay_period and anchor_pay_date. Do not mix explicit fields with day_1/day_2.

custom_namestring nullable

A custom pay schedule name; null clears any custom name so the default frequency description applies.

workweek_start_day'Sunday' | 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday'

The day of the week that this pay schedule's workweeks start on, used for regular rate of pay overtime calculations.

Example request

{
  "version": "68934a3e9455fa72420237eb05902327",
  "auto_payroll": true,
  "frequency": "Twice per month",
  "anchor_pay_date": "2021-10-15",
  "anchor_end_of_pay_period": "2021-10-15",
  "day_1": 15,
  "day_2": 31,
  "custom_name": "demo pay schedule",
  "workweek_start_day": "Monday"
}

Response

Successful

uuidstring required

The unique identifier of the pay schedule in Gusto.

versionstring required

The current version of the pay schedule. See the versioning guide for information on how to use this field for optimistic concurrency.

frequency'Every week' | 'Every other week' | 'Twice per month' | 'Monthly' | 'Quarterly' | 'Annually'

The frequency that employees on this pay schedule are paid with Gusto.

READ-ONLY in responses. Possible values:

  • Every week: Employees are paid weekly.
  • Every other week: Employees are paid bi-weekly (every two weeks).
  • Twice per month: Employees are paid twice per month. The explicit pay-day fields always represent pay days; explicit period-end fields are populated only for flexible schedules. Legacy day_1/day_2 retain their historical values.
  • Monthly: Employees are paid once per month; use day_1 for the pay day.
  • Quarterly: Employees are paid every three months.
  • Annually: Employees are paid once per year.
anchor_pay_datestring date

The first date that employees on this pay schedule are paid with Gusto (ISO 8601 YYYY-MM-DD).

anchor_end_of_pay_periodstring date

The last date of the first pay period. This can be the same date as the anchor pay date (ISO 8601 YYYY-MM-DD).

day_1integer nullable

Legacy field, retained unchanged for compatibility. The first pay day for Monthly and regular Twice per month schedules, or the first pay-period end day for flexible Twice per month schedules. Prefer the explicit pay-period fields. Do not combine day_1/day_2 with explicit fields in a request.

day_2integer nullable

Legacy field, retained unchanged for compatibility. The second pay day for regular Twice per month schedules, or the second pay-period end day for flexible Twice per month schedules. A value of 31 means the last day of the month. Prefer the explicit pay-period fields. Do not combine day_1/day_2 with explicit fields in a request.

first_pay_period_pay_dayinteger nullable

The first pay day of the month (1-31) for Monthly and Twice per month schedules; null for other frequencies. For flexible schedules, this is independent of first_pay_period_end_day. A pay day may fall in the following month.

second_pay_period_pay_dayinteger nullable

The second pay day of the month (1-31) for Twice per month schedules; null for other frequencies. For flexible schedules, this is independent of second_pay_period_end_day. A value of 31 means the last day of the month; a pay day may fall in the following month.

first_pay_period_end_dayinteger nullable

The last day (1-31) of the first pay period for a flexible Twice per month schedule; null for regular schedules and other frequencies.

second_pay_period_end_dayinteger nullable

The last day (1-31) of the second pay period for a flexible Twice per month schedule; null for regular schedules and other frequencies. A value of 31 means the last day of the month.

namestring nullable

This field will be hourly when the pay schedule is for hourly employees, salaried when the pay schedule is for salaried employees, the department name if pay schedule is by department, and null when the pay schedule is for all employees.

custom_namestring

A custom name for a pay schedule; defaults to the pay frequency description when none was set by the partner.

When the partner never set a custom name (or cleared it), this field contains the auto-generated description derived from frequency and pay days (e.g. "every 1st and 15th of the month", "every Friday"). When the partner set a custom name on create or update, this field contains that value.

auto_payrollboolean

With automatic payroll enabled, payroll runs automatically one day before payroll deadlines. When false, payroll does not run automatically. Returned for API version 2025-11-15 and later; for earlier versions the response uses auto_pilot instead.

activeboolean

Whether this pay schedule is associated with any employees. A pay schedule is inactive when it's unassigned.

workweek_start_day'Sunday' | 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday' nullable

The day of the week that this pay schedule's workweeks start on, used for regular rate of pay overtime calculations. Null when no workweek start day has been configured (e.g. legacy pay schedules).

Changes

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      request property deprecated

    • info

      request property deprecated

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      response property day_1 deprecated

    • info

      response property day_2 deprecated