---
updatedAt: 2026-02-26T18:16:00.000Z
agentTools:
  siteIndex: https://docs.gusto.com/llms.txt
  projectIndex: https://docs.gusto.com/embedded-payroll/llms.txt
---

# Payroll Blockers

If there is a payroll blocker throughout the process, you will receive a `payroll_blocker` category 422 error. You will be able to get the reason for the error using the `metadata`.

```json
{
  "errors": [
    {
      "error_key": "base",
      "category": "payroll_blocker",
      "message": "Company or employee address could not be verified. Please ensure all addresses are valid.",
      "metadata": {
        "key": "geocode_error"
      }
    }
  ]
}
```

You can also view the payroll blockers for a given company using the `GET companies/{company_uuid}/payrolls/blockers` [endpoint](https://docs.gusto.com/embedded-payroll/reference/get-v1-companies-payroll-blockers-company_uuid).

```curl
curl --request GET \
     --url https://api.gusto-demo.com/v1/companies/{company_uuid}/payrolls/blockers \
     --header 'X-Gusto-API-Version: 2023-09-01' \
     --header 'accept: application/json'
```
```javascript
const fetch = require('node-fetch');

const url = 'https://api.gusto-demo.com/v1/companies/company_uuid/payrolls/blockers';
const options = {method: 'GET', headers: {accept: 'application/json'}};

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

<Callout icon="📘" theme="info">
  It is possible for company onboarding status response to be `onboarding_completed: true` but for certain steps to be `completed: false` if making updates post-onboarding. New forms may be generated and require signature.
</Callout>

Below is a list of all possible metadata `key` values and how to resolve them.

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Key
      </th>

      <th>
        Message
      </th>

      <th>
        How to Resolve
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `eftps_in_error`
      </td>

      <td>
        We could not make payments to the Electronic Federal Tax Payment System.
      </td>

      <td>
        Please contact support.
      </td>
    </tr>

    <tr>
      <td>
        `geocode_error`
      </td>

      <td>
        Company or employee address could not be verified. Please ensure all addresses are valid.
      </td>

      <td>
        Confirm the company and employee addresses are all valid.
      </td>
    </tr>

    <tr>
      <td>
        `geocode_needed`
      </td>

      <td>
        Company or employee address verification is missing. Please ensure all addresses are entered correctly.
      </td>

      <td>
        Confirm the company and employee addresses are completed.
      </td>
    </tr>

    <tr>
      <td>
        `missing_signatory`
      </td>

      <td>
        A signatory who is authorized to sign documents on behalf of your company is required.
      </td>

      <td>
        Confirm that the company has a signatory.
      </td>
    </tr>

    <tr>
      <td>
        `invalid_signatory`
      </td>

      <td>
        Please ensure that the identity verification of the company signatory is successful.
      </td>

      <td>
        Use the `GET companies/{company_uuid}/signatories` [endpoint](https://docs.gusto.com/embedded-payroll/reference/get-v1-companies-company_uuid-signatories) to check the `identity_verification_status`.

        The signatory verification is successful if `"identity_verification_status": "Pass"` is returned.
      </td>
    </tr>

    <tr>
      <td>
        `pay_schedule_setup_not_complete`
      </td>

      <td>
        Some employees don’t have a pay schedule set up yet. Please complete this step to run payroll.
      </td>

      <td>
        Verify that all employees have a pay schedule.
      </td>
    </tr>

    <tr>
      <td>
        `needs_approval`
      </td>

      <td>
        Company needs to be approved to run payroll.
      </td>

      <td>
        We are reviewing the company onboarding information, wait for the `company.approved` webhook to continue.
      </td>
    </tr>

    <tr>
      <td>
        `suspended`
      </td>

      <td>
        Company is suspended and cannot run payroll.
      </td>

      <td>
        Please contact support if you believe this is an error.
      </td>
    </tr>

    <tr>
      <td>
        `missing_addresses`
      </td>

      <td>
        Company must add addresses in order to run payroll.
      </td>

      <td>
        Missing company onboarding requirement.

        Confirm that company addresses have been added.
      </td>
    </tr>

    <tr>
      <td>
        `missing_federal_tax_setup`
      </td>

      <td>
        Company must complete federal tax setup in order to run payroll.
      </td>

      <td>
        Missing company onboarding requirement.

        Confirm that company federal tax setup has been completed.
      </td>
    </tr>

    <tr>
      <td>
        `missing_industry_selection`
      </td>

      <td>
        Company must complete industry selection in order to run payroll.
      </td>

      <td>
        Missing company onboarding requirement.

        Confirm that a company industry has been selected.
      </td>
    </tr>

    <tr>
      <td>
        `missing_bank_info`
      </td>

      <td>
        Company must have a bank account in order to run payroll.
      </td>

      <td>
        Missing company onboarding requirement.

        Confirm that a company bank account has been added.
      </td>
    </tr>

    <tr>
      <td>
        `missing_employee_setup`
      </td>

      <td>
        Company must add employees in order to run payroll.
      </td>

      <td>
        Missing company onboarding requirement.

        Confirm that the company has employees added.
      </td>
    </tr>

    <tr>
      <td>
        `missing_state_tax_setup`
      </td>

      <td>
        Company must complete state tax setup in order to run payroll.
      </td>

      <td>
        Missing company onboarding requirement.

        Confirm that the company has completed state tax setup.
      </td>
    </tr>

    <tr>
      <td>
        `missing_pay_schedule`
      </td>

      <td>
        Company must have a pay schedule in order to run payroll.
      </td>

      <td>
        Missing company onboarding requirement.

        Confirm that the company has added a pay schedule.
      </td>
    </tr>

    <tr>
      <td>
        `missing_forms`
      </td>

      <td>
        Company forms must be signed in order to run payroll.
      </td>

      <td>
        Missing company onboarding requirement.

        Confirm that all company forms have been signed.
      </td>
    </tr>

    <tr>
      <td>
        `missing_bank_verification`
      </td>

      <td>
        Company bank account must be verified in order to run payroll.
      </td>

      <td>
        Missing company onboarding requirement.

        Confirm that the company bank account has been verified.
      </td>
    </tr>

    <tr>
      <td>
        `pending_recovery_case`
      </td>

      <td>
        Company has an open recovery case that must be resolved in order to unblock payroll.
      </td>

      <td>
        Use the `POST v1/companies/{company_uuid}/flows` [endpoint](https://docs.gusto.com/embedded-payroll/reference/post-v1-company-flows) to create a `company_recovery_cases` flow . You may view all recovery cases for a company and initiate a redebit.  Click [[here](https://docs.gusto.com/embedded-payroll/docs/recovery-cases-1#initiate-a-redebit-for-a-recovery-case)] for more information on initiating a redebit for a recovery case.
      </td>
    </tr>

    <tr>
      <td>
        `pending_information_request`
      </td>

      <td>
        Company has an open information request that must be submitted and approved in order to unblock payroll.
      </td>

      <td>
        Use the `POST v1/companies/{company_uuid}/flows` [endpoint](https://docs.gusto.com/embedded-payroll/reference/post-v1-company-flows) to create a `company_information_requests` flow. You may view all information requests for a company and respond to them. This submitted information will be reviewed by our risk team; please wait for the `notification.information_request.resolved` webhook to continue.
      </td>
    </tr>

    <tr>
      <td>
        `contractor_only_company`
      </td>

      <td>
        Company is set to contractor_only and cannot run payroll. Update the company and complete additional onboarding steps to process payroll.
      </td>

      <td>
        Use the `PUT v1/companies/{company_uuid}` [endpoint](https://docs.gusto.com/embedded-payroll/reference/put-v1-companies)  to update the company, then fetch any new onboarding steps using the`GET v1/companies/{company_uuid}/onboarding_status `[endpoint](https://docs.gusto.com/embedded-payroll/reference/get-v1-company-onboarding-status) . Complete new onboarding steps and then run the payroll.
      </td>
    </tr>
  </tbody>
</Table>