Terminate a W2 employee

Terminations are created when an employee is scheduled to leave the company. Gusto provides the capability to support terminated employees and offers different options for employers to run their last paychecks using the Gusto Termination Flow or the API.

πŸ“˜

Make sure employees are paid on time by looking at the state’s requirement guide. Some states require employees to receive their final wages within 24 hours (unless they consent otherwise) in which case running a one-off payroll may be the only option.

Termination flow

Create a termination flow

Generate an employee termination flow by using the POST /companies/{company_uuid}/flows endpoint, with the ”entity_type”: β€œEmployee” and ”flow_type”: β€œterminations”.

Sample request

curl --request POST \
     --url https://api.gusto-demo.com/v1/companies/{{company_uuid}}/flows \
     --header 'Authorization: Bearer {{access_token}}’' \
     --header 'Content-Type: application/json' \
     --data '
{
     "flow_type": "terminations",
     "entity_type": "Employee",
     "entity_uuid": "{{employee_uuid}}"
}'
const fetch = require('node-fetch');

const url = 'https://api.gusto-demo.com/v1/employees/{{employee_uuid}}/terminations';
const options = {
  method: 'POST',
  headers: {
    accept: 'application/json',
    'content-type': 'application/json',
    authorization: 'Bearer <<COMPANY_API_TOKEN>>'
  },
  body: JSON.stringify({run_termination_payroll: true, effective_date: '2022-01-01'})
};

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

Sample response

{
  "url": "https://flows.gusto-demo.com/flows/lO2BHHAMCScPVV9G5WEURW0Im_nP9mGYloQgjUWbenQ"
}

Flow behavior (employer view)

This section walks through what employers on your platform will see when using the termination flow.

1. Enter employee termination details

On the termination flow UI, employers enter the employee's last day of employment and specify how to pay their final paycheck.

The last day of employment is the employee’s effective dismissal date. The date can be in the past, today, or in the future. It takes effect at 12am PT. Note the following requirements:

  • If the last day of employment is in the past, the date must be after the last non-zero regular pay period's start date. For example, if Katlyn had a regular payroll for $2000 for 11/1-11/15 and $0 for 11/15-11/30, then we cannot accept a termination date preceding 11/1.
  • The employee must have a hire date.

Employers have three options in the termination flow for running an employee's final paycheck:

  • Dismissal payroll: This is the most guided option, automatically determines the pay period using the employee's last regular pay period, which will be swapped into a dismissal pay period, using its original start date and the employee's termination date as the end date
    • Provides a default PTO payout recommendation based on the dismissed employee's assigned PTO policy, if applicable.
  • Regular payroll: This option allows the employer to include the final payment in the upcoming regular payroll. It defers payroll action until the scheduled payroll period.
  • Another way (Off-cycle payroll): Employers can run an off-cycle payroll to handle the final paycheck separately. This option is also suitable if the employer plans to manage the final payment outside of the application, but in this case they will still need to record an external payroll to ensure accurate tax reporting
    • Requires manual entry of the employee’s work period and check date
    • Requires employers to manually specify payout of PTO hours
    • Offers flexibility to decide whether to continue with the same contributions and deductions for the period
    • Gusto will remove the employee from unprocessed future payrolls

2. Review termination summary

Employers click Submit and continue to submit the termination form.

After the termination form is submitted, employers:

  • Cannot edit the effective date if it is in the past
  • Can cancel a dismissal if they selected Regular payroll or Another way in the dismissal form, but not if they selected Dismissal payroll

3. (Optional) Run dismissal or off-cycle payroll

Once a termination is submitted, an employer admin can continue through the Flow using the Run payroll button at the bottom right of the summary page, which will reflect the type of payroll chosen earlier. For information on how the dismissal payroll is calculated, view the Termination Payroll Flow guide.

If someone accidentally selects dismissal payroll as the final paycheck option and doesn't want to run a dismissal payroll, they can skip it using the Skip a payroll endpoint, which will help them bypass the requirement that blocks them from changing pay schedules.

Payroll admins can chose to run payroll at a later time by returning to this Flow. Termination and off-cycle payroll are also available as separate Flows for you to make available to employers if needed.

Termination API

If "run_termination_payroll": true, the employee should receive their final wages via a termination payroll, depending on the effective date of the termination. To run a termination payroll, follow the Termination Payroll Flow guide.

If "run_termination_payoll": false, the employee should receive their final wages on their current pay schedule.

Sample request (Create an employee termination)

curl --request POST \
     --url https://api.gusto-demo.com/v1/employees/{employee_uuid}/terminations \
     --header 'accept: application/json' \
     --header 'authorization: Bearer <<COMPANY_API_TOKEN>>' \
     --header 'content-type: application/json' \
     --data '
{
     "run_termination_payroll": true,
     "effective_date": "2022-01-01"
}'
const fetch = require('node-fetch');

const url = 'https://api.gusto-demo.com/v1/employees/{{employee_uuid}}/terminations';
const options = {
  method: 'POST',
  headers: {
    accept: 'application/json',
    'content-type': 'application/json',
    authorization: 'Bearer <<COMPANY_API_TOKEN>>'
  },
  body: JSON.stringify({run_termination_payroll: true, effective_date: '2022-01-01'})
};

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

Sample response

{
  "uuid": "{termination_uuid}",
  "employee_uuid": "{employee_uuid}",
  "version": "{version}",
  "active": true,
  "cancelable": true,
  "effective_date": "{effective_date}",
  "run_termination_payroll": true
}

Effective termination date and payments

If an employee is included in an upcoming payroll, and is terminated with an effective_date that is earlier than the check_date and the employer has set β€œrun_termination_payroll”: true, then:

  • If the upcoming payroll is processed β†’ Gusto will not return a termination pay period since the employee has already been paid for the pay period.
  • If the upcoming payroll is unprocessed β†’ the employee is removed from the upcoming payroll since they will be paid via the termination payroll instead