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

# Update a product rate plan

`PUT /commerce/plans`

Updates an existing Product Rate Plan (PRP) in the Product Catalog. 
Use this API to update core plan fields such as name, description, grade, and effective dates.

## Headers

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

## Request body

- UpdatePlanRequest — Request body for updating a Product Rate Plan (PRP).
  - `id` string, required — Unique identifier of the Product Rate Plan to update.
  - `name` string — Rate plan name.
  - `description` string — Rate plan description.
  - `grade` integer — Plan grade or display rank used for ordering in catalogs or UIs.
  - `startDate` string, date — Rate plan effective start date (UTC, YYYY-MM-DD).
  - `endDate` string, date — Rate plan effective end date (UTC, YYYY-MM-DD).

## Response `200`

OK

- UpdatePlanResponse — Product Rate Plan record returned after a successful update.
  - `id` string — Unique identifier of the Product Rate Plan (PRP).
  - `name` string — Rate plan name.
  - `description` string — Rate plan description.
  - `productId` string — Owning product ID.
  - `productRatePlanNumber` string — Rate plan number.
  - `startDate` string, date — Rate plan effective start date (UTC, YYYY-MM-DD).
  - `endDate` string, date — Rate plan effective end date (UTC, YYYY-MM-DD).
  - `state` string — Current rate plan state.
  - `status` string — Rate plan status.
  - `activeCurrencies` string[] — Currencies with active pricing.
  - `displayName` string — Product rate plan display name.
  - `attributes` object[] — Attribute definitions associated with the plan.
  - `contextFilters` object[] — Context filters at the plan level.
  - `entitlements` object[] — Entitlements linked to the plan.
  - `externalIdSourceSystem` string — External ID source system.
  - `externalRateplanId` string[] — External plan identifiers.
  - `netsuite` object — Netsuite integration attributes.
  - `organizationLabels` string[] — Organization labels.
  - `customFields` object — Custom fields at the plan level.
  - `productRatePlanCharges` object[] — Charges (PRPCs) that belong to this product rate plan.
    - `id` string — Unique identifier of the Product Rate Plan Charge (PRPC).
    - `name` string — Charge name.
    - `chargeType` string — Charge type.
    - `chargeModel` string — Charge model.
    - `listPriceBase` string — Indicates how list price is interpreted.
    - `triggerEvent` string — Event that triggers the charge.
    - `billCycle` object — Billing cycle configuration.
    - `pricing` object — Pricing configuration for the charge.
    - `prepayment` object — Prepayment options for the charge (when applicable).
    - `taxMode` string — Tax mode for this charge, for example, non_taxable or taxable.
    - `taxable` boolean — Indicates whether the charge is taxable.
    - `createdById` string — ID of the user who created the charge.
    - `createdTime` string, date-time — Timestamp when the charge was created.
    - `updatedById` string — ID of the user who last updated the charge.
    - `updatedTime` string, date-time — Timestamp when the charge was last updated.
    - `accounting` object — Accounting configuration for the charge (for example, account mappings and posting preferences).
    - `attributes` object[] — Attribute definitions bound to this charge (used for dynamic pricing or evaluation).
    - `customFields` object — Custom fields on the charge.
    - `deliverySchedule` object — Delivery schedule settings, for example, frequency and applicable days.
    - `discountOptions` object — Discount configuration for this charge, including scope, stacking, and net-amount reflection.
    - `drawdown` object — Drawdown configuration for consuming balances or entitlements.
    - `endDateCondition` string — Defines when the charge ends, for example, subscription_end or after a term.
    - `extendedPrice` object — Calculated extended price details, if applicable.
    - `isChargeLevelMinCommit` boolean — Indicates whether a minimum commitment is enforced at the charge level.
    - `isCommitted` boolean — Indicates whether this charge is part of a committed contract.
    - `labels` object — Key-value metadata labels associated with the charge.
    - `mergedRateCards` object[] — Effective rate card entries after merging default and negotiated cards.
    - `negotiatedRateCards` object[] — Customer- or segment-specific negotiated rate card entries.
    - `ocmJsonByCurrency` object — Per-currency pricing/configuration metadata in JSON format.
    - `organizationLabels` string[] — Organization labels attached to the charge.
    - `overageOptions` object — Overage configuration, for example, included units and unused-unit credit rates.
    - `prepaid` boolean — Indicates whether the charge is prepaid.
    - `priceChangeOption` string — How price changes are handled on updates, for example, no_change.
    - `pricingSummary` string[] — Human-readable pricing summary lines.
    - `pricingWaterfalls` object — Pricing source breakdown, for example, base price vs. segment price.
    - `productChargeDefinitions` object[] — Charge definition objects that specify pricing and behavioral rules.
    - `productRatePlanChargeNumber` string — Charge number (PRPC number) for this charge.
    - `productRatePlanId` string — Owning Product Rate Plan ID.
    - `prorationOption` string — Proration behavior for this charge.
    - `rateCards` object[] — Associated rate card definitions used for dynamic or segmented pricing.
    - `revenue` object — Revenue recognition configuration, for example, rules and codes.
    - `taxCode` string — Tax code applied to the charge for taxation purposes.
  - `createTime` string, date-time — Plan creation time.
  - `updateTime` string, date-time — Plan update time.
  - `createdBy` string — ID of the user who created the plan.
  - `updatedBy` string — ID of the user who updated the plan.

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