---
title: "Update a product rate plan charge with Dynamic Pricing"
method: PUT
path: "/commerce/charges"
tags: ["Commerce"]
---

# Update a product rate plan charge with Dynamic Pricing

`PUT /commerce/charges`

Update an existing product rate plan charge (PRPC). Use this API to update default pricing and/or conditional rate cards.

## Headers

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

## Request body

- UpdateChargeRequest
  - `charge` object, required — Fields to update on the product rate plan charge (PRPC). Only the properties provided will be considered for update (patch semantics). Unsupported updates are ignored by the service.
    - `id` string, required — Unique identifier of the product rate plan charge (PRPC) to update.
    - `name` string — Optional new display name for the charge.
    - `description` string — Optional new description for the charge.
    - `trigger_event` 'contract_effective' | 'service_activation' | 'customer_acceptance' — Event that triggers the charge (if update is supported).
    - `unit_of_measure` string — Unit of measure label for the charge, for example, Each, Seat. May be read-only in some tenants.
    - `default_quantity` number — Default quantity when the charge is added to a product/offer.
    - `min_quantity` number — Optional minimum quantity constraint (if supported).
    - `max_quantity` number — Optional maximum quantity constraint (if supported)
    - `list_price_base` string — List price basis (e.g., Per_Billing_Period). Typically read-only after creation.
    - `bill_cycle` object — Billing period configuration controlling frequency, alignment, and timing.
      - `type` string — Source of the default billing period, for example, default_from_customer, specific_day_of_month.
      - `day_of_month` integer — Day of month to bill when type = `specific_day_of_month`.
      - `day_of_week` string — Day of week to bill when using weekly modes.
      - `period` string — Billing period, for example, bill_cycle_period_month, bill_cycle_period_quarter.
      - `specific_period` string — Custom period text when applicable.
      - `period_alignment` string — Alignment behavior, for example, align_to_charge, align_to_term_start.
      - `timing` 'in_advance' | 'in_arrears' — Indicates whether billing occurs in advance or in arrears.
    - `pricing` union — Default (charge-level) pricing used when no rate-card row matches. Structure depends on the charge model: - flat_fee → flat_amounts - per_unit → unit_amounts - volume/tiered → tiers - discount_fixed_amount → discount_amounts - discount_percentage → discount_percentage
      - object
        - `flat_amounts` object, required — Map of currency to flat amount.
      - object
        - `unit_amounts` object, required — Map of currency to per-unit price.
      - object
        - `tiers` object[], required — Tier definitions (volume or tiered) with optional min/max caps.
          - `tier` string, required — Tier identifier, for example, "1", "2".
          - `from` number, required — Lower bound (inclusive).
          - `up_to` number, nullable — Upper bound (inclusive). Omit/null for open-ended last tier.
          - `price_format` string, required — For example, price_format_per_unit or price_format_flat_fee.
          - `unit_amounts` object — Per-unit price by currency for this tier.
          - `flat_amounts` object — Flat amount by currency for this tier (if applicable).
          - `min_amounts` object — Minimum billed amount by currency for this tier.
          - `max_amounts` object — Maximum billed amount by currency for this tier.
      - object
        - `discount_amounts` object, required — Map of currency to discount amount.
      - object
        - `discount_percentage` number, double, required — Discount percentage, for example, 15 for 15%.
    - `rate_cards` object[] — Conditional pricing rows (rate cards). Each row defines match attributes and a price to apply. If multiple rows match, the first match wins. If none match, `pricing` is used.
      - `attributes` object[], required — Match conditions that must all evaluate to true for the row to apply. Use `between` for ranges or dates.
        - `name` string, required — Attribute name, for example, Age, Region, EffectiveDate.
        - `operator` '>' | '>=' | '<' | '<=' | '==' | 'between' | 'between-inclusive' — Comparison operator.
        - `value` union — Comparison value. For `between`, provide an array of two values. The value type must align with the attribute’s declared type.
          - string
          - number
          - boolean
          - union[]
            - union
              - …
      - `pricing` union, required — Price to apply when this row matches. Structure mirrors `pricing` above.
        - object
          - `flat_amounts` object, required — Map of currency to flat amount.
        - object
          - `unit_amounts` object, required — Map of currency to per-unit price.
        - object
          - `tiers` object[], required — Tier definitions (volume or tiered) with optional min/max caps.
            - `tier` string, required — Tier identifier, for example, "1", "2".
            - `from` number, required — Lower bound (inclusive).
            - `up_to` number, nullable — Upper bound (inclusive).
            - `price_format` string, required — For example, price_format_per_unit.
            - `unit_amounts` object — Per-unit price by currency for this tier.
            - `flat_amounts` object — Flat amount by currency for this tier (if applicable).
            - `min_amounts` object — Minimum billed amount by currency for this tier.
            - `max_amounts` object — Maximum billed amount by currency for this tier.
        - object
          - `discount_amounts` object, required — Map of currency to discount amount.
        - object
          - `discount_percentage` number, double, required — Discount percentage (e.g., 15 for 15%).
    - `tax_code` string — Optional tax code to associate with the charge.
    - `tax_mode` string — Tax mode, for example, tax_exclusive, non_taxable, if supported.
    - `price_change_option` string — How price changes apply on updates, for example, no_change.
    - `use_tenant_default_for_price_change` boolean — If true, tenant defaults govern price change behavior.
    - `delivery_schedule` object — Day-of-week delivery configuration (if enabled).
    - `prepayment` object — Prepayment settings (credit option, rollover, validity).
    - `prepaid` boolean — Indicates whether the charge is prepaid.
    - `overage_options` object — Overage configuration for usage charges.
    - `accounting` AccountingRequest — Accounting fields accepted on create/update requests. Field names use snake_case. **Conditional requirement rules** - If **Allow blank Accounting Codes** = **Yes** → Accounting fields are **optional**. - If **Allow blank Accounting Codes** = **No** and the tenant **has Zuora Revenue** → **all Accounting fields except `accounting_code` are required**. - If **Allow blank Accounting Codes** = **No** and the tenant **does NOT have Zuora Revenue** → only `recognized_revenue_account` and `deferred_revenue_account` are required. These rules apply to **all operations that accept `accounting`** in the payload.
      - `accounting_code` string — An accounting code associated with the charge for reporting/ERP mapping. Typically a short code or identifier, not the GL account name.
      - `accounts_receivable_account` string — Accounts Receivable (AR) account to book invoices for this charge. Must match an existing account in the tenant's chart of accounts.
      - `accounts_receivable_account_type` string — The account type associated with `accounts_receivable_account`. Maps to the `accountsReceivableAccountType` field in the accounting object.
      - `deferred_revenue_account` string — Deferred revenue (liability) account to book revenue before recognition. Must match an existing account in the tenant's chart of accounts.
      - `deferred_revenue_accounting_type` string — Accounting method/type applied to deferred revenue. Maps to the `deferredRevenueAccountingType` field in the accounting object.
      - `recognized_revenue_account` string — The name of the account where the Account Type is "Recognized Revenue".
      - `recognized_revenue_account_type` string — The account type associated with `recognized_revenue_account`. Maps to the `recognizedRevenueAccountType` field in the accounting object.
      - `adjustment_liability_account` string — The name of the account where the Account Type is "Adjustment Liability".
      - `adjustment_liability_account_type` string — The account type associated with `adjustment_liability_account`. Maps to the `adjustmentLiabilityAccountType` field in the accounting object.
      - `adjustment_revenue_account` string — The name of the account where the Account Type is "Adjustment Revenue".
      - `adjustment_revenue_account_type` string — The account type associated with `adjustment_revenue_account`. Maps to the `adjustmentRevenueAccountType` field in the accounting object.
      - `contract_asset_account` string — The name of the account where the Account Type is "Contract Asset".
      - `contract_asset_account_type` string — The account type associated with `contract_asset_account`. Maps to the `contractAssetAccountType` field in the accounting object.
      - `contract_liability_account` string — The name of the account where the Account Type is "Contract Liability".
      - `contract_liability_account_type` string — The account type associated with `contract_liability_account`. Maps to the `contractLiabilityAccountType` field in the accounting object.
      - `contract_recognized_revenue_account` string — Recognized revenue account used specifically for contract-based recognition flows. Must match an existing account in the tenant's chart of accounts.
      - `contract_recognized_revenue_account_type` string — The account type associated with `contract_recognized_revenue_account`. Maps to the `contractRecognizedRevenueAccountType` field in the accounting object.
      - `unbilled_receivables_account` string — The name of the account where the Account Type is "Unbilled Receivables".
      - `unbilled_receivables_account_type` string — The account type associated with `unbilled_receivables_account`. Maps to the `unbilledReceivablesAccountType` field in the accounting object.
    - `revenue` object — Revenue recognition settings (rule names, timing).
    - `netsuite` object — NetSuite integration attributes for the charge.
    - `custom_fields` object — Tenant-specific custom field values on the charge.
    - `labels` object — Free-form labels/tags attached to the charge.
    - `organization_labels` object[] — Organization-level labels associated with the charge.
    - `ocm_json_by_currency` object — Offer/OCM metadata keyed by currency (internal use).
    - `attributes` object[] — Attribute declarations for Dynamic Pricing (name/type/mapping).
      - `name` string, required — Attribute name, for example, Region, Age, EffectiveDate.
      - `type` 'string' | 'integer' | 'double' | 'boolean' | 'date' | 'datetime' — Attribute data type.
      - `mapping` object — Optional mapping to resolve values from Zuora objects.
        - `object` string, required — Target Zuora object, for example, account, subscription.
        - `field` string, required — Field on the target object, for example, age__c.

## Response `200`

OK

- CreateChargeResponse
  - `accounting` AccountingResponse — Accounting fields returned by the API. `*Type` fields are derived from the tenant's chart of accounts and are read-only.
    - `accountingCode` string — An accounting code associated with the charge for reporting or ERP mapping. Typically a short code or identifier, not the GL account name.
    - `accountsReceivableAccount` string — Accounts Receivable (AR) account to book invoices for this charge. Must match an existing account in the tenant's chart of accounts.
    - `accountsReceivableAccountType` string — System-derived type/category of the AR account from the chart of accounts. Examples include "AccountsReceivable".
    - `adjustmentLiabilityAccount` string — The name of the account where the Account Type is "Adjustment Liability".
    - `adjustmentLiabilityAccountType` string — System-derived type/category of the Adjustment Liability account from the chart of accounts. Examples include "AdjustmentLiability".
    - `adjustmentRevenueAccount` string — The name of the account where the Account Type is "Adjustment Revenue".
    - `adjustmentRevenueAccountType` string — System-derived type/category of the Adjustment Revenue account from the chart of accounts. Examples include "AdjustmentRevenue".
    - `contractAssetAccount` string — The name of the account where the Account Type is "Contract Asset".
    - `contractAssetAccountType` string — System-derived type/category of the Contract Asset account from the chart of accounts.
    - `contractLiabilityAccount` string — The name of the account where the Account Type is "Contract Liability".
    - `contractLiabilityAccountType` string — System-derived type/category of the Contract Liability account from the chart of accounts. Examples include "ContractLiability".
    - `contractRecognizedRevenueAccount` string — Recognized revenue account used specifically for contract-based recognition flows. Must match an existing account in the tenant's chart of accounts.
    - `contractRecognizedRevenueAccountType` string — System-derived type/category of the Contract Recognized Revenue account from the chart of accounts.
    - `deferredRevenueAccount` string — Deferred revenue (liability) account to book revenue before recognition. Must match an existing account in the tenant's chart of accounts.
    - `deferredRevenueAccountType` string — System-derived type/category of the Deferred Revenue account from the chart of accounts.
    - `recognizedRevenueAccount` string — The name of the account where the Account Type is "Recognized Revenue".
    - `recognizedRevenueAccountType` string — System-derived type/category of the Recognized Revenue account from the chart of accounts.
    - `unbilledReceivablesAccount` string — The name of the account where the Account Type is "Unbilled Receivables".
    - `unbilledReceivablesAccountType` string — System-derived type/category of the Unbilled Receivables account from the chart of accounts.
    - `productRatePlanChargeId` string — The ID of your product rate plan charge.
  - `attributes` object[] — Attribute metadata associated with Dynamic Pricing for this charge.
  - `billCycle` object
    - `dayOfMonth` integer — Specific day of month to bill when type = specific_day_of_month.
    - `period` string — Billing period length.
    - `periodAlignment` string — How the billing period start aligns.
    - `timing` string — Whether the charge bills before or after the service period.
    - `type` string — Bill-cycle mode (inherit defaults or set specific day rules).
  - `chargeFunction` string — Internal function/category of the charge used by rating.
  - `chargeModel` string — Pricing model that determines how the amount is calculated.
  - `chargeType` string — Whether the charge recurs, rates usage, or is a one-time fee.
  - `createdById` string — User ID that created the charge record.
  - `createdTime` string, date-time — Timestamp when the charge record was created.
  - `customFields` object — Tenant-specific custom field values on the charge.
  - `deliverySchedule` object — Day-of-week delivery settings when delivery scheduling is enabled.
    - `frequency` string — Delivery frequency label for schedule rules.
    - `friday` boolean — Deliver on Friday.
    - `monday` boolean — Deliver on Monday.
    - `saturday` boolean — Deliver on Saturday.
    - `sunday` boolean — Deliver on Sunday.
    - `thursday` boolean — Deliver on Thursday.
    - `tuesday` boolean — Deliver on Tuesday.
    - `wednesday` boolean — Deliver on Wednesday.
  - `discountOptions` object — How discount charges apply and interact with other discounts.
    - `applyDetails` object[] — Per-target discount application details (if populated).
    - `applyTo` string[] — Which components or charges the discount applies to.
    - `applyToBillingPeriodPartially` boolean — Whether the discount duration can partially align to a period.
    - `reflectDiscountInNetAmount` boolean — Whether discounts reduce the net amount on invoices.
    - `rollover` boolean — Whether unused discount can roll over to future periods.
    - `stackedDiscount` boolean — Whether this discount stacks with other discounts.
  - `drawdown` object — Prepaid/drawdown configuration when using prepaid with drawdown.
  - `endDateCondition` string — Rule for when the charge ends.
  - `upToPeriodsType` string — Unit used for the fixed period when `endDateCondition` is `fixed_period`, for example, billing periods or days.
  - `upToPeriods` integer — Number of periods, in units of `upToPeriodsType`, that the charge remains active when `endDateCondition` is `fixed_period`.
  - `extendedPrice` object — Calculated extended price details (model-dependent).
  - `id` string — Unique identifier of the product rate plan charge (PRPC).
  - `isChargeLevelMinCommit` boolean — Whether a minimum commit is enforced at the charge level.
  - `isCommitted` boolean — Indicates if the charge definition is committed/finalized.
  - `labels` object — Free-form labels/tags attached to the charge.
  - `listPriceBase` string — List price basis, for example, Per Billing Period, Per Month, Per Year.
  - `specificListPriceBase` integer — The number of months for the list price base of the charge. This field is used when the value of the `ListPriceBase` field to `Per Specific Months`. The value must be a positive integer between **1** and **120** inclusive. **Notes**: - This field is available only if you have the <a href="https://knowledgecenter.zuora.com/Billing/Subscriptions/Product_Catalog/I_Annual_List_Price" target="_blank">Annual List Price</a> feature enabled. - To use this field, you must set the `X-Zuora-WSDL-Version` request header to `129` or later. Otherwise, an error occurs. - The value of this field is `null` if you do not set the value of the `ListPriceBase` field to `Per Specific Months`.
  - `mergedRateCards` object[] — Effective rate-card rows after merges (if any).
  - `name` string — Display name of the charge in the plan.
  - `negotiatedRateCards` object[] — Customer- or deal-specific rate-card rows applied by negotiation.
  - `netsuite` object — NetSuite integration attributes mapped for this charge.
  - `ocmJsonByCurrency` object — Offer/OCM metadata keyed by currency (internal use).
  - `organizationLabels` string[] — Organization-level labels associated with the charge.
  - `overageOptions` object — Overage settings for usage charges.
    - `includedUnits` number — Included units before overage starts.
    - `unusedUnitsCreditRates` object — Credit rates for unused units (by currency).
  - `prepaid` boolean — Indicates whether the charge is prepaid.
  - `prepayment` object — Prepayment handling and rollover behavior.
    - `creditOption` string — How prepayment credits are applied (if supported).
    - `rollover` boolean — Whether unused prepayment rolls over.
    - `rolloverApply` string — Order in which rollover is applied (e.g., apply_last).
    - `rolloverPeriodLength` integer — Length of each rollover period.
    - `rolloverPeriods` integer — Number of rollover periods allowed.
  - `priceChangeOption` string — How price changes are applied across renewals/amendments.
  - `pricing` object — Default (charge-level) price configuration by model/currency.
    - `adjustments` object — Price adjustments metadata.
    - `discountAmounts` object — Fixed discount amounts by currency.
    - `discountPercentages` object — Percentage discount values by currency.
    - `flatAmounts` object — Flat amounts by currency for flat-fee pricing.
    - `maxAmounts` object — Maximum caps by currency.
    - `minAmounts` object — Minimum charges by currency.
    - `percentages` object — Percentage price values by currency (model-dependent).
    - `tiers` object[] — Tier definitions for tiered/volume pricing.
    - `unitAmounts` object — Per-unit amounts by currency for per-unit/usage pricing.
  - `pricingSummary` string[] — Human-readable price summary strings, for example, USD100.
  - `pricingWaterfalls` object — Detailed pricing/waterfall breakdown (if available).
  - `productChargeDefinitions` object[] — Underlying charge definitions referenced for pricing lookup.
  - `productRatePlanChargeNumber` string — PRPC number.
  - `productRatePlanId` string — ID of the plan (PRP) that owns this charge.
  - `prorationOption` string — How proration is handled relative to tenant defaults.
  - `rateCards` object[] — Dynamic Pricing rate-card rows configured on the charge.
  - `revenue` object — Revenue policy settings for this charge.
    - `excludeItemBillingFromRevenueAccounting` boolean — If true, item billing is excluded from revenue accounting.
    - `excludeItemBookingFromRevenueAccounting` boolean — If true, item booking is excluded from revenue accounting.
    - `legacyReporting` boolean — Indicator for legacy revenue reporting behaviors.
    - `revenueRecognitionRuleName` string — Name of the revenue rule to apply, for example, "Recognize upon invoicing".
  - `taxCode` string — Tax code applied to the charge (for example, a tax category code).
  - `taxMode` string — Tax mode for the charge.
  - `taxable` boolean — Whether the charge is taxable.
  - `triggerEvent` string — Event that triggers the charge.
  - `unitOfMeasure` string — Unit of measure used for pricing (for example, Each, Seats).
  - `updatedById` string — User ID that last updated the charge record.
  - `updatedTime` string, date-time — Timestamp when the charge record was last updated.
  - `useTenantDefaultForPriceChange` boolean — Whether tenant defaults govern price change behavior.

## 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/d2e622aeaf30/schema)
