---
title: "Get tax requirements for a state"
method: GET
path: "/v1/companies/{company_uuid}/tax_requirements/{state}"
tags: ["Tax Requirements"]
---

# Get tax requirements for a state

`GET /v1/companies/{company_uuid}/tax_requirements/{state}`

Retrieves the detailed tax requirements for a specific state. The response includes requirement sets grouped by
category (e.g., registrations, tax rates, deposit schedules), each containing individual requirements with their
current values, labels, and metadata describing the expected input format.

Use this to build dynamic UIs for tax setup or to read the current tax configuration for a state.

scope: `company_tax_requirements:read`

## Path parameters

- `company_uuid` string, required
- `state` string, required

## Query parameters

- `scheduling` boolean

## Headers

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

## Response `200`

Success

- TaxRequirementsState
  - `company_uuid` string
  - `state` string — One of the two-letter state abbreviations for the fifty United States and the District of Columbia (DC)
  - `requirement_sets` TaxRequirementSet[]
    - `state` string — One of the two-letter state abbreviations for the fifty United States and the District of Columbia (DC)
    - `key` string — An identifier for a set of requirements. A list of requirement sets can contain multiple sets with the same `key` and different `effective_from` values.
    - `label` string — Customer facing label for the requirement set, e.g. "Registrations"
    - `effective_from` string, nullable — An ISO 8601 formatted date representing the date values became effective. Some requirement sets are effective dated, while others are not. Multiple requirement sets for the same state/key can/will exist with unique effective dates. If a requirement set is has an `effective_from` value, all requirement sets with the same key will also have an `effective_from` value.
    - `requirements` TaxRequirement[]
      - `key` string — An identifier for an individual requirement. Uniqueness is guaranteed within a requirement set.
      - `applicable_if` object[] — An array of references to other requirements within the requirement set. This requirement is only applicable if all referenced requirements have values matching the corresponding `value`. The primary use-case is dynamically hiding and showing requirements as values change. E.g. Show Requirement-B when Requirement-A has been answered with `false`. To be explicit, an empty array means the requirement is applicable.
        - `key` string — An identifier for an individual requirement. Uniqueness is guaranteed within a requirement set.
        - `value` union — The required value of the requirement identified by `key`
          - boolean
          - string
          - number
      - `label` string — A customer facing description of the requirement
      - `description` string, nullable — A more detailed customer facing description of the requirement
      - `value` union — The value or "answer" for a tax requirement. Type depends on the requirement metadata type (e.g. string for text/account_number, boolean for radio/checkbox, number for percent/currency/tax_rate). Null when the requirement has not been answered.
        - boolean
        - string
        - number
      - `metadata` TaxRequirementMetadata
        - `type` 'text' | 'currency' | 'radio' | 'select' | 'percent' | 'account_number' | 'tax_rate' | 'workers_compensation_rate', required — Describes the type of requirement - each type may have additional metadata properties to describe possible values, formats, etc. - `text`: free-text input, no additional requirements - `currency`: a value representing a dollar amount, e.g. `374.55` representing `$374.55` - `radio`: choose one of options provided, see `options` - `select`: choose one of options provided, see `options` - `percent`: A decimal value representing a percentage, e.g. `0.034` representing `3.4%` - `account_number`: An account number for a tax agency, more information provided by `mask` and `prefix` - `tax_rate`: A decimal value representing a tax rate, e.g. `0.034` representing a tax rate of `3.4%`, see `validation` for additional validation guidance - `workers_compensation_rate`: A decimal value representing a percentage, see `risk_class_code`, `risk_class_description`, and `rate_type`
        - `options` object[] — [for `select` or `radio`] An array of objects describing the possible values.
          - `label` string, required — A customer facing label for the answer
          - `value` union, required — The actual value to be submitted
            - string
            - boolean
          - `short_label` string, nullable — A less verbose label that may sometimes be available
        - `risk_class_code` string — [for `workers_compensation_rate`] The industry risk class code for the rate being requested
        - `risk_class_description` string — [for `workers_compensation_rate`] A description of the industry risk class for the rate being requested
        - `rate_type` 'percent' | 'currency_per_hour' — [for `workers_compensation_rate`] The type of rate being collected. Either: - `percent`: A percentage formatted as a decimal, e.g. `0.01` for 1% - `currency_per_hour`: A dollar amount per hour, e.g. `3.24` for $3.24/hr
        - `mask` string, nullable — [for `account_number`] A pattern describing the format of the account number The mask is a sequence of characters representing the requirements of the actual account number. Each character in the mask represents a single character in the account number as follows: - `#`: a digit (`\d`) - `@`: a upper or lower case letter (`[a-zA-Z]`) - `^`: an uppercase letter (`[A-Z]`) - `%`: a digit or uppercase letter (`[0-9A-Z]`) - any other character represents the literal character Examples: - mask: `WHT-######` represents `WHT-` followed by 5 digits, e.g. `WHT-33421` - mask: `%####-^^` supports values of `75544-AB` and `Z7654-HK`
        - `prefix` string, nullable — [for `account_number`] A value that precedes the value to be collected - useful for display, but should not be submitted as part of the value. E.g. some tax agencies use an account number that is a company's federal ein plus two digits. In that case the mask would be `##` and the prefix `XXXXX1234`.
        - `validation` object — [for `tax_rate`] Describes the validation required for the tax rate
          - `type` 'one_of' | 'min_max', required — Describes the type of tax_rate validation rule
          - `min` string — [for `min_max`] The inclusive lower bound of the tax rate
          - `max` string — [for `min_max`] The inclusive upper bound of the tax rate
          - `rates` string[] — [for `one_of`] The possible, unformatted tax rates for selection. - e.g. ["0.0", "0.001"] representing 0% and 0.1%
      - `editable` boolean — Whether the value of this requirement can be updated
      - `payroll_blocking` boolean — Whether this requirement, when blank, would block payroll processing for the company in this state. Stable across changes to the field's value: a `payroll_blocking: true` field reports `true` whether currently empty or populated.
      - `default_value_applied` boolean — Whether the current `value` is a default rather than an explicitly set one.

## Other responses

- `404` — Not Found The requested resource does not exist. Make sure the provided UUID is valid.

---

[API](https://skmtc.net/gusto/apis/gusto-api.md) · [All operations](https://skmtc.net/gusto/apis/gusto-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/gusto/gusto-api/revisions/826dfa57fb3b/schema)
