/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
| 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:
|
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/jobs/{job_id}/compensations
/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
| 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. |
application/json
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 |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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
/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
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_id}/locations
/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
| 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. |
Create a company location.
application/xml
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
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 |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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
/v1/locations/{location_id}
Get a location.
scope: companies:read
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/locations/{location_id}
/v1/locations/{location_id}
Update a location.
scope: companies.write
| 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. |
Update a location
application/json
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 |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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}
/v1/locations/{location_uuid}/minimum_wages
Get minimum wages for a location
scope: companies:read
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/locations/{location_uuid}/minimum_wages
/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
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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}
/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
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_id}/pay_periods
/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
| 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. |
Example response
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
/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
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_id}/pay_schedules
/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.
| 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. |
application/json
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 |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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
/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
| 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. |
application/json
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 |
No Content
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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
/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
| 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. |
application/json
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 |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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
/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
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_id}/pay_schedules/assignments
/v1/companies/{company_id}/pay_schedules/preview
Provides a preview of a pay schedule with the specified parameters
scope: pay_schedules:write
| 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. |
OK
GET /v1/companies/{company_id}/pay_schedules/preview
/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
| 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. |
Example response
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}
/v1/companies/{company_id}/pay_schedules/{pay_schedule_id}
Updates a pay schedule.
scope: pay_schedules:write
| 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. |
application/json
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 |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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}
/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
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_uuid}/payment_configs
/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
| 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. |
application/json
PaymentConfigsUpdateCompanyPaymentConfigsRequest
| Property | Type | Required |
|---|---|---|
| payment_speed | string | required |
| fast_payment_limit | string | required |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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
/v1/companies/{company_id}/payroll_reversals
Returns all approved Payroll Reversals for a Company.
scope: payrolls:read
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_id}/payroll_reversals
/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:
scope: payrolls:read
| 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. |
| 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. |
| 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. |
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_id}/payrolls
/v1/companies/{company_id}/payrolls
Creates a new, unprocessed, off-cycle payroll.
off_cycle_reasonoff_cycle_reason is set to Correction.off_cycle_reason is set to Bonus.scope: payrolls:run
| 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. |
application/json
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 |
A prepared payroll
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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
/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
| 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. |
Accepted
No Content
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
Unprocessable Entity
DELETE /v1/companies/{company_id}/payrolls/{payroll_id}
/v1/companies/{company_id}/payrolls/{payroll_id}
Returns a payroll. If payroll is calculated or processed, will return employee_compensations and totals.
Notes:
employee_benefits:read:phi scopescope: payrolls:read
| 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. |
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_id}/payrolls/{payroll_id}
/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
| 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. |
application/json
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 |
A prepared payroll
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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}
/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.
| 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. |
Accepted
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
Unprocessable Entity
PUT /v1/companies/{company_id}/payrolls/{payroll_id}/calculate
/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 truescope: payrolls:run
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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
/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:
scope: payrolls:write
| 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. |
A prepared payroll
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
/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
| 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. |
Accepted
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
Unprocessable Entity
PUT /v1/companies/{company_id}/payrolls/{payroll_id}/submit
/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
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_uuid}/payrolls/blockers
/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
| 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. |
application/json
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 |
Accepted
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
Unprocessable Entity
POST /v1/companies/{company_uuid}/payrolls/skip
/v1/employees/{employee_id}/pay_stubs
Get an employee’s pay stubs
scope: pay_stubs:read
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/employees/{employee_id}/pay_stubs
/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
| 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. |
OK
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
/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
| 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. |
application/json
PayrollsGeneratePrintableChecksRequest
| Property | Type | Required |
|---|---|---|
| printing_format | string | required |
| starting_check_number | integer | optional |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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
/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
| 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. |
application/json
PayrollsCalculateGrossUpRequest
| Property | Type | Required |
|---|---|---|
| net_pay | string | required |
| employee_uuid | string | required |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
Unprocessable Entity
POST /v1/payrolls/{payroll_uuid}/gross_up
/v1/payrolls/{payroll_uuid}/receipt
Returns a payroll receipt.
Notes:
scope: payrolls:read
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/payrolls/{payroll_uuid}/receipt
/v1/companies/{company_uuid}/recovery_cases
Fetch all recovery cases for a company.
scope: recovery_cases:read
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_uuid}/recovery_cases
/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
| 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. |
Accepted
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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
/v1/companies/{company_uuid}/signatories
Returns company signatories. Currently we only support a single signatory per company.
scope: signatories:read
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_uuid}/signatories
/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
| 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. |
application/json
SignatoriesCreateSignatoryWithCompleteInformationRequest
| Property | Type | Required |
|---|---|---|
| ssn | string | required |
| 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 |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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
/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.
| 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. |
application/json
SignatoriesCreateInviteRequest
| Property | Type | Required |
|---|---|---|
| string | required | |
| title | string | optional |
| last_name | string | optional |
| first_name | string | optional |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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
/v1/companies/{company_uuid}/signatories/{signatory_uuid}
Delete a company signatory.
scope: signatories:manage
| 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. |
No Content
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
DELETE /v1/companies/{company_uuid}/signatories/{signatory_uuid}
/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
| 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. |
application/json
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 |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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}
/v1/companies/{company_uuid}/tax_requirements
Returns objects describing the states that have tax requirements for the company
scope: company_tax_requirements:read
| 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. |
OK
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_uuid}/tax_requirements
/v1/companies/{company_uuid}/tax_requirements/{state}
Get all tax requirements for a given state.
```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
| 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 |
| 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. |
OK
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_uuid}/tax_requirements/{state}
/v1/companies/{company_uuid}/tax_requirements/{state}
Update State Tax Requirements
scope: company_tax_requirements:write
| 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. |
application/json
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 |
OK
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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}
/v1/companies/{company_uuid}/time_off_policies
Get all time off policies for a company
scope: time_off_policies:read
| 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_uuid}/time_off_policies
/v1/companies/{company_uuid}/time_off_policies
Create a time off policy
scope: time_off_policies:write
| 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. |
Requires a policy name, a policy_type, and an accrual_method
application/json
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 |
Created
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
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
/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:
If none of the parameters is passed in, the accrued time off hour will be 0.
scope: payrolls:read
| 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. |
application/json
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 |
Example response
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