# Update a product

> PATCH /products/{product_id}

Source: https://docs.trykintsugi.com/reference/2026-07-21/update-a-product

PATCH /products/{product_id}

Update a product

Update a product's editable fields. This is a partial update: only the fields you send with a non-null value change; any field you omit or send as null is left as-is. `externalId` must stay unique per organization; reusing another product's value returns 409. `productCategory` and `productSubcategory` must resolve to a supported tax code or the request returns 400. `taxExempt` is honored when the category is unchanged; on a recategorize the exemption is derived from the new category and the sent value is ignored, and an exempt category is always tax-exempt. `source` is not editable. Returns 404 if the product does not exist, is archived, or belongs to an organization your credential cannot access.

Category: Products

Path parameters:
product_id (string, required) - The unique identifier of the product.

Request body:
externalId (string) - New stable identifier for the product. Must stay unique per organization and source; a value already used by another product returns 409 Conflict. Omit it or send null to leave it unchanged; an empty string is rejected.
name (string) - New human-readable product name. Omit it or send null to leave it unchanged; an empty string is rejected.
description (string) - New product description. Send an empty string to clear it. Omit it or send null to leave it unchanged.
productCategory (PublicProductCategoryEnum) - New top-level tax category. Together with productSubcategory it resolves to a product tax code; an unrecognized pair returns 400. Omit it or send null to leave it unchanged.
  allowed values: Digital, Misc, Physical, Services
productSubcategory (string) - New tax subcategory display label within the category (e.g. 'General Clothing'). Together with productCategory it resolves to a product tax code; an unrecognized pair returns 400. Omit it or send null to leave it unchanged; an empty string is rejected.
status (PublicProductCreateStatusEnum) - New approval status of the product's tax classification. ARCHIVED is not accepted here: archive a product with DELETE /products/{id}. Omit it or send null to leave it unchanged.
  allowed values: APPROVED, PARTIALLY_APPROVED, PENDING
[truncated, see the reference page]

---

Index of every page: https://docs.trykintsugi.com/llms.txt
