GuidesAPI ReferenceChangelogAPI PolicyAPI StatusGusto Security

Create a Pay Schedule

A pay schedule is a combination of the following two items:

  1. A pay period - The date range for which work is actually completed by the employees.
  2. A check date - When the employees receive payment.

Determined by the employer, the pay schedule provides a regular cadence for tracking work and allows employees to plan their own finances around when they will receive payment.

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



Arrears means there is a delay between the check date and the end of the pay period. This most typically applies to employers with hourly employees, allowing a buffer to obtain hours worked before submitting the payroll.

Create a Pay Schedule

To create a pay schedule for a company use the POST companies/{company_id}/pay_schedules endpoint. This create a new single default pay schedule for the company.

When you create your Pay Schedule you can also choose to enable AutoPilot. AutoPilot will run payroll automatically one day before your payroll deadlines. You can also set up AutoPilot later using the PUT companies/{company_uuid}/pay_schedules/{pay_schedule_uuid} endpoint.


Multiple Pay Schedules

Creating multiple pay schedules is not supported via the API at this time.

curl --request POST \
     --url{company_uuid}/pay_schedules \
     --header 'accept: application/json' \
     --header 'authorization: Bearer <<COMPANY_API_TOKEN>>' \
     --header 'content-type: application/json' \
     --data '
     "frequency": "Twice per month",
     "anchor_pay_date": "2021-10-15",
     "anchor_end_of_pay_period": "2021-10-15",
     "day_1": 15,
     "auto_pilot": false,
     "version": "68934a3e9455fa72420237eb05902327"
const fetch = require('node-fetch');

const url = '{company_uuid}/pay_schedules';
const options = {
  method: 'POST',
  headers: {
    accept: 'application/json',
    'content-type': 'application/json',
    authorization: 'Bearer <<COMPANY_API_TOKEN>>'
  body: JSON.stringify({
    frequency: 'Monthly',
    anchor_pay_date: '2021-10-15',
    anchor_end_of_pay_period: '2021-10-15',
    day_1: 15,
    auto_pilot: false,
    version: '68934a3e9455fa72420237eb05902327'

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));