Jobsandcompensations 2 endpoints

GET /v1/jobs/{job_id}/compensations

Compensations contain information on how much is paid out for a job. Jobs may have many compensations, but only one that is active. The current compensation is the one with the most recent effective_date. By default the API returns only the current compensation - see the include query parameter for retrieving all compensations.

Note: Currently the API does not support creating multiple compensations per job - creating a compensation with the same job_uuid as another will fail with a relevant error.

Use flsa_status to determine if an employee is eligible for overtime.

scope: jobs:read

operationId: JobsAndCompensations_getJobCompensations

Parameters

Name In Required Type Description
job_id path optional string

The UUID of the job

page query optional number

The page that is requested. When unspecified, will load all objects unless endpoint forces pagination.

per query optional number

Number of objects per page. For majority of endpoints will default to 25

include query optional string

Available options:

  • all_compensations: Include all effective dated compensations for each job instead of only the current compensation
X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/jobs/{job_id}/compensations
POST /v1/jobs/{job_id}/compensations

Compensations contain information on how much is paid out for a job. Jobs may have many compensations, but only one that is active. The current compensation is the one with the most recent effective_date.

scope: jobs:write

operationId: JobsAndCompensations_createCompensation

Parameters

Name In Required Type Description
job_id path optional string

The UUID of the job

X-Gusto-API-Version header optional string

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

application/json
schema JobsAndCompensationsCreateCompensationRequest
Property Type Required
rate string optional
flsa_status string required
payment_unit string required
minimum_wages array optional
uuid string optional
effective_date string optional
adjust_for_minimum_wage boolean optional

Responses

201

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

POST /v1/jobs/{job_id}/compensations

Locations 5 endpoints

GET /v1/companies/{company_id}/locations

Company locations represent all addresses associated with a company. These can be filing addresses, mailing addresses, and/or work locations; one address may serve multiple, or all, purposes.

Since all company locations are subsets of locations, retrieving or updating an individual record should be done via the locations endpoints.

scope: companies:read

operationId: Locations_getCompanyLocations

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

page query optional number

The page that is requested. When unspecified, will load all objects unless endpoint forces pagination.

per query optional number

Number of objects per page. For majority of endpoints will default to 25

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_id}/locations
POST /v1/companies/{company_id}/locations

Company locations represent all addresses associated with a company. These can be filing addresses, mailing addresses, and/or work locations; one address may serve multiple, or all, purposes.

Since all company locations are subsets of locations, retrieving or updating an individual record should be done via the locations endpoints.

scope: companies.write

operationId: Locations_createCompanyLocation

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

Create a company location.

application/xml
schema LocationsCreateCompanyLocationRequest1
Property Type Required
zip string required
city string required
state string required
country string required
street_1 string required
street_2 string required
phone_number string required
application/json
schema LocationsCreateCompanyLocationRequest
Property Type Required
zip string required
city string required
state string required
country string optional
street_1 string required
street_2 string optional
phone_number string required
filing_address boolean optional
mailing_address boolean optional

Responses

201

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

POST /v1/companies/{company_id}/locations
GET /v1/locations/{location_id}

Get a location.

scope: companies:read

operationId: Locations_getById

Parameters

Name In Required Type Description
location_id path optional string

The UUID of the location

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/locations/{location_id}
PUT /v1/locations/{location_id}

Update a location.

scope: companies.write

operationId: Locations_updateLocation

Parameters

Name In Required Type Description
location_id path optional string

The UUID of the location

X-Gusto-API-Version header optional string

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

Update a location

application/json
schema LocationsUpdateLocationRequest
Property Type Required
version string required
zip string optional
city string optional
state string optional
country string optional
street_1 string optional
street_2 string optional
phone_number string optional
filing_address boolean optional
mailing_address boolean optional

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

PUT /v1/locations/{location_id}
GET /v1/locations/{location_uuid}/minimum_wages

Get minimum wages for a location

scope: companies:read

operationId: Locations_getMinimumWages

Parameters

Name In Required Type Description
location_uuid path optional string

The UUID of the location

effective_date query optional string
X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/locations/{location_uuid}/minimum_wages

Notifications 1 endpoints

GET /v1/notifications/{notification_uuid}

Upon receiving a notification webhook event, use this endpoint to fetch the notification’s details. The notification details include basic suggested content that can help you build notifications in your platform.

Note: partners are responsible for the delivery and any custom state management of notifications in their application. Refer to our partner notification guide for more details.

If the notification UUID is not found, the response will be 404 Not Found. If the notification’s supporting data is no longer valid, the response will be 422 Unprocessable Entity.

scope: notifications:read

operationId: Notifications_getDetails

Parameters

Name In Required Type Description
notification_uuid path optional string

The UUID of the notification

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

GET /v1/notifications/{notification_uuid}

Payschedules 10 endpoints

GET /v1/companies/{company_id}/pay_periods

Pay periods are the foundation of payroll. Compensation, time & attendance, taxes, and expense reports all rely on when they happened. To begin submitting information for a given payroll, we need to agree on the time period.

By default, this endpoint returns pay periods starting from 6 months ago to the date today. Use the start_date and end_date parameters to change the scope of the response. End dates can be up to 3 months in the future and there is no limit on start dates.

Starting in version ‘2023-04-01’, the eligible_employees attribute was removed from the response. The eligible employees for a payroll are determined by the employee_compensations returned from the payrolls#prepare endpoint.

scope: payrolls:read

operationId: PaySchedules_getPayPeriods

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

start_date query optional string
end_date query optional string
payroll_types query optional string

regular and/or transition. Multiple options are comma separated. The default is regular pay periods if nothing is passed in.

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_id}/pay_periods
GET /v1/companies/{company_id}/pay_periods/unprocessed_termination_pay_periods

When a payroll admin terminates an employee and selects “Dismissal Payroll” as the employee’s final payroll, their last pay period will appear on the list.

This endpoint returns the unprocessed pay periods for past and future terminated employees in a given company.

scope: payrolls:read

operationId: PaySchedules_getUnprocessedTerminationPayPeriods

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_id}/pay_periods/unprocessed_termination_pay_periods
GET /v1/companies/{company_id}/pay_schedules

The pay schedule object in Gusto captures the details of when employees work and when they should be paid. A company can have multiple pay schedules.

scope: pay_schedules:read

operationId: PaySchedules_listForCompany

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

page query optional number

The page that is requested. When unspecified, will load all objects unless endpoint forces pagination.

per query optional number

Number of objects per page. For majority of endpoints will default to 25

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_id}/pay_schedules
POST /v1/companies/{company_id}/pay_schedules

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.

operationId: PaySchedules_createNew

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

application/json
schema PaySchedulesCreateNewRequest
Property Type Required
day_1 integer optional
day_2 integer optional
frequency string required
custom_name string optional
anchor_pay_date string required
anchor_end_of_pay_period string required

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

POST /v1/companies/{company_id}/pay_schedules
POST /v1/companies/{company_id}/pay_schedules/assign

This endpoints assigns employees to specified pay schedules based on the pay schedule type.

scope: pay_schedules:write

operationId: PaySchedules_assignEmployeesToSchedules

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

application/json
schema Pay-Schedule-Assignment-Body
Property Type Required
type string required
employees array optional
employee_uuid string optional
pay_schedule_uuid string optional
departments array optional
department_uuid string optional
pay_schedule_uuid string optional
hourly_pay_schedule_uuid string optional
default_pay_schedule_uuid string optional
salaried_pay_schedule_uuid string optional

Responses

200

No Content

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

POST /v1/companies/{company_id}/pay_schedules/assign
POST /v1/companies/{company_id}/pay_schedules/assignment_preview

This endpoints returns the employee changes, including pay period and transition pay periods, for changing the pay schedule.

scope: pay_schedules:write

operationId: PaySchedules_previewAssignmentsForCompany

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

application/json
schema Pay-Schedule-Assignment-Body
Property Type Required
type string required
employees array optional
employee_uuid string optional
pay_schedule_uuid string optional
departments array optional
department_uuid string optional
pay_schedule_uuid string optional
hourly_pay_schedule_uuid string optional
default_pay_schedule_uuid string optional
salaried_pay_schedule_uuid string optional

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

POST /v1/companies/{company_id}/pay_schedules/assignment_preview
GET /v1/companies/{company_id}/pay_schedules/assignments

This endpoint returns the current pay schedule assignment for a company, with pay schedule and employee/department mappings depending on the pay schedule type.

scope: pay_schedules:read

operationId: PaySchedules_getAssignments

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_id}/pay_schedules/assignments
GET /v1/companies/{company_id}/pay_schedules/preview

Provides a preview of a pay schedule with the specified parameters

scope: pay_schedules:write

operationId: PaySchedules_previewPayScheduleDates

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

frequency query optional string

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

anchor_pay_date query optional string

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

anchor_end_of_pay_period query optional string

The last date of the first pay period. This can be the same date as the anchor pay date.

day_1 query optional integer

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_2 query optional integer

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, we will set the second pay date to the last day of the month. It will be null for pay schedules with other frequencies.

X-Gusto-API-Version header optional string

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

Responses

200

OK

GET /v1/companies/{company_id}/pay_schedules/preview
GET /v1/companies/{company_id}/pay_schedules/{pay_schedule_id}

The pay schedule object in Gusto captures the details of when employees work and when they should be paid. A company can have multiple pay schedules.

scope: pay_schedules:read

operationId: PaySchedules_getDetails

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

pay_schedule_id path optional string

The UUID of the pay schedule

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_id}/pay_schedules/{pay_schedule_id}
PUT /v1/companies/{company_id}/pay_schedules/{pay_schedule_id}

Updates a pay schedule.

scope: pay_schedules:write

operationId: PaySchedules_updatePaySchedule

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

pay_schedule_id path optional string

The UUID of the pay schedule

X-Gusto-API-Version header optional string

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

application/json
schema PaySchedulesUpdatePayScheduleRequest
Property Type Required
day_1 integer optional
day_2 integer optional
version string required
frequency string optional
auto_pilot boolean optional
custom_name string optional
anchor_pay_date string optional
anchor_end_of_pay_period string optional

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

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

Paymentconfigs 2 endpoints

GET /v1/companies/{company_uuid}/payment_configs

Get payment speed for the company and fast payment limit (1-day is only applicable to partners that opt in).

scope: company_payment_configs:read

operationId: PaymentConfigs_getCompanyPaymentConfigs

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_uuid}/payment_configs
PUT /v1/companies/{company_uuid}/payment_configs

Update payment speed and fast payment limit for a company. At least one of payment_speed or fast_payment_limit parameters is required. 1-day option is only applicable to partners that opt in.

scope: company_payment_configs:write

operationId: PaymentConfigs_updateCompanyPaymentConfigs

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

application/json
schema PaymentConfigsUpdateCompanyPaymentConfigsRequest
Property Type Required
payment_speed string required
fast_payment_limit string required

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

PUT /v1/companies/{company_uuid}/payment_configs

Payrolls 17 endpoints

GET /v1/companies/{company_id}/payroll_reversals

Returns all approved Payroll Reversals for a Company.

scope: payrolls:read

operationId: Payrolls_approvedReversals

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

page query optional number

The page that is requested. When unspecified, will load all objects unless endpoint forces pagination.

per query optional number

Number of objects per page. For majority of endpoints will default to 25

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_id}/payroll_reversals
GET /v1/companies/{company_id}/payrolls

Returns a list of payrolls for a company. You can change the payrolls returned by updating the processing_status, payroll_types, start_date, & end_date params.

By default, will return processed, regular payrolls for the past 6 months.

Notes:

  • Dollar amounts are returned as string representations of numeric decimals, are represented to the cent.
  • end_date can be at most 3 months in the future and start_date and end_date can’t be more than 1 year apart.

scope: payrolls:read

operationId: Payrolls_getCompanyPayrolls

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

processing_statuses query optional string

Whether to include processed and/or unprocessed payrolls in the response, defaults to processed, for multiple attributes comma separate the values, i.e. ?processing_statuses=processed,unprocessed

payroll_types query optional string

Whether to include regular and/or off_cycle payrolls in the response, defaults to regular, for multiple attributes comma separate the values, i.e. ?payroll_types=regular,off_cycle

include query optional string

Include the requested attribute in the response. In v2023-04-01 totals are no longer included by default. For multiple attributes comma separate the values, i.e. ?include=totals,payroll_status_meta

start_date query optional string

Return payrolls whose pay period is after the start date

end_date query optional string

Return payrolls whose pay period is before the end date

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_id}/payrolls
POST /v1/companies/{company_id}/payrolls

Creates a new, unprocessed, off-cycle payroll.

off_cycle_reason

  • External benefits and deductions will be included when the off_cycle_reason is set to Correction.
  • All benefits and deductions are blocked when the off_cycle_reason is set to Bonus.

scope: payrolls:run

operationId: Payrolls_createOffCyclePayroll

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

application/json
schema PayrollsCreateOffCyclePayrollRequest
Property Type Required
end_date string required
off_cycle boolean required
check_date string optional
start_date string required
employee_uuids array optional
off_cycle_reason string required
pay_schedule_uuid string optional
fixed_withholding_rate boolean optional
withholding_pay_period string optional
skip_regular_deductions boolean optional

Responses

200

A prepared payroll

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

POST /v1/companies/{company_id}/payrolls
DELETE /v1/companies/{company_id}/payrolls/{payroll_id}

This endpoint allows you to delete an unprocessed payroll.

By default the payroll and associated data is deleted synchronously. To request an asynchronous delete, use the async=true query parameter. In both cases validation of ability to delete will be performed and an Unprocessable Entity error will be returned if the payroll is not able to be deleted. A successful synchronous delete will return 204/No Content. When a payroll has been enqueued for asynchronous deletion, 202/Accepted will be returned.

scope: payrolls:run

operationId: Payrolls_deleteUnprocessedPayroll

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

payroll_id path optional string

The UUID of the payroll

async query optional boolean

When true, request an asynchronous delete of the payroll.

X-Gusto-API-Version header optional string

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

Responses

202

Accepted

204

No Content

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

DELETE /v1/companies/{company_id}/payrolls/{payroll_id}
GET /v1/companies/{company_id}/payrolls/{payroll_id}

Returns a payroll. If payroll is calculated or processed, will return employee_compensations and totals.

Notes:

  • Hour and dollar amounts are returned as string representations of numeric decimals.
  • Hours are represented to the thousands place; dollar amounts are represented to the cent.
  • Every eligible compensation is returned for each employee. If no data has yet be inserted for a given field, it defaults to “0.00” (for fixed amounts) or “0.000” (for hours ).
  • When include parameter with benefits value is passed, employee_benefits:read scope is required to return benefits
    • Benefits containing PHI are only visible with the employee_benefits:read:phi scope

scope: payrolls:read

operationId: Payrolls_getSinglePayroll

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

payroll_id path optional string

The UUID of the payroll

include query optional string

Include the requested attribute in the response, for multiple attributes comma separate the values, i.e. ?include=benefits,deductions,taxes

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_id}/payrolls/{payroll_id}
PUT /v1/companies/{company_id}/payrolls/{payroll_id}

This endpoint allows you to update information for one or more employees for a specific unprocessed payroll. You can think of the unprocessed
payroll object as a template of fields that you can update. You cannot modify the structure of the payroll object through this endpoint, only values
of the fields included in the payroll. If you do not include specific employee compensations or fixed/hourly compensations in your request body, they
will not be removed from the payroll.

scope: payrolls:write

operationId: Payrolls_updatePayrollById

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

payroll_id path optional string

The UUID of the payroll

X-Gusto-API-Version header optional string

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

application/json
schema PayrollsUpdatePayrollByIdRequest
Property Type Required
employee_compensations array required
memo string optional
version string optional
excluded boolean optional
employee_uuid string optional
paid_time_off array optional
name string optional
hours string optional
policy_uuid string optional
final_payout_unused_hours_input string optional
payment_method string optional
fixed_compensations array optional
name string optional
amount string optional
job_uuid integer optional
hourly_compensations array optional
name string optional
hours string optional
job_uuid integer optional

Responses

200

A prepared payroll

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

PUT /v1/companies/{company_id}/payrolls/{payroll_id}
PUT /v1/companies/{company_id}/payrolls/{payroll_id}/calculate

Performs calculations for taxes, benefits, and deductions for an unprocessed payroll. The calculated payroll details provide a preview of the actual values that will be used when the payroll is run.

This calculation is asynchronous and a successful request responds with a 202 HTTP status. To view the details of the calculated payroll, use the GET /v1/companies/{company_id}/payrolls/{payroll_id} endpoint with include=taxes,benefits,deductions params.
In v2023-04-01, show_calculation=true is no longer required.

If the company is blocked from running payroll due to issues like incomplete setup, missing information or other compliance issues, the response will be 422 Unprocessable Entity with a categorization of the blockers as described in the error responses.

operationId: Payrolls_calculateGrossUp

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

payroll_id path optional string

The UUID of the payroll

X-Gusto-API-Version header optional string

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

Responses

202

Accepted

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

PUT /v1/companies/{company_id}/payrolls/{payroll_id}/calculate
PUT /v1/companies/{company_id}/payrolls/{payroll_id}/cancel

Transitions a processed payroll back to the unprocessed state. A payroll can be canceled if it meets both criteria:

  • processed is true
  • Current time is earlier than 3:30pm PT on the payroll_deadline

scope: payrolls:run

operationId: Payrolls_cancelPayrollTransition

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

payroll_id path optional string

The UUID of the payroll

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

PUT /v1/companies/{company_id}/payrolls/{payroll_id}/cancel
PUT /v1/companies/{company_id}/payrolls/{payroll_id}/prepare

This endpoint will build the payroll and get it ready for making updates. This includes adding/removing eligible employees from the Payroll and updating the check_date, payroll_deadline, and payroll_status_meta dates & times.

Notes:

  • Will null out calculated_at & totals if a payroll has already been calculated.
  • Will return the version param used for updating the payroll

scope: payrolls:write

operationId: Payrolls_prepareForUpdate

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

payroll_id path optional string

The UUID of the payroll

X-Gusto-API-Version header optional string

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

Responses

200

A prepared payroll

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

PUT /v1/companies/{company_id}/payrolls/{payroll_id}/prepare
PUT /v1/companies/{company_id}/payrolls/{payroll_id}/submit

Submits an unprocessed payroll to be calculated and run. This submission is asynchronous and a successful request responds with a 202 HTTP status. Upon success, transitions the payroll to the processed state.

If the company is blocked from running payroll due to issues like incomplete setup, missing information or other compliance issues, the response will be 422 Unprocessable Entity with a categorization of the blockers as described in the error responses.

scope: payrolls:run

operationId: Payrolls_submitPayroll

Parameters

Name In Required Type Description
company_id path optional string

The UUID of the company

payroll_id path optional string

The UUID of the payroll

X-Gusto-API-Version header optional string

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

Responses

202

Accepted

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

PUT /v1/companies/{company_id}/payrolls/{payroll_id}/submit
GET /v1/companies/{company_uuid}/payrolls/blockers

Returns a list of reasons that prevent the company from running payrolls. See the payroll blockers guide for a complete list of reasons.

The list is empty if there are no payroll blockers.

scope: payrolls:run

operationId: Payrolls_getAllPayrollBlockers

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_uuid}/payrolls/blockers
POST /v1/companies/{company_uuid}/payrolls/skip

Submits a $0 payroll for employees associated with the pay schedule to skip payroll. This submission is asynchronous and a successful request responds with a 202 HTTP status. Upon success, the payroll is transitioned to the processed state.

If the company is blocked from running payroll due to issues like incomplete setup, missing information or other compliance issues, the response will be 422 Unprocessable Entity with a categorization of the blockers as described in the error responses.

scope: payrolls:run

operationId: Payrolls_skipPayroll

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

application/json
schema PayrollsSkipPayrollRequest
Property Type Required
end_date string optional
start_date string optional
payroll_type string required
employee_uuids array optional
pay_schedule_uuid string optional

Responses

202

Accepted

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

POST /v1/companies/{company_uuid}/payrolls/skip
GET /v1/employees/{employee_id}/pay_stubs

Get an employee’s pay stubs

scope: pay_stubs:read

operationId: Payrolls_getEmployeePayStubs

Parameters

Name In Required Type Description
employee_id path optional string

The UUID of the employee

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/employees/{employee_id}/pay_stubs
GET /v1/payrolls/{payroll_id}/employees/{employee_id}/pay_stub

Get an employee’s pay stub for the specified payroll. By default, an application/pdf response will be returned. No other content types are currently supported, but may be supported in the future.

scope: pay_stubs:read

operationId: Payrolls_getEmployeePayStub

Parameters

Name In Required Type Description
payroll_id path optional string

The UUID of the payroll

employee_id path optional string

The UUID of the employee

X-Gusto-API-Version header optional string

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

Responses

200

OK

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/payrolls/{payroll_id}/employees/{employee_id}/pay_stub
POST /v1/payrolls/{payroll_id}/generated_documents/printable_payroll_checks

This endpoint initiates the generation of employee checks for the payroll specified by payroll_id. A generation status and corresponding generated document request_uuid will be returned. Use the generated document GET endpoint with document_type: printable_payroll_checks and request_uuid to poll the check generation process and retrieve the generated check URL upon completion.

scope: generated_documents:write

operationId: Payrolls_generatePrintableChecks

Parameters

Name In Required Type Description
payroll_id path optional string

The UUID of the payroll

X-Gusto-API-Version header optional string

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

application/json
schema PayrollsGeneratePrintableChecksRequest
Property Type Required
printing_format string required
starting_check_number integer optional

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

POST /v1/payrolls/{payroll_id}/generated_documents/printable_payroll_checks
POST /v1/payrolls/{payroll_uuid}/gross_up

Calculates gross up earnings for an employee’s payroll, given net earnings. This endpoint is only applicable to off-cycle unprocessed payrolls.

The gross up amount must then be mapped to the corresponding fixed compensation earning type to get the correct payroll amount. For example, for bonus off-cycles, the gross up amount should be set with the Bonus earning type in the payroll fixed_compensations field.

scope: payrolls:run

operationId: Payrolls_calculateGrossUp

Parameters

Name In Required Type Description
payroll_uuid path optional string

The UUID of the payroll

X-Gusto-API-Version header optional string

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

application/json
schema PayrollsCalculateGrossUpRequest
Property Type Required
net_pay string required
employee_uuid string required

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

POST /v1/payrolls/{payroll_uuid}/gross_up
GET /v1/payrolls/{payroll_uuid}/receipt

Returns a payroll receipt.

Notes:

  • Hour and dollar amounts are returned as string representations of numeric decimals.
  • Dollar amounts are represented to the cent.
  • If no data has yet be inserted for a given field, it defaults to “0.00” (for fixed amounts).

scope: payrolls:read

operationId: Payrolls_getSingleReceipt

Parameters

Name In Required Type Description
payroll_uuid path optional string

The UUID of the payroll

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/payrolls/{payroll_uuid}/receipt

Recoverycases 2 endpoints

GET /v1/companies/{company_uuid}/recovery_cases

Fetch all recovery cases for a company.

scope: recovery_cases:read

operationId: RecoveryCases_listForCompany

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_uuid}/recovery_cases
PUT /v1/recovery_cases/{recovery_case_uuid}/redebit

After resolving the underlying bank error, initiate a redebit for an open recovery case. This submission is asynchronous and a successful request responds with a 202 HTTP status.

It may take up to four business days for the ACH debit to process; in the meantime, the status of the recovery case will be in the initiated_redebit state. When funds are successfully redebited, the recovery case is transitioned to the recovered state.

If the company has exceeded maximum redebit attempts, or if the recovery case is not in a redebitable state, the response will be 422 Unprocessable Entity.

scope: recovery_cases:write

operationId: RecoveryCases_initiateRedebit

Parameters

Name In Required Type Description
recovery_case_uuid path optional string

The UUID of the recovery case

X-Gusto-API-Version header optional string

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

Responses

202

Accepted

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

PUT /v1/recovery_cases/{recovery_case_uuid}/redebit

Signatories 5 endpoints

GET /v1/companies/{company_uuid}/signatories

Returns company signatories. Currently we only support a single signatory per company.

scope: signatories:read

operationId: Signatories_getCompanySignatories

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_uuid}/signatories
POST /v1/companies/{company_uuid}/signatories

Create a company signatory with complete information.
A signatory can legally sign forms once the identity verification process is successful.

scope: signatories:manage

operationId: Signatories_createSignatoryWithCompleteInformation

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

application/json
schema SignatoriesCreateSignatoryWithCompleteInformationRequest
Property Type Required
ssn string required
email string required
phone string required
title string required
birthday string required
last_name string required
first_name string required
home_address object required
zip string required
city string required
state string required
street_1 string required
street_2 string optional
middle_initial string optional

Responses

201

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

POST /v1/companies/{company_uuid}/signatories
POST /v1/companies/{company_uuid}/signatories/invite

Create a signatory with minimal information. This signatory can be invited to provide more information through the PUT /v1/companies/{company_uuid}/signatories/{signatory_uuid} endpoint. This will start the identity verification process and allow the signatory to be verified to sign documents.

operationId: Signatories_createInvite

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

application/json
schema SignatoriesCreateInviteRequest
Property Type Required
email string required
title string optional
last_name string optional
first_name string optional

Responses

201

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

POST /v1/companies/{company_uuid}/signatories/invite
DELETE /v1/companies/{company_uuid}/signatories/{signatory_uuid}

Delete a company signatory.

scope: signatories:manage

operationId: Signatories_deleteSignatory

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

signatory_uuid path optional string

The UUID of the signatory

X-Gusto-API-Version header optional string

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

Responses

204

No Content

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

DELETE /v1/companies/{company_uuid}/signatories/{signatory_uuid}
PUT /v1/companies/{company_uuid}/signatories/{signatory_uuid}

Update a signatory that has been either invited or created. If the signatory has been created with minimal information through the POST /v1/companies/{company_uuid}/signatories/invite endpoint, then the first update must contain all attributes specified in the request body in order to start the identity verification process.

scope: signatories:write

operationId: Signatories_update

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

signatory_uuid path optional string

The UUID of the signatory

X-Gusto-API-Version header optional string

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

application/json
schema SignatoriesUpdateRequest
Property Type Required
ssn string optional
phone string optional
title string optional
version string optional
birthday string optional
last_name string optional
first_name string optional
home_address object optional
zip string optional
city string optional
state string optional
street_1 string optional
street_2 string optional
middle_initial string optional

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

PUT /v1/companies/{company_uuid}/signatories/{signatory_uuid}

Taxrequirements 3 endpoints

GET /v1/companies/{company_uuid}/tax_requirements

Returns objects describing the states that have tax requirements for the company

scope: company_tax_requirements:read

operationId: TaxRequirements_getStates

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

Responses

200

OK

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_uuid}/tax_requirements
GET /v1/companies/{company_uuid}/tax_requirements/{state}

Get all tax requirements for a given state.

Metadata Examples

```json select
{
“type”: “select”,
“options”: [
{ “label”: “Semiweekly”, value: “Semi-weekly” },
{ “label”: “Monthly”, value: “Monthly” },
{ “label”: “Quarterly”, value: “Quarterly” },
]
}

```json radio
{
  "type": "radio",
  "options": [
    { "label": "No, we cannot reimburse",  value: false, short_label: "Not Reimbursable" },
    { "label": "Yes, we can reimburse",  value: true, short_label: "Reimbursable" },
  ]
}

```json account_number
{
“type”: “account_number”,
“mask”: “######-##’,
“prefix”: null
}

```json tax_rate
{
  "type": "tax_rate",
  "validation": {
    "type": "min_max",
    "min": "0.0004",
    "max": "0.081"
  }
}

scope: company_tax_requirements:read

operationId: TaxRequirements_getStateRequirements

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

state path required string

2-letter US state abbreviation

scheduling query optional boolean

When true, return “new” requirement sets with valid effective_from dates that are available to save new effective dated values.

X-Gusto-API-Version header optional string

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

Responses

200

OK

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_uuid}/tax_requirements/{state}
PUT /v1/companies/{company_uuid}/tax_requirements/{state}

Update State Tax Requirements

scope: company_tax_requirements:write

operationId: TaxRequirements_updateStateTaxes

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

state path required string

2-letter US state abbreviation

X-Gusto-API-Version header optional string

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

application/json
schema TaxRequirementsUpdateStateTaxesRequest
Property Type Required
requirement_sets array optional
key string optional
state string optional
requirements array optional
key string optional
value string optional
effective_from string optional

Responses

200

OK

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

PUT /v1/companies/{company_uuid}/tax_requirements/{state}

Timeoffpolicies 3 endpoints

GET /v1/companies/{company_uuid}/time_off_policies

Get all time off policies for a company

scope: time_off_policies:read

operationId: TimeOffPolicies_getAllPolicies

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

Responses

200

Example response

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

GET /v1/companies/{company_uuid}/time_off_policies
POST /v1/companies/{company_uuid}/time_off_policies

Create a time off policy

scope: time_off_policies:write

operationId: TimeOffPolicies_createPolicy

Parameters

Name In Required Type Description
company_uuid path optional string

The UUID of the company

X-Gusto-API-Version header optional string

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

Requires a policy name, a policy_type, and an accrual_method

application/json
schema TimeOffPoliciesCreatePolicyRequest
Property Type Required
name string required
max_hours string optional
policy_type string required
accrual_rate string optional
accrual_method string required
accrual_rate_unit string optional
carryover_limit_hours string optional
paid_out_on_termination boolean optional
max_accrual_hours_per_year string optional
accrual_waiting_period_days integer optional

Responses

201

Created

404

Not Found

The requested resource does not exist. Make sure the provided ID/UUID is valid.

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

POST /v1/companies/{company_uuid}/time_off_policies
POST /v1/payrolls/{payroll_id}/employees/{employee_id}/calculate_accruing_time_off_hours

Returns a list of accruing time off for each time off policy associated with the employee.

Factors affecting the accrued hours:

  • the time off policy accrual method (whether they get pay per hour worked, per hour paid, with / without overtime, accumulate time off based on pay period / calendar year / anniversary)
  • how many hours of work during this pay period
  • how many hours of PTO / sick hours taken during this pay period (for per hour paid policies only)
  • company pay schedule frequency (for per pay period)

If none of the parameters is passed in, the accrued time off hour will be 0.

scope: payrolls:read

operationId: TimeOffPolicies_calculateAccruingTimeOffHours

Parameters

Name In Required Type Description
payroll_id path optional string

The UUID of the payroll

employee_id path optional string

The UUID of the employee

X-Gusto-API-Version header optional string

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

application/json
schema TimeOffPoliciesCalculateAccruingTimeOffHoursRequest
Property Type Required
pto_hours_used number optional
sick_hours_used number optional
regular_hours_worked number optional
overtime_hours_worked number optional
double_overtime_hours_worked number optional

Responses

200

Example response

422

Unprocessable Entity

This may happen when the body of your request contains errors such as invalid_attribute_value, or the request fails due to an invalid_operation. See the Errors Categories guide for more details.

POST /v1/payrolls/{payroll_id}/employees/{employee_id}/calculate_accruing_time_off_hours
Load more endpoints