---
title: "Update overtime policy"
method: PUT
path: "/v2/overtime_policies/{overtime_policy_id}"
tags: ["overtime_policies"]
---

# Update overtime policy

`PUT /v2/overtime_policies/{overtime_policy_id}`

## Request

- Base URL: `https://api.hubstaff.com`
- URL: `https://api.hubstaff.com/v2/overtime_policies/{overtime_policy_id}`
- Auth: OAuth 2
  - Authorization code: `https://account.hubstaff.com/authorizations/new`
  - Token URL: `https://account.hubstaff.com/access_tokens` scopes: `hubstaff:read`, `hubstaff:write`
- TypeScript: <https://skmtc.dev/hubstaff/apis/hubstaff-v2-api/docs/v2/overtime_policies/:overtime_policy_id/put.ts> (a function with typed inputs; its response is checked against the schema)

Updates an overtime policy. Only pass in the fields you want to change.

**Updatable fields:** `name`, `threshold`, `pay_rate_multiplier`, `auto_add_new_users`,
`notification_enabled`, `notification_role_ids`, and `user_ids` (member assignments).

**Immutable after creation:** `policy_type`. Editing an archived policy is not allowed.

Changes apply at the start of the organization's next week (for `weekly` policies) or
the next day (for `daily` policies). A policy that is already in use is not edited in
place — a new version is created and the current one is archived.

A member can only belong to one policy of a given type at a time. If any member in
`user_ids` is already assigned to another active policy of the same type, the request
fails unless `override` is `true`, in which case those members are moved into this policy.

Only organization Owners and Managers may use this endpoint.

## Path parameters

- `overtime_policy_id` integer, required

## Request body

- PutV2OvertimePoliciesOvertimePolicyId: Update overtime policy
  - `name` string: Policy name (2-50 characters)
  - `policy_type` 'daily' | 'weekly': Cannot be changed once the policy is created
  - `threshold` number, float: Hours worked per period before overtime applies
  - `pay_rate_multiplier` number, float: Pay rate multiplier after the threshold
  - `user_ids` integer[]: User IDs to set as the policy members
  - `auto_add_new_users` boolean: Automatically add new members to this policy
  - `notification_enabled` boolean: Whether overtime notifications are sent
  - `notification_role_ids` string[]: Roles notified about overtime
  - `starts_on` string, date: Scheduled start date (period-aligned)
  - `override` boolean: When assigning members, move any who are already on another active policy of the same type into this one. Without it, the request fails if any assigned member is already on such a policy.

## Response `200`

An overtime policy

- object
  - `overtime_policy` OvertimePolicy: OvertimePolicy model
    - `id` integer, required: Overtime policy ID
    - `organization_id` integer, required: Organization ID
    - `created_at` string, date-time, required: When the record was created
    - `updated_at` string, date-time, required: When the record was last updated
    - `name` string, required: Policy name
    - `policy_type` string, required: How the threshold is evaluated: weekly or daily
    - `status` string, required: Policy status: active, pending, expiring or archived
    - `threshold` number, float, required: Hours per period before time counts as overtime
    - `pay_rate_multiplier` string, required: Pay rate multiplier after the threshold
    - `bill_rate_multiplier` string, required: Bill rate multiplier after the threshold
    - `since` string, date-time, required: When the policy becomes effective
    - `until` string, date-time, required: When the policy expires (null while open)
    - `auto_add_new_users` boolean, required: Automatically add new members to this policy
    - `notification_enabled` boolean, required: Whether overtime notifications are sent
    - `notification_role_ids` unknown, required
    - `superseded_by_id` integer: ID of the policy that replaced this one
    - `editable` boolean, required: Whether the policy can still be edited
    - `locked` boolean, required: Whether the policy is in use and read-only
    - `user_ids` unknown, required

## Other responses

- `400`: Invalid parameters
- `401`: Unauthorized
- `403`: API access is only for organizations on an active plan
- `404`: Could not find record
- `429`: Rate limit exceeded

## Changes

- **2026-11-06** `c6b90e4e4bdc`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/hubstaff/apis/hubstaff-v2-api/changes/v2/overtime_policies/:overtime_policy_id/put.md)

---

[API](https://skmtc.dev/hubstaff/apis/hubstaff-v2-api.md) - [All operations](https://skmtc.dev/hubstaff/apis/hubstaff-v2-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hubstaff/apis/hubstaff-v2-api/revisions/c6b90e4e4bdc?raw)
