Prerequisites: Before using this guide you must have a developer account and created an application. To learn more about these steps, review the Quickstart guide.Documentation Index
Fetch the complete documentation index at: https://gusto-preview.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Step 1: Setting up a company
1. Create a partner managed company
Create a company using the POST partner_managed_companies endpoint. Sample requestPayroll administrators
The user created in this step is the primary payroll administrator of the new company. Add more payroll administrators using the POST /v1/companies/{company_id}/admins endpoint.2. View and accept terms of service (TOS)
Each user must accept the Gusto Embedded Terms of Service. The user must exist in Gusto before you can retrieve and accept the Terms of Service for the user. If the user doesn’t exist, create the admin, signatory, employee, or contractor record before surfacing the Terms of Service step in your application. Partners may either embed a link to the terms of service in a short disclaimer such as “By continuing to the next step, I agree to the Gusto Embedded Payroll Terms of Service,” or include the terms in an iframe for a user to scroll through. In both cases, the user has to explicitly accept the TOS via a dedicated checkbox or button. Sample request3. Create a company location
All companies must provide mailing and filing addresses, as well as all addresses where the company has employees working in the United States—both remotely and at home. Use the POST /v1/company/{company_id}/locations endpoint to set each address. Sample request4. Update federal tax details
In ensure accurate filing, companies must provide federal tax information. Refer to the company’s IRS Form CP-575 for this information.- Retrieve the
versionof the tax details with the GET /v1/companies/{company_id}/federal_tax_details endpoint. - Update the tax details by calling the PUT /v1/companies/{company_id}/federal_tax_details endpoint
5. Update the company industry
Update the company’s industry selection usingnaics_codeandsic_codes with the PUT /v1/companies/{company_uuid}/industry_selection endpoint.
NAICS and SIC codes
Gusto requires this information to stay in compliance with finance regulations:- NAICS (North American Industry Classification System): A six-digit code based on the primary type of work the business performs
- SIC (Standard Industrial Classification): A four-digit code that categorizes the industries that companies belong to based on their activities.
Step 2: Configuring payrolls and employees
This phase involves integrating payroll and employee data to ensure compliance and readiness for processing payroll.1. Add and verify a company bank account
Create and connect a new bank account for a company using the POST /v1/companies/{company_id}/bank_accounts endpoint. If a default bank account exists, the new bank account will replace it as the company’s default funding method. You can also connect a bank account from Plaid using thePOST plaid/processor_token endpoint.
When testing in Demo: Use the sample routing number 102001017. The API checks that the routing number is a valid US routing number, and therefore will reject false inputs.
Sample request
verification_status is awaiting_deposits.
When the deposits are successfully transferred, the verification_status changes to ready_for_verification.
Verify account
At this point, call the PUT /v1/companies/{company_id}/bank_accounts/{bank_account_uuid}/verify to verify the bank account. After a successful verification, the bank account’sverification_status is returned as verified.
Sample request
Validation in Demo
For testing in Demo, use the POST companies/{company_id_or_uuid}/bank_accounts/{bank_account_uuid}/send_test_deposits endpoint simulate micro-deposit transfers.2. Create an employee
Employees are essential for payroll. You can onboard employees either through employer-entered data or self-onboarding. For a more comprehensive walkthrough, see the Onboard a W2 Employee guide. Create an employee with the POST /v1/companies/{company_id}/employees endpoint. Sample request The example below shows an employee “self-onboarding” since the"self_onboarding": true. If false, the payroll admin is required to enter all of the employee’s onboarding information.
3. Create an employee work address
Call POST /v1/employees/{employee_id}/work_addresses to create a work address for an employee. This is required for updating the company’s state tax details later on. Sample request4. Create a pay schedule
A pay schedule determines the frequency and timing of payroll for a company. Create a new pay schedule for a company by calling the POST /v1/companies/{company_id}/pay_schedules endpoint. To learn more about Pay Schedules review the Create a pay schedule guide. Sample request5. Update company state tax details
State tax setup is based on employee work addresses and determines tax compliance for each state. A company location and employee work address must be created before completing this step, as Gusto determines a company’s state tax requirements from the employee work address(es).Step 3: Finalizing and submitting onboarding
This third and final phase ensures all requirements are completed before the company is approved to process payroll.1. (Optional) Add previous payrolls
Historical payrolls are essential for companies transitioning from another payroll provider mid-year. This ensures accurate year-to-date tax filings and a single W-2 for employees. Follow the Create a historical payroll guide to add previous payrolls.2. Add a signatory
The signatory should be an officer, owner, general partner or LLC member manager, plan administrator, fiduciary, or an authorized representative who is designated to sign agreements on the company’s behalf. An officer is someone like the president, vice president, treasurer, or chief accounting officer. There can only be a single primary signatory in a company so you must delete a signatory before creating a new one. Retrieve the current primary signatory using the GET /v1/companies/{company_uuid}/signatories endpoint. You can either create a new signatory or invite a signatory to create a signatory with minimal information and subsequently populate the remaining information using the update a signatory endpoint. Sample request This example shows a request to create a new signatory using POST companies/{company_uuid}/signatories.3. Sign documents
-
To see what forms need to be signed, use the GET /v1/companies/{company_id}/forms endpoint. Sample request
Sample response The response will return an array of document objects:
- To optionally preview the PDF of each document, use the GET /v1/forms/{form_uuid}/pdf endpoint.
-
Identify which forms require signing—they will have
"requires_signing": true—and use theuuidof each form to make a request to sign a company form using the PUT /v1/forms/{form_id}/sign endpoint. Sample requestSample response -
If a form requires action you can subscribe to webhooks and listen for
form.updated. Check the value ofform.signed_at—if it changes from a present timestamp to blank or nil, the form has gone from signed to unsigned.
Form 8655 regenerates in these scenarios and will require re-signature:
- The signatory’s information changes.
- The anchor pay date is updated to an earlier month.
- Company data (e.g., EIN, name, filing address) is modified.
4. Confirm all steps are complete and submit
-
Before finalizing onboarding, ensure all steps are marked as “completed” by calling the GET /v1/companies/{company_uuid}/onboarding_status endpoint. Sample request In this example response,
payroll_schedule,sign_all_forms,andverify_bank_infohave not been completed, as shown by"completed": false: -
Ensure all steps have been completed by checking for
"completed": trueon each item returned getting the onboarding status. -
After all steps are completed, use the PUT companies/{company_uuid}/finish_onboarding endpoint to complete company onboarding. Sample request
Sample response
-
After a company completes onboarding, Gusto’s Risk team will automatically review the company and either approve the company to run payroll or request additional information to verify the company.
Demo
For testing purposes in the demo environment, you can use thePUT /v1/companies/{company_uuid}/approveendpoint. This simulates the approval process, enabling you to validate integration workflows without waiting for standard approval.\
5. Monitor webhook for approval
When you finish company onboarding, Gusto’s internal review process automatically begins. The review can take up to two business days. Using webhooks, you can monitor when the company is approved via thecompany.approved event.
Update information post-onboarding
- If you need to make any changes to company or employee info post onboarding, you can use the Company and Employee endpoints to do so.
- If using Flows, you can revisit the Flows to make necessary adjustments. State tax information cannot be edited through Flows so you must contact Support.
Step 4: Planning for first pay day
Now that onboarding is fully complete, it’s time to ensure the company is ready for its first pay day. This is the anchor pay date, the first date that employees on a given pay schedule are paid with Gusto.Key considerations
If an anchor pay date is missed, Gusto will automatically update the pay schedule. Using the existing pay schedule’s frequency, the anchor dates"anchor_pay_date" and "anchor_end_of_pay_period" will be automatically moved forward to the next valid set of dates.
If you change a company’s anchor pay date to a previous month prior to running the first payroll, Form 8655 is required to be resigned.
Learn more about anchor pay dates in our Create a pay schedule guide.
FAQ
How do I onboard contractor-only companies?
Contractor-only companies are configured to work exclusively with contractors, bypassing the requirements associated with managing W-2 employees. Gusto provides a simplified onboarding process for contractor-only companies, focusing on essential steps such as adding company addresses, setting up federal tax information, and verifying banking details.Architecture diagram

Architecture diagram

Introduction Migrate an existing company