/v1/employees/{employee_uuid}/state_taxes
Get attributes relevant for an employee’s state taxes.
The data required to correctly calculate an employee’s state taxes varies by both home and work location. This API returns information about each question that must be answered grouped by state. Mostly commonly, an employee lives and works in the same state and will only have questions for a single state. The response contains metadata about each question, the type of answer expected, and the current answer stored in Gusto for that question.
Answers are represented by an array. Today, this array can only be empty or contain exactly one element, but is designed to allow for forward compatibility with effective-dated fields. Until effective dated answers are supported, the valid_from and valid_up_to must always be "2010-01-01" and null respectively.
Payroll Admins are responsible for filing a new hire report for each Employee. The file_new_hire_report question will only be listed if:
employee.onboarding_status is one of the following:
admin_onboarding_incompleteself_onboarding_awaiting_admin_reviewscope: employee_state_taxes:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employee_uuid | 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_uuid}/state_taxes
/v1/employees/{employee_uuid}/state_taxes
Update attributes relevant for an employee’s state taxes.
As described for the GET endpoint, the answers must be supplied in the effective-dated format, but currently only a single answer will be accepted - valid_from and valid_up_to must be "2010-01-01" and null respectively.
scope: employee_state_taxes:write
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employee_uuid | 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
EmployeeTaxSetupUpdateStateTaxesRequest
| Property | Type | Required |
|---|---|---|
| states | array | required |
| └ state | string | required |
| └ questions | array | optional |
| └ key | string | required |
| └ answers | array | optional |
| └ value | string | required |
| └ valid_from | string | required |
| └ valid_up_to | object | optional |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
Unprocessable Entity
PUT /v1/employees/{employee_uuid}/state_taxes
/v1/companies/{company_id}/employees
Get all of the employees, onboarding, active and terminated, for a given company.
scope: employees:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | optional | string | The UUID of the company |
| terminated | query | optional | boolean | Filters employees by the provided boolean |
| include | query | optional | string | Include the requested attribute(s) in each employee response, multiple options are comma separated. Available options:
|
| 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. |
application/json
EmployeesListCompanyEmployeesRequest
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_id}/employees
/v1/companies/{company_id}/employees
Create an employee.
scope: employees:manage
| 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 an employee.
application/json
EmployeesCreateEmployeeRequest
| Property | Type | Required |
|---|---|---|
| ssn | string | optional |
| string | optional | |
| last_name | string | required |
| first_name | string | required |
| date_of_birth | string | optional |
| middle_initial | string | optional |
| self_onboarding | 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}/employees
/v1/employees/{employee_id}
Use this endpoint to delete an employee who is in onboarding. Deleting
an onboarded employee is not allowed. Please check out the Terminations api
if you need to terminate an onboarded employee.
scope: employees:manage
| 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. |
No Content
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
DELETE /v1/employees/{employee_id}
/v1/employees/{employee_id}
Get an employee.
scope: employees:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employee_id | path | optional | string | The UUID of the employee |
| include | query | optional | string | Include the requested attribute(s) in each employee response, multiple options are comma separated. 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/employees/{employee_id}
/v1/employees/{employee_id}
Update an employee.
scope: employees:write
| 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. |
Update an employee.
application/json
EmployeesUpdateEmployeeRequest
| Property | Type | Required |
|---|---|---|
| ssn | string | optional |
| string | optional | |
| version | string | required |
| last_name | string | optional |
| first_name | string | optional |
| date_of_birth | string | optional |
| middle_initial | string | optional |
| two_percent_shareholder | 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/employees/{employee_id}
/v1/employees/{employee_id}/custom_fields
Returns a list of the employee’s custom fields.
scope: employees:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employee_id | path | optional | string | The UUID of the employee |
| 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. |
OK
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/employees/{employee_id}/custom_fields
/v1/employees/{employee_id}/finish_onboarding
This endpoint is currently supported but will eventually be deprecated; please use /v1/employees/{employee_id}/onboarding_status instead.
Call this endpoint as the very last step of employee onboarding to complete their onboarding. When successful, the employee’s onboarded attribute will be updated to true, indicating that they can be included in company’s payrolls.
| 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
PUT /v1/employees/{employee_id}/finish_onboarding
/v1/employees/{employee_id}/onboarding_status
Retrieves an employee’s onboarding status. The data returned helps inform the required onboarding steps and respective completion status.
scope: employees:read
| onboarding_status | Description |
|:——————|————:|
| admin_onboarding_incomplete | Admin needs to complete the full employee-onboarding. |
| onboarding_completed | Employee has been fully onboarded and verified. |
| onboarding_status | Description |
|:——————|————:|
| admin_onboarding_incomplete | Admin needs to enter basic information about the employee. |
| self_onboarding_pending_invite | Admin has the intention to invite the employee to self-onboard (e.g., marking a checkbox), but the system has not yet sent the invitation. |
| self_onboarding_invited | Employee has been sent an invitation to self-onboard. |
| self_onboarding_invited_started | Employee has started the self-onboarding process. |
| self_onboarding_invited_overdue | Employee’s start date has passed, and employee has still not completed self-onboarding. |
| self_onboarding_completed_by_employee | Employee has completed entering in their information. The status should be updated via API to “self_onboarding_awaiting_admin_review” from here, once the Admin has started reviewing. |
| self_onboarding_awaiting_admin_review | Admin has started to verify the employee’s information. |
| onboarding_completed | Employee has been fully onboarded and verified. |
| onboarding_steps | Requirement(s) to be completed |
|---|---|
personal_details |
Add employee’s first name, last name, email, date of birth, social security number |
compensation_details |
Associate employee to a job & compensation. |
add_work_address |
Add employee work address. |
add_home_address |
Add employee home address. |
federal_tax_setup |
Set up federal tax withholdings. |
state_tax_setup |
Set up state tax withholdings. |
direct_deposit_setup |
(optional) Set up employee’s direct deposit. |
employee_form_signing |
Employee forms (e.g., W4, direct deposit authorization) are generated & signed. |
file_new_hire_report |
File a new hire report for this employee. |
admin_review |
Admin reviews & confirms employee details (only required for Employee self-onboarding) |
| 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}/onboarding_status
/v1/employees/{employee_id}/onboarding_status
scope: employees:manage
Updates an employee’s onboarding status.
Below is a list of valid onboarding status changes depending on the intended action to be performed on behalf of the employee.
| Action | current onboarding_status | new onboarding_status |
|---|---|---|
| Mark an employee as self-onboarding | admin_onboarding_incomplete |
self_onboarding_pending_invite |
| Invite an employee to self-onboard | admin_onboarding_incomplete or self_onboarding_pending_invite |
self_onboarding_invited |
| Cancel an employee’s self-onboarding | self_onboarding_invited or self_onboarding_pending_invite |
admin_onboarding_incomplete |
| Review an employee’s self-onboarded info | self_onboarding_completed_by_employee |
self_onboarding_awaiting_admin_review |
| Finish an employee’s onboarding | admin_onboarding_incomplete or self_onboarding_awaiting_admin_review |
onboarding_completed |
| 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. |
application/json
EmployeesUpdateOnboardingStatusRequest
| Property | Type | Required |
|---|---|---|
| onboarding_status | 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/employees/{employee_id}/onboarding_status
/v1/employees/{employee_uuid}/time_off_activities
Get employee time off activities.
scope: employee_time_off_activities:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employee_uuid | path | optional | string | The UUID of the employee |
| time_off_type | query | optional | string | The time off type name you want to query data for. ex: ‘sick’ or ‘vacation’ |
| 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_uuid}/time_off_activities
/v1/events
Fetch all events, going back up to 30 days, that your partner application has the required scopes for. Note that a partner does NOT have to have verified webhook subscriptions in order to utilize this endpoint.
📘 Token Authentication
This endpoint uses the organization level api token and the Token scheme with HTTP Authorization header.
scope: events:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| starting_after_uuid | query | optional | string | A cursor for pagination. Returns all events occuring after the specified UUID (exclusive) |
| resource_uuid | query | optional | string | The UUID of the company. If not specified, will return all events for all companies. |
| limit | query | optional | string | Limits the number of objects returned in a single response, between 1 and 100. The default is 25 |
| event_type | query | optional | string | A string containing the exact event name (e.g. |
| 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
GET /v1/events
/v1/companies/{company_uuid}/external_payrolls
Get an external payroll for a given company.
scope: external_payrolls: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}/external_payrolls
/v1/companies/{company_uuid}/external_payrolls
Creates a new external payroll for the company.
scope: external_payrolls: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
ExternalPayrollsCreateNewPayrollRequest
| Property | Type | Required |
|---|---|---|
| check_date | string | required |
| payment_period_end_date | string | required |
| payment_period_start_date | 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_uuid}/external_payrolls
/v1/companies/{company_uuid}/external_payrolls/tax_liabilities
Get tax liabilities from aggregate external payrolls for a company.
scope: external_payrolls: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}/external_payrolls/tax_liabilities
/v1/companies/{company_uuid}/external_payrolls/tax_liabilities
Update tax liabilities for a company.
scope: external_payrolls: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
ExternalPayrollsUpdateTaxLiabilitiesRequest
| Property | Type | Required |
|---|---|---|
| liability_selections | array | optional |
| └ tax_id | integer | optional |
| └ unpaid_liability_amount | number | optional |
| └ last_unpaid_external_payroll_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.
PUT /v1/companies/{company_uuid}/external_payrolls/tax_liabilities
/v1/companies/{company_uuid}/external_payrolls/tax_liabilities/finish
Finalizes tax liabilities for a company. All external payrolls edit action will be disabled.
scope: external_payrolls: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. |
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/companies/{company_uuid}/external_payrolls/tax_liabilities/finish
/v1/companies/{company_uuid}/external_payrolls/{external_payroll_id}
Delete an external payroll.
scope: external_payrolls:write
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_uuid | path | optional | string | The UUID of the company |
| external_payroll_id | path | optional | string | The UUID of the external 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. |
No Content
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
DELETE /v1/companies/{company_uuid}/external_payrolls/{external_payroll_id}
/v1/companies/{company_uuid}/external_payrolls/{external_payroll_id}
Get an external payroll for a given company.
scope: external_payrolls:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_uuid | path | optional | string | The UUID of the company |
| external_payroll_id | path | optional | string | The UUID of the external 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/companies/{company_uuid}/external_payrolls/{external_payroll_id}
/v1/companies/{company_uuid}/external_payrolls/{external_payroll_id}
Update an external payroll with a list of external payroll items
scope: external_payrolls:write
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_uuid | path | optional | string | The UUID of the company |
| external_payroll_id | path | optional | string | The UUID of the external 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
ExternalPayrollsUpdatePayrollItemsRequest
| Property | Type | Required |
|---|---|---|
| replace_fields | boolean | optional |
| external_payroll_items | array | optional |
| └ taxes | array | optional |
| └ amount | string | optional |
| └ tax_id | integer | optional |
| └ benefits | array | optional |
| └ benefit_id | integer | optional |
| └ employee_deduction_amount | string | optional |
| └ company_contribution_amount | string | optional |
| └ earnings | array | optional |
| └ hours | string | optional |
| └ amount | string | optional |
| └ earning_id | integer | optional |
| └ earning_type | string | optional |
| └ employee_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.
PUT /v1/companies/{company_uuid}/external_payrolls/{external_payroll_id}
/v1/companies/{company_uuid}/external_payrolls/{external_payroll_id}/calculate_taxes
Get tax suggestions for an external payroll. Earnings and/or benefits
data must be saved prior to the calculation in order to retrieve accurate
tax calculation.
scope: external_payrolls:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_uuid | path | optional | string | The UUID of the company |
| external_payroll_id | path | optional | string | The UUID of the external 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/companies/{company_uuid}/external_payrolls/{external_payroll_id}/calculate_taxes
/v1/companies/{company_id}/federal_tax_details
Fetches attributes relevant for a company’s federal taxes.
scope: company_federal_taxes: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}/federal_tax_details
/v1/companies/{company_id}/federal_tax_details
Updates attributes relevant for a company’s federal taxes.
This information is required is to onboard a company for use with Gusto Embedded Payroll.
scope: company_federal_taxes: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. |
Attributes related to federal tax details that can be updated via this endpoint include:
application/json
FederalTaxDetailsUpdateAttributesRequest
| Property | Type | Required |
|---|---|---|
| ein | string | optional |
| version | string | required |
| legal_name | string | optional |
| filing_form | string | optional |
| tax_payer_type | string | optional |
| taxable_as_scorp | 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/companies/{company_id}/federal_tax_details
/v1/companies/{company_uuid}/flows
Generate a link to access a pre-built workflow in Gusto white-label UI. For security, all generated flows will expire within 1 hour of inactivity or 24 hours from creation time, whichever comes first.
scope: flows: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
FlowsGenerateLinkRequest
| Property | Type | Required |
|---|---|---|
| flow_type | string | required |
| entity_type | string | optional |
| entity_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_uuid}/flows
/v1/employees/{employee_id}/garnishments
Garnishments, or employee deductions, are fixed amounts or percentages deducted from an employee’s pay. They can be deducted a specific number of times or on a recurring basis. Garnishments can also have maximum deductions on a yearly or per-pay-period bases. Common uses for garnishments are court-ordered payments for child support or back taxes. Some companies provide loans to their employees that are repaid via garnishments.
scope: garnishments:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employee_id | path | optional | string | The UUID of the employee |
| 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/employees/{employee_id}/garnishments
/v1/employees/{employee_id}/garnishments
Garnishments, or employee deductions, are fixed amounts or percentages deducted from an employee’s pay. They can be deducted a specific number of times or on a recurring basis. Garnishments can also have maximum deductions on a yearly or per-pay-period bases. Common uses for garnishments are court-ordered payments for child support or back taxes. Some companies provide loans to their employees that are repaid via garnishments.
scope: garnishments:write
| 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. |
application/json
GarnishmentsCreateGarnishmentRequest
| Property | Type | Required |
|---|---|---|
| times | integer | optional |
| active | boolean | optional |
| amount | string | required |
| recurring | boolean | optional |
| description | string | required |
| court_ordered | boolean | required |
| annual_maximum | string | optional |
| pay_period_maximum | string | optional |
| deduct_as_percentage | 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/employees/{employee_id}/garnishments
/v1/garnishments/{garnishment_id}
Garnishments, or employee deductions, are fixed amounts or percentages deducted from an employee’s pay. They can be deducted a specific number of times or on a recurring basis. Garnishments can also have maximum deductions on a yearly or per-pay-period bases. Common uses for garnishments are court-ordered payments for child support or back taxes. Some companies provide loans to their employees that are repaid via garnishments.
scope: garnishments:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| garnishment_id | path | optional | string | The UUID of the garnishment |
| 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/garnishments/{garnishment_id}
/v1/garnishments/{garnishment_id}
Garnishments, or employee deductions, are fixed amounts or percentages deducted from an employee’s pay. They can be deducted a specific number of times or on a recurring basis. Garnishments can also have maximum deductions on a yearly or per-pay-period bases. Common uses for garnishments are court-ordered payments for child support or back taxes. Some companies provide loans to their employees that are repaid via garnishments.
scope: garnishments:write
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| garnishment_id | path | optional | string | The UUID of the garnishment |
| 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
GarnishmentsUpdateGarnishmentRequest
| Property | Type | Required |
|---|---|---|
| times | integer | optional |
| active | boolean | optional |
| amount | string | optional |
| version | string | required |
| recurring | boolean | optional |
| description | string | optional |
| court_ordered | boolean | optional |
| annual_maximum | string | optional |
| pay_period_maximum | string | optional |
| deduct_as_percentage | 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/garnishments/{garnishment_id}
/v1/generated_documents/{document_type}/{request_uuid}
Get a generated document given the request_uuid. The response will include the generation request’s status and, if complete, the relevant document urls.
scope: generated_documents:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| document_type | path | optional | string | the type of document being generated |
| request_uuid | path | optional | string | The UUID of the Generated Document Request |
| 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/generated_documents/{document_type}/{request_uuid}
/v1/companies/{company_uuid}/holiday_pay_policy
Delete a company’s holiday pay policy
scope: holiday_pay_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. |
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.
DELETE /v1/companies/{company_uuid}/holiday_pay_policy
/v1/companies/{company_uuid}/holiday_pay_policy
Get a company’s holiday pay policy
scope: holiday_pay_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. |
Holiday Pay Policy Object Example
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/companies/{company_uuid}/holiday_pay_policy
/v1/companies/{company_uuid}/holiday_pay_policy
Create a holiday pay policy for a company
scope: holiday_pay_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. |
application/json
HolidayPayPoliciesCreateCompanyPolicyRequest
| Property | Type | Required |
|---|---|---|
| federal_holidays | object | optional |
| └ mlk_day | object | optional |
| └ selected | boolean | optional |
| └ labor_day | object | optional |
| └ selected | boolean | optional |
| └ juneteenth | object | optional |
| └ selected | boolean | optional |
| └ columbus_day | object | optional |
| └ selected | boolean | optional |
| └ memorial_day | object | optional |
| └ selected | boolean | optional |
| └ thanksgiving | object | optional |
| └ selected | boolean | optional |
| └ veterans_day | object | optional |
| └ selected | boolean | optional |
| └ christmas_day | object | optional |
| └ selected | boolean | optional |
| └ new_years_day | object | optional |
| └ selected | boolean | optional |
| └ presidents_day | object | optional |
| └ selected | boolean | optional |
| └ independence_day | object | optional |
| └ selected | boolean | optional |
Holiday Pay Policy Object Example
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}/holiday_pay_policy
/v1/companies/{company_uuid}/holiday_pay_policy
Update a company’s holiday pay policy
scope: holiday_pay_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. |
application/json
HolidayPayPoliciesUpdatePolicyRequest
| Property | Type | Required |
|---|---|---|
| version | string | required |
| federal_holidays | object | optional |
| └ mlk_day | object | optional |
| └ selected | boolean | optional |
| └ labor_day | object | optional |
| └ selected | boolean | optional |
| └ juneteenth | object | optional |
| └ selected | boolean | optional |
| └ columbus_day | object | optional |
| └ selected | boolean | optional |
| └ memorial_day | object | optional |
| └ selected | boolean | optional |
| └ thanksgiving | object | optional |
| └ selected | boolean | optional |
| └ veterans_day | object | optional |
| └ selected | boolean | optional |
| └ christmas_day | object | optional |
| └ selected | boolean | optional |
| └ new_years_day | object | optional |
| └ selected | boolean | optional |
| └ presidents_day | object | optional |
| └ selected | boolean | optional |
| └ independence_day | object | optional |
| └ selected | boolean | optional |
Holiday Pay Policy Object Example
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}/holiday_pay_policy
/v1/companies/{company_uuid}/holiday_pay_policy/add
Add employees to a company’s holiday pay policy
scope: holiday_pay_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. |
application/json
HolidayPayPoliciesAddEmployeesToPolicyRequest
| Property | Type | Required |
|---|---|---|
| version | string | required |
| employees | array | optional |
| └ uuid | string | optional |
Holiday Pay Policy Object Example
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}/holiday_pay_policy/add
/v1/companies/{company_uuid}/holiday_pay_policy/remove
Remove employees from a company’s holiday pay policy
scope: holiday_pay_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. |
application/json
HolidayPayPoliciesRemoveEmployeesRequest
| Property | Type | Required |
|---|---|---|
| version | string | required |
| employees | array | optional |
| └ uuid | string | optional |
Holiday Pay Policy Object Example
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}/holiday_pay_policy/remove
/v1/companies/{company_uuid}/paid_holidays
Preview a company’s paid holidays
scope: holiday_pay_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. |
application/json
HolidayPayPoliciesPreviewCompanyPaidHolidaysRequest
| Property | Type | Required |
|---|---|---|
| year | string | optional |
Paid Holidays Object Example
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/companies/{company_uuid}/paid_holidays
/v1/companies/{company_id}/industry_selection
Get industry selection for the company.
scope: companies: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}/industry_selection
/v1/companies/{company_id}/industry_selection
Update the company industry selection by passing in industry classification codes: NAICS code, SICS code and industry title. Our UI is leveraging Middesk API to determine industry classification codes.
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. |
application/json
IndustrySelectionUpdateCompanyIndustrySelectionRequest
| Property | Type | Required |
|---|---|---|
| title | string | required |
| sic_codes | array | optional |
| naics_code | 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_id}/industry_selection
/oauth/token
Exchange a refresh token for a new access token.
The previous refresh_token will be revoked on the first usage of the new access_token.
The expires_in value is provided in seconds from when the access_token was generated.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| 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
IntrospectionExchangeRefreshTokenRequest
| Property | Type | Required |
|---|---|---|
| client_id | string | required |
| grant_type | string | required |
| redirect_uri | string | optional |
| client_secret | string | required |
| refresh_token | string | required |
Example response
POST /oauth/token
/v1/token_info
Returns scope and resource information associated with the current access token.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| 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
GET /v1/token_info
/v1/invoices/{invoice_period}
Retrieve data for active companies used to calculate invoices for Gusto Embedded Payroll. A company is considered active for an invoice period if they are an active partner managed company, have run payroll or created contractor payments since becoming a partner managed company, and are not suspended at any point during the invoice period. This endpoint forces pagination, with 100 results returned at a time. You can learn more about our pagination here: pagination guide
📘 Token Authentication
This endpoint uses the organization level api token and the Token scheme with HTTP Authorization header
scope: invoices:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| invoice_period | path | optional | string | The month we are calculating the invoice for. Must be in YYYY-MM format |
| 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 |
| company_uuids | query | optional | string | Filter companies returned in the active_companies response, will return an error if company not active during provided invoice period. 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.
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/invoices/{invoice_period}
/v1/compensations/{compensation_id}
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. This endpoint deletes a compensation for a job that hasn’t been processed on payroll.
scope: jobs:write
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| compensation_id | path | optional | string | The UUID of the 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. |
No Content
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
DELETE /v1/compensations/{compensation_id}
/v1/compensations/{compensation_id}
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:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| compensation_id | path | optional | string | The UUID of the 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. |
Example response
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
GET /v1/compensations/{compensation_id}
/v1/compensations/{compensation_id}
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 |
|---|---|---|---|---|
| compensation_id | path | optional | string | The UUID of the 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. |
application/json
JobsAndCompensationsUpdateCompensationRequest
| Property | Type | Required |
|---|---|---|
| rate | string | optional |
| version | string | required |
| flsa_status | string | optional |
| payment_unit | string | optional |
| minimum_wages | array | optional |
| └ uuid | 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.
PUT /v1/compensations/{compensation_id}
/v1/employees/{employee_id}/jobs
Get all of the jobs that an employee holds.
scope: jobs:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employee_id | path | optional | string | The UUID of the employee |
| 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/employees/{employee_id}/jobs
/v1/employees/{employee_id}/jobs
Create a job.
scope: jobs:write
| 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. |
Create a job.
application/json
JobsAndCompensationsCreateJobRequest
| Property | Type | Required |
|---|---|---|
| title | string | required |
| hire_date | string | required |
| state_wc_covered | boolean | optional |
| state_wc_class_code | string | optional |
| two_percent_shareholder | 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/employees/{employee_id}/jobs
/v1/jobs/{job_id}
Deletes a specific job that an employee holds.
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. |
No Content
Not Found
The requested resource does not exist. Make sure the provided ID/UUID is valid.
DELETE /v1/jobs/{job_id}
/v1/jobs/{job_id}
Get a job.
scope: jobs:read
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| job_id | path | optional | string | The UUID of the job |
| 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}
/v1/jobs/{job_id}
Update a job.
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. |
Update a job.
application/json
JobsAndCompensationsUpdateJobRequest
| Property | Type | Required |
|---|---|---|
| title | string | optional |
| version | string | required |
| hire_date | string | optional |
| state_wc_covered | boolean | optional |
| state_wc_class_code | string | optional |
| two_percent_shareholder | 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/jobs/{job_id}