---
title: "Finish company onboarding"
method: PUT
path: "/v1/companies/{company_uuid}/finish_onboarding"
tags: ["Companies"]
---

# Finish company onboarding

`PUT /v1/companies/{company_uuid}/finish_onboarding`

## Request

- Base URL: `https://api.gusto-demo.com`
- URL: `https://api.gusto-demo.com/v1/companies/{company_uuid}/finish_onboarding`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/gusto/apis/gusto-api/docs/v1/companies/:company_uuid/finish_onboarding/put.ts> (a function with typed inputs; its response is checked against the schema)

Finalize a company's onboarding process.

### Approve a company in demo

After a company is finished onboarding, Gusto requires an additional step to review and approve that company.
The company onboarding status is "onboarding_completed": false, until the API call is made to finish company
onboarding. In production environments, this step is required for risk-analysis purposes.

We provide the endpoint `PUT '/v1/companies/{company_uuid}/approve'` to facilitate company approvals in the demo environment.

```shell
PUT '/v1/companies/89771af8-b964-472e-8064-554dfbcb56d9/approve'

# Response: Company object, with company_status: 'Approved'
```

scope: `companies:write`

## Path parameters

- `company_uuid` string, required

## Headers

- `X-Gusto-API-Version` '2026-06-15'

## Response `200`

Success

- CompanyOnboardingStatus: The representation of a company's onboarding status
  - `uuid` string, required: the UUID of the company
  - `onboarding_completed` boolean: a boolean flag for the company's onboarding status
  - `onboarding_steps` object[]: a list of company onboarding steps
    - `title` string: The display name of the onboarding step
    - `id` 'add_addresses' | 'federal_tax_setup' | 'select_industry' | 'add_bank_info' | 'add_employees' | 'state_setup' | 'payroll_schedule' | 'sign_all_forms' | 'verify_bank_info' | 'external_payroll': The string identifier for each onboarding step
    - `required` boolean: The boolean flag indicating whether the step is required or optional
    - `completed` boolean: The boolean flag indicating whether the step is completed or not.
    - `completed_at` string, nullable: The ISO 8601 timestamp indicating when the onboarding step was completed.
    - `skippable` boolean: The boolean flag indicating whether the step can be skipped or not.
    - `requirements` string[]: A list of onboarding steps that are required to be completed in order to proceed with the current onboarding step.

## Other responses

- `404`: Not Found
- `422`: Unprocessable Entity This may happen when the body of your request contains errors such as `invalid_attribute_value`, or the request fails due to an `invalid_operation`. See the [Errors Categories](https://docs.gusto.com/embedded-payroll/docs/error-categories) guide for more details.

## Changes

- **2026-11-03** `f98575fa2a5e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/gusto/apis/gusto-api/changes/v1/companies/:company_uuid/finish_onboarding/put.md)

---

[API](https://skmtc.dev/gusto/apis/gusto-api.md) - [All operations](https://skmtc.dev/gusto/apis/gusto-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gusto/apis/gusto-api/revisions/f98575fa2a5e?raw)
