---
title: "Create a time off policy"
method: POST
path: "/v1/companies/{company_uuid}/time_off_policies"
tags: ["Time Off Policies"]
---

# Create a time off policy

`POST /v1/companies/{company_uuid}/time_off_policies`

Create a time off policy

scope: `time_off_policies:write`

## Path parameters

- `company_uuid` string, required

## Headers

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

## Request body

- TimeOffPolicyRequest — Base Request Objectfor creating or updating a time off policy
  - `name` string, required — Name of the time off policy
  - `policy_type` 'vacation' | 'sick', required — Type of the time off policy. Currently only "vacation" and "sick" are supported
  - `accrual_method` 'unlimited' | 'per_pay_period' | 'per_calendar_year' | 'per_anniversary_year' | 'per_hour_worked' | 'per_hour_worked_no_overtime' | 'per_hour_paid' | 'per_hour_paid_no_overtime', required — Accrual method of the time off policy
  - `accrual_rate` string, nullable — The rate at which the time off hours will accrue for an employee on the policy. Represented as a float, e.g. "40.0".
  - `accrual_rate_unit` string, nullable — The number of hours an employee has to work or be paid for to accrue the number of hours set in the accrual rate. Only used for hourly policies (per_hour_paid, per_hour_paid_no_overtime, per_hour_work, per_hour_worked_no_overtime). Represented as a float, e.g. "40.0".
  - `paid_out_on_termination` boolean — Boolean representing if an employee's accrued time off hours will be paid out on termination. If accrual_method is unlimited, then paid_out_on_termination must be `false`.
  - `accrual_waiting_period_days` integer, nullable — Number of days before an employee on the policy will begin accruing time off hours. If accrual_method is per_anniversary_year, per_calendar_year, or unlimited, then accrual_waiting_period_days should be 0.
  - `carryover_limit_hours` string, nullable — The max number of hours an employee can carryover from one year to the next. If accrual_method is unlimited, then carryover_limit_hours must be blank.
  - `max_accrual_hours_per_year` string, nullable — The max number of hours an employee can accrue in a year. If accrual_method is yearly (per_anniversary_year, per_calendar_year) or unlimited, then max_accrual_hours_per_year must be blank.
  - `max_hours` string, nullable — The max number of hours an employee can accrue. If accrual_method is unlimited, then max_hours must be blank.
  - `policy_reset_date` string, nullable — The date the policy resets. Format MM-DD
  - `complete` boolean — boolean representing if a policy has completed configuration

## Response `201`

created

- TimeOffPolicy — Representation of a Time Off Policy
  - `uuid` string, required — Unique identifier of a time off policy
  - `company_uuid` string, required — Unique identifier for the company owning the time off policy
  - `name` string, required — Name of the time off policy
  - `policy_type` 'vacation' | 'sick' | 'bereavement' | 'custom' | 'floating_holiday' | 'jury_duty' | 'learning_and_development' | 'parental_leave' | 'personal_day' | 'volunteer' | 'weather', required — Type of the time off policy. Only "vacation" and "sick" can be created through the API, but other types may be present if the company was previously a Gusto.com customer.
  - `accrual_method` string, required — Policy time off accrual method
  - `accrual_rate` string, float, nullable — The rate at which the time off hours will accrue for an employee on the policy. Represented as a float, e.g. "40.0".
  - `accrual_rate_unit` string, float, nullable — The number of hours an employee has to work or be paid for to accrue the number of hours set in the accrual rate. Only used for hourly policies (per_hour_paid, per_hour_paid_no_overtime, per_hour_work, per_hour_worked_no_overtime). Represented as a float, e.g. "40.0".
  - `paid_out_on_termination` boolean — Boolean representing if an employee's accrued time off hours will be paid out on termination
  - `accrual_waiting_period_days` integer, nullable — Number of days before an employee on the policy will begin accruing time off hours
  - `carryover_limit_hours` string, float, nullable — The max number of hours an employee can carryover from one year to the next
  - `max_accrual_hours_per_year` string, float, nullable — The max number of hours an employee can accrue in a year
  - `max_hours` string, float, nullable — The max number of hours an employee can accrue
  - `policy_reset_date` string, nullable — The date the policy resets. Format MM-DD
  - `complete` boolean — boolean representing if a policy has completed configuration
  - `version` string, nullable — The current version of the object. See the [versioning guide](https://docs.gusto.com/embedded-payroll/docs/versioning#object-layer) for information on how to use this field. The version will be null if the policy is no longer active.
  - `is_active` boolean, required — boolean representing if a policy is active or not
  - `employees` object[], required — List of employee UUIDs under a time off policy
    - `uuid` string
    - `balance` string — The time off balance for the employee

## Other responses

- `404` — Not Found
- `422` — Policy name required

---

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