v1

latestOpenAPI 3.1.02026-07-243113441.2 MB
Pay Schedules

Create a new pay schedule

If a company does not have any pay schedules, this endpoint will create a single pay schedule and assign it to all employees. This is a common use case during company onboarding.

If a company has an existing active pay schedule and want to support multiple pay schedules, this endpoint will create a pay schedule that is not assigned to any employee.

Be sure to check state laws to know what schedule is right for your customers.

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.created: Fires when a pay schedule is successfully created.

Related guides

scope: pay_schedules:write

post/v1/companies/{company_id}/pay_schedules

Path parameters

company_idstring required

The UUID of the company

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

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

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; require day_1 and day_2 (use 31 for last day of month).
  • Monthly: One pay date per month; require day_1 (1-31).
anchor_pay_datestring date required

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

anchor_end_of_pay_periodstring date required

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

day_1integer nullable

An integer between 1 and 31 indicating the first day of the month that employees are paid. This field is only relevant for pay schedules with the "Twice per month" and "Monthly" frequencies. It will be null for pay schedules with other frequencies.

On create: required for Twice per month and Monthly; omit or null for Every week and Every other week.

day_2integer nullable

An integer between 1 and 31 indicating the second day of the month that employees are paid. This field is the second pay date for pay schedules with the "Twice per month" frequency. For semi-monthly pay schedules, set this field to 31. For months shorter than 31 days, the second pay date is set to the last day of the month. It will be null for pay schedules with other frequencies.

On create: only for Twice per month; omit or null for other frequencies.

custom_namestring nullable

A custom pay schedule name; defaults to the pay frequency description when null or omitted.

When null or omitted, the system generates a description from the pay frequency and pay days (e.g. "every 1st and 15th of the month" for twice-monthly, "every 11th of the month" for monthly, "every Friday" for weekly). The response returns this generated value in custom_name when no custom name was set. When provided, the value you set is stored and returned.

Example request

{
  "frequency": "Twice per month",
  "anchor_pay_date": "2020-05-15",
  "anchor_end_of_pay_period": "2020-05-08",
  "day_1": 15,
  "day_2": 31,
  "custom_name": "demo pay schedule"
}

Response

Created

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 on two fixed days each month (e.g. 1st and 15th); use day_1 and day_2.
  • 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

An integer between 1 and 31 indicating the first day of the month that employees are paid. This field is only relevant for pay schedules with the "Twice per month" and "Monthly" frequencies. It will be null for pay schedules with other frequencies.

day_2integer nullable

An integer between 1 and 31 indicating the second day of the month that employees are paid. This field is the second pay date for pay schedules with the "Twice per month" frequency. For semi-monthly pay schedules, this field should be set to 31. For months shorter than 31 days, the second pay date is set to the last day of the month. It will be null for pay schedules with other frequencies.

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.