---
title: "Update Client"
method: PUT
path: "/clients/{client_id}"
tags: ["Clients"]
---

# Update Client

`PUT /clients/{client_id}`

Update an existing client. Only the fields supplied in the body are modified.

## Path parameters

- `client_id` number, required

## Request body

- ClientRequestUpdateRequest
  - `name` string
  - `projects` string[] — Project encoded IDs to assign to the client.
  - `lineItemMask` string — Template for generated invoice line-item names.
  - `defaultTax` object — Default tax for the client's invoices.
    - `id` integer — Tax ID from a connected accounting integration.
    - `rate` number — Tax rate as a percentage.
  - `defaultDiscount` number — Default discount rate as a percentage (0-100).
  - `paymentDueDays` integer — Default invoice payment term in days (0-365).
  - `reference` string
  - `invoicePublicNotes` string
  - `businessDetails` string
  - `billingDetails` ClientBillingDetails — Client billing details (all fields optional).
    - `companyName` string, nullable
    - `vatNumber` string, nullable
    - `addressLine1` string, nullable
    - `addressLine2` string, nullable
    - `city` string, nullable
    - `state` string, nullable
    - `postcode` string, nullable
    - `country` string, nullable — ISO 3166-1 alpha-2 country code.
    - `contactName` string, nullable
    - `contactPhone` string, nullable
    - `contactEmail` string, nullable
    - `peppolEndpointId` string, nullable
    - `peppolEndpointScheme` string, nullable
    - `peppolMeansCode` string, nullable
    - `bankAccountNumber` string, nullable
    - `bankAccountRoutingNumber` string, nullable
    - `bankAccountHolderName` string, nullable
  - `excludedLabels` string[] — Labels excluded from invoicing (max 8).
  - `email` string[] — Invoice recipient email addresses (max 10).
  - `status` 'active' | 'archived' | 'deleted' — Client status (update only).

## Response `200`

OK

- Client
  - `id` number, required
  - `name` string, required
  - `projects` string[], required — List of projects ID
  - `businessDetails` string, nullable
  - `budget` ClientBudget
    - `type` 'money' | 'time' | 'costs', required — Budget Type
    - `budget` number, required — Budget value in cents (for money) or seconds (for time)
    - `period` 'general' | 'monthly' | 'weekly' | 'daily' | 'quarterly' | 'yearly', required — Budget periodicity (overall, monthly, weekly, daily)
    - `appliedFrom` string, nullable — Start budget from (available only for non-recurrent budgets)
    - `disallowOverbudget` boolean
    - `excludeUnbillableTime` boolean
    - `excludeExpenses` boolean
    - `threshold` number — Email admins when threshold reached. Threshold is percentage 1 - 100.
    - `progress` number — Current budget usage in cents (for money) or seconds (for time)

## Other responses

- `401` — Unauthorized

---

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