---
title: "Update a product"
method: PUT
path: "/commerce/products"
tags: ["Commerce"]
---

# Update a product

`PUT /commerce/products`

Updates an existing product in the Product Catalog. Use this API to update core product fields
such as name, description, category, effective dates, and custom fields.

## Headers

- `Accept-Encoding` string
- `Content-Encoding` string
- `Zuora-Track-Id` string
- `Zuora-Entity-Ids` string
- `Zuora-Org-Ids` string

## Request body

- UpdateProductRequest — Request body for updating a product in the Product Catalog.
  - `id` string, required — Unique identifier of the product to update.
  - `name` string — Product name.
  - `description` string — Product description.
  - `category` string — Product category label, for example, base, add-on.
  - `custom_fields` object — Custom fields to set on the product. Keys must match configured custom field API names. Values may be strings, numbers, booleans, or arrays depending on field definition.
  - `startDate` string, date — Product effective start date (UTC, YYYY-MM-DD).
  - `endDate` string, date — Product effective end date (UTC, YYYY-MM-DD).

## Response `200`

OK

- UpdateProductResponse — Product record returned after a successful update.
  - `id` string — Unique identifier of the product.
  - `name` string — Product name.
  - `description` string — Product description.
  - `category` string — Product category label.
  - `productNumber` string — Product number in the catalog.
  - `sku` string — Product SKU.
  - `startDate` string, date — Product effective start date (UTC, YYYY-MM-DD).
  - `endDate` string, date — Product effective end date (UTC, YYYY-MM-DD).
  - `state` string — Current product state.
  - `allowFeatureChanges` boolean — Whether features on this product can be changed.
  - `features` object[] — Product features.
  - `legacyFeatures` object[] — Legacy features associated with this product.
  - `contextFilters` object[] — Context filters applied to the product.
  - `customFields` object — Custom fields on the product.
  - `customObjects` object, nullable — Custom objects linked to this product.
  - `netsuite` object, nullable — Netsuite integration attributes.
  - `organizationLabels` string[] — Organization labels for the product.
  - `productRatePlans` object[] — Rate plans (PRPs) defined under the product.
  - `createdBy` string — ID of the user who created the product.
  - `createdTime` string, date-time — Timestamp when the product was created.
  - `updatedBy` string — ID of the user who last updated the product.
  - `updatedTime` string, date-time — Timestamp when the product was last updated.

## Other responses

- `400` — Request Errors or Unauthorized
- `401` — Unauthorized
- `500` — Internal Server Error

---

[API](https://skmtc.dev/zuora/apis/api-reference.md) · [All operations](https://skmtc.dev/zuora/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/zuora/api-reference/revisions/d11e237f3e54/schema)
