---
title: "Create a salary estimate for an employee"
method: POST
path: "/v1/employees/{employee_id}/salary_estimates"
tags: ["Salary Estimates"]
---

# Create a salary estimate for an employee

`POST /v1/employees/{employee_id}/salary_estimates`

## Request

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

Create a salary estimate for an employee. This endpoint helps calculate a reasonable salary for S Corp owners based on their occupation, experience level, location, and business revenue.

A salary estimate must include:
- Annual net revenue of the business
- ZIP code for location-based salary data
- One or more occupations with experience levels and time percentages (must sum to 100%)

Only one in-progress salary estimate can exist per employee at a time. If an in-progress estimate already exists, you must either accept it or use the update endpoint.

scope: `salary_estimates:write`

## Path parameters

- `employee_id` 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., 1.0 = 100%)
    - `primary` boolean: Whether this is the primary occupation

## Response `201`

successfully created

- 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 - invalid parameters

---

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