---
title: "Update a salary estimate"
method: PUT
path: "/v1/salary_estimates/{uuid}"
tags: ["Salary Estimates"]
---

# Update a salary estimate

`PUT /v1/salary_estimates/{uuid}`

Update an existing salary estimate. You can modify the annual net revenue, ZIP code, and occupations.

The salary estimate must not be finalized (accepted). Once accepted, salary estimates become read-only for record-keeping purposes.

scope: `salary_estimates:write`

## Path parameters

- `uuid` string, required

## Headers

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

## Request body

- object
  - `annual_net_revenue` number, nullable — The annual net revenue of the business (must be greater than 0)
  - `zip_code` string, required — The ZIP code for location-based salary calculations
  - `occupations` object[], required — Array of occupations. Time percentages must sum to 100%.
    - `code` string, required — Bureau of Labor Statistics (BLS) occupation code
    - `experience_level` 'novice' | 'intermediate' | 'average' | 'skilled' | 'expert', required — Experience level for this occupation
    - `time_percentage` string, float, required — Percentage of time spent in this occupation (as decimal, e.g., 0.5 = 50%)
    - `primary` boolean — Whether this is the primary occupation

## Response `200`

successful

- SalaryEstimate — A salary estimate calculation for an S-Corp owner based on occupation, experience level, location, and business revenue.
  - `uuid` string, required — The UUID of the salary estimate.
  - `employee_uuid` string, nullable, required — The UUID of the employee this salary estimate is for.
  - `employee_job_uuid` string, nullable — The UUID of the employee job this salary estimate is associated with (once accepted).
  - `annual_net_revenue` string, nullable, required — The annual net revenue of the business used for salary calculations.
  - `zip_code` string, nullable, required — The ZIP code used for location-based salary calculations.
  - `result` integer, nullable — The calculated reasonable salary estimate in cents. Null if not yet calculated.
  - `accepted_at` string, date-time, nullable — The timestamp when this salary estimate was accepted and finalized.
  - `created_at` string, date-time, required — The timestamp when this salary estimate was created.
  - `updated_at` string, date-time, required — The timestamp when this salary estimate was last updated.
  - `occupations` object[], required — Array of occupations with their experience levels and time allocations.
    - `code` string, required — Bureau of Labor Statistics (BLS) occupation code.
    - `name` string — Occupation name.
    - `description` string — Occupation description.
    - `experience_level` 'novice' | 'intermediate' | 'average' | 'skilled' | 'expert', required — Experience level for this occupation.
    - `time_percentage` string, required — Percentage of time spent in this occupation (as decimal string, 0-1).
    - `primary` boolean — Whether this is the primary occupation.

## Other responses

- `404` — Not Found
- `422` — unprocessable entity - already finalized

---

[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)
