# Create a product with plans and charges Create a product in the Product Catalog with one or more plans and charges. Charges can be usage (per-unit), recurring (flat fee), or other supported models. Endpoint: POST /commerce/products Version: 2026-02-20 Security: bearerAuth ## Header parameters: - `Idempotency-Key` (string) Specify a unique idempotency key if you want to perform an idempotent POST or PATCH request. Do not use this header in other request types. With this header specified, the Zuora server can identify subsequent retries of the same request using this value, which prevents the same operation from being performed multiple times by accident. - `Accept-Encoding` (string) Include the Accept-Encoding: gzip header to compress responses as a gzipped file. It can significantly reduce the bandwidth required for a response. If specified, Zuora automatically compresses responses that contain over 1000 bytes of data, and the response contains a Content-Encoding header with the compression algorithm so that your client can decompress it. - `Content-Encoding` (string) Include the Content-Encoding: gzip header to compress a request. With this header specified, you should upload a gzipped file for the request payload instead of sending the JSON payload. - `Zuora-Entity-Ids` (string) An entity ID. If you have Zuora Multi-entity enabled and the OAuth token is valid for more than one entity, you must use this header to specify which entity to perform the operation in. If the OAuth token is only valid for a single entity, or you do not have Zuora Multi-entity enabled, you should not set this header. - `Zuora-Org-Ids` (string) Comma separated IDs. If you have Zuora Multi-Org enabled, you can use this header to specify which orgs to perform the operation in. If you do not have Zuora Multi-Org enabled, you should not set this header. The IDs must be a sub-set of the user's accessible orgs. If you specify an org that the user does not have access to, the operation fails. This header is important in Multi-Org (MO) setups because it defines the organization context under which the API should operate—mainly used for read access or data visibility filtering. If the header is not set, the operation is performed in scope of the user's accessible orgs. - `Zuora-Track-Id` (string) A custom identifier for tracing the API call. If you set a value for this header, Zuora returns the same value in the response headers. This header enables you to associate your system process identifiers with Zuora API calls, to assist with troubleshooting in the event of an issue. The value of this field must use the US-ASCII character set and must not include any of the following characters: colon (:), semicolon (;), double quote ("), and quote ('). ## Request fields (application/json): - `name` (string, required) Product name. Example: "New prod" - `sku` (string) The stock keeping unit (SKU) associated with the product or invoice item. Example: "SKU-12345" - `product_number` (string) The product number that uniquely identifies the product in the product catalog. Example: "PROD-001" - `start_date` (string, required) Product effective start date (UTC, YYYY-MM-DD). Example: "2024-01-01" - `end_date` (string, required) Product effective end date (UTC, YYYY-MM-DD). Example: "2050-12-31" - `category` (string, required) Product category. Enum: "base", "add_on", "other" - `plans` (array, required) Product rate plans to create under the product. - `plans.name` (string, required) Rate plan name. Example: "Consumer Bronze Monthly 2" - `plans.start_date` (string, required) Rate plan effective start date (UTC, YYYY-MM-DD). Example: "2024-01-01" - `plans.end_date` (string, required) Rate plan effective end date (UTC, YYYY-MM-DD). Example: "2050-12-31" - `plans.active_currencies` (array, required) ISO currency codes enabled for this plan. Example: ["USD"] - `plans.charges` (array, required) Charges to create under this rate plan. - `plans.charges.name` (string, required) Charge name. Example: "Data Usage Charge" - `plans.charges.charge_type` (string, required) Charge type. Enum: "one_time", "recurring", "usage" - `plans.charges.charge_model` (string, required) Charge model. Enum: "flat_fee", "per_unit", "overage", "volume", "tiered", "tiered_overage", "discount_fixed_amount", "discount_percentage", "custom_charge_model", "delivery", "minimum_commitment_true_up", "calculated", "high_water_mark_volume_pricing", "high_water_mark_tiered_pricing", "multi_attribute_pricing", "prerated_pricing", "prerated_per_unit" - `plans.charges.unit_of_measure` (string) Unit of measure for per-unit or usage charges. Example: "Each" - `plans.charges.list_price_base` (string) List price base for the charge. Enum: "Per_Billing_Period", "Per_Month", "Per_Week", "Per_Year", "Per_Specific_Months", "Per_Validity_Period" - `plans.charges.default_quantity` (number) Default quantity for this charge on subscriptions created from the plan. Example: 1 - `plans.charges.min_quantity` (number) Minimum quantity allowed for this charge. Equivalent to the MinQuantity field in the legacy v1 Product Rate Plan Charge. Example: 1 - `plans.charges.max_quantity` (number) Maximum quantity allowed for this charge. Equivalent to the MaxQuantity field in the legacy v1 Product Rate Plan Charge. Example: 999999 - `plans.charges.pricing` (object) Default (standard) pricing defined at the charge level. Provide exactly one structure per the charge model. - `plans.charges.bill_cycle` (object, required) Billing configuration of the charge. - `plans.charges.bill_cycle.type` (string, required) Determines how the billing day is selected for this charge. Enum: "default_from_customer", "specific_day_of_month", "subscription_start_day", "charge_trigger_day", "specific_day_of_week", "term_start_day", "term_end_day" - `plans.charges.bill_cycle.period` (string, required) Length of each billing period. Enum: "bill_cycle_period_month", "bill_cycle_period_quarter", "bill_cycle_period_semi_annual", "bill_cycle_period_annual", "bill_cycle_period_eighteen_months", "bill_cycle_period_two_years", "bill_cycle_period_three_years", "bill_cycle_period_five_years", "bill_cycle_period_specific_months", "bill_cycle_period_subscription_term", "bill_cycle_period_week", "bill_cycle_period_specific_weeks", "bill_cycle_period_specific_days" - `plans.charges.bill_cycle.period_alignment` (string, required) How the billing period start aligns. Enum: "align_to_charge", "align_to_subscription_start", "align_to_term_start", "align_to_term_end" - `plans.charges.bill_cycle.timing` (string) When the charge is billed relative to the service period. Enum: "in_advance", "in_arrears" - `plans.charges.bill_cycle.day_of_month` (integer) Required if "type" is specific_day_of_month. Example: 5 - `plans.charges.bill_cycle.day_of_week` (string) Used when "type" is specific_day_of_week. Enum: "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" - `plans.charges.bill_cycle.specific_period` (string) Optional specific period value when period is bill_cycle_period_specific_months, bill_cycle_period_specific_weeks, or bill_cycle_period_specific_days. Equivalent to SpecificBillingPeriod in the legacy v1 API. - `plans.charges.trigger_event` (string, required) Event that triggers the charge. Enum: "contract_effective", "service_activation", "customer_acceptance", "specific_date" - `plans.charges.end_date_condition` (string, required) Defines when the charge ends. Enum: "subscription_end", "end_date_one_time", "fixed_period", "specific_end_date" - `plans.charges.up_to_periods_type` (string) Unit of time used when end_date_condition = fixed_period. Maps to the duration unit (billing periods, days, weeks, months, years). Enum: "billing_periods", "days", "weeks", "months", "years" - `plans.charges.up_to_periods` (integer) Number of periods used when end_date_condition = fixed_period. - `plans.charges.overage_options` (object) Configuration for overage smoothing and period-based overage calculation. Equivalent to NumberOfPeriod and related fields in the legacy v1 API. - `plans.charges.overage_options.number_of_periods` (number) Number of billing periods used for overage smoothing / calculation. - `plans.charges.price_increase_percentage` (number) Percentage used when price_change_option is set to apply a specific percentage price increase. Equivalent to PriceIncreasePercentage (v1). Example: 5 - `plans.charges.price_change_option` (string) Specifies how price changes are handled for future terms when this product or rate plan is amended. Equivalent to PriceChangeOption in the legacy v1 API. Examples include no_change, specific_percentage_value, or use_latest_product_catalog_pricing. Enum: "no_change", "specific_percentage_value", "use_latest_product_catalog_pricing" - `plans.charges.use_tenant_default_for_price_change` (boolean) When true, uses the tenant-level default setting for price change behavior instead of the charge-level price_change_option. Equivalent to UseTenantDefaultForPriceChange in the legacy v1 API. Example: true - `plans.charges.discount_options` (object) Discount configuration for discount charge models, including "Apply Discount To" and related settings. - `plans.charges.discount_options.discount_class` (string) Discount class to associate with this discount charge. - `plans.charges.discount_options.stacked_discount` (boolean) When true, this discount can stack with other discounts. - `plans.charges.discount_options.apply_to` (array) Charge types that this discount applies to. Mirrors the "One-Time / Recurring / Usage" checkboxes in the UI. Enum: "one_time", "recurring", "usage" - `plans.charges.discount_options.discount_level` (string) Level at which the discount applies (for example, subscription-level or account-level discounts). Enum: "rate_plan", "subscription", "account" - `plans.charges.discount_options.apply_to_billing_period_partially` (boolean) When true, allows the discount to apply to partial billing periods. - `plans.charges.discount_options.specific_accounting_codes` (boolean) When true, uses discount-specific accounting codes instead of inheriting from the discounted charges. Equivalent to UseDiscountSpecificAccountingCode in the legacy v1 API. - `plans.charges.discount_options.reflect_discount_in_net_amount` (boolean) When true, discount is reflected directly in the net amount (Apply To Charge Net Amount option in the UI). - `plans.charges.discount_options.rollover` (boolean) Indicates whether unused discount amounts roll over to the next billing period. - `plans.charges.discount_options.apply_details` (array) Explicit list of product charges that this discount applies to when targeting specific charges. - `plans.charges.discount_options.apply_details.applied_product_rate_plan_id` (string) ID of the target product rate plan. - `plans.charges.discount_options.apply_details.applied_product_rate_plan_charge_id` (string) ID of the target product rate plan charge. - `plans.charges.accounting` (object) 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. Example: {"accounting_code":"PRPC-REV-001","accounts_receivable_account":"Accounts Receivable","adjustment_liability_account":"adjustL-1","adjustment_revenue_account":"adjustRev-1","contract_asset_account":"CA-2","contract_liability_account":"CL-2","contract_recognized_revenue_account":"Contract Recognized Revenue","deferred_revenue_account":"Deferred Revenue","recognized_revenue_account":"ContractRevRec-1","unbilled_receivables_account":"unbilledR-1"} - `plans.charges.accounting.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. Example: "PRPC-REV-001" - `plans.charges.accounting.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. Example: "Accounts Receivable" - `plans.charges.accounting.accounts_receivable_account_type` (string) The account type associated with accounts_receivable_account. Maps to the accountsReceivableAccountType field in the accounting object. - `plans.charges.accounting.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. Example: "Deferred Revenue" - `plans.charges.accounting.deferred_revenue_accounting_type` (string) Accounting method/type applied to deferred revenue. Maps to the deferredRevenueAccountingType field in the accounting object. - `plans.charges.accounting.recognized_revenue_account` (string) The name of the account where the Account Type is "Recognized Revenue". Example: "ContractRevRec-1" - `plans.charges.accounting.recognized_revenue_account_type` (string) The account type associated with recognized_revenue_account. Maps to the recognizedRevenueAccountType field in the accounting object. - `plans.charges.accounting.adjustment_liability_account` (string) The name of the account where the Account Type is "Adjustment Liability". Example: "adjustL-1" - `plans.charges.accounting.adjustment_liability_account_type` (string) The account type associated with adjustment_liability_account. Maps to the adjustmentLiabilityAccountType field in the accounting object. - `plans.charges.accounting.adjustment_revenue_account` (string) The name of the account where the Account Type is "Adjustment Revenue". Example: "adjustRev-1" - `plans.charges.accounting.adjustment_revenue_account_type` (string) The account type associated with adjustment_revenue_account. Maps to the adjustmentRevenueAccountType field in the accounting object. - `plans.charges.accounting.contract_asset_account` (string) The name of the account where the Account Type is "Contract Asset". Example: "CA-2" - `plans.charges.accounting.contract_asset_account_type` (string) The account type associated with contract_asset_account. Maps to the contractAssetAccountType field in the accounting object. - `plans.charges.accounting.contract_liability_account` (string) The name of the account where the Account Type is "Contract Liability". Example: "CL-2" - `plans.charges.accounting.contract_liability_account_type` (string) The account type associated with contract_liability_account. Maps to the contractLiabilityAccountType field in the accounting object. - `plans.charges.accounting.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. Example: "Contract Recognized Revenue" - `plans.charges.accounting.contract_recognized_revenue_account_type` (string) The account type associated with contract_recognized_revenue_account. Maps to the contractRecognizedRevenueAccountType field in the accounting object. - `plans.charges.accounting.unbilled_receivables_account` (string) The name of the account where the Account Type is "Unbilled Receivables". Example: "unbilledR-1" - `plans.charges.accounting.unbilled_receivables_account_type` (string) The account type associated with unbilled_receivables_account. Maps to the unbilledReceivablesAccountType field in the accounting object. ## Response 200 fields (application/json): - `id` (string, required) Unique identifier of the product. Example: "7ec58fadb6f84bc18e59c7529058d941" - `name` (string, required) Product name. Example: "New prod" - `category` (string, required) Product category, for example, base or add-on. Example: "base" - `description` (string) Free-form product description. - `productNumber` (string) The product number. Example: "PC-00000105" - `sku` (string) Stock keeping unit for the product. Example: "SKU-00000135" - `startDate` (string, required) Product effective start date, for example, UTC, YYYY-MM-DD. Example: "2024-01-01" - `endDate` (string, required) Product effective end date, for example, UTC, YYYY-MM-DD. Example: "2050-12-31" - `state` (string, required) Current lifecycle state of the product. Example: "product_active" - `allowFeatureChanges` (boolean) Whether feature changes are allowed for this product. - `features` (array) List of features associated with the product. - `legacyFeatures` (array) Legacy feature list retained for backward compatibility. - `contextFilters` (array) Context filter rules that may restrict product availability. - `organizationLabels` (array) Key/value style organizational labels applied to the product. - `customFields` (object) Custom field values on the product. - `customObjects` (object,null) Custom object payloads linked to the product, if any. - `dacTags` (object) Data access control or categorization tags for the product. - `netsuite` (object,null) NetSuite integration metadata (if present). - `createdBy` (string) ID of the user who created the product. Example: "53c162482f054f3ca08e1ec82dccfec9" - `createdTime` (string) Timestamp when the product was created. Example: "2025-10-17T04:02:54.621-07:00" - `updatedBy` (string) ID of the user who last updated the product. Example: "53c162482f054f3ca08e1ec82dccfec9" - `updatedTime` (string) Timestamp when the product was last updated. Example: "2025-10-17T04:02:54.621-07:00" - `plans` (array) Rate plans (PRPs) defined under this product. - `plans.id` (string, required) Unique identifier of the product rate plan (PRP). Example: "572a2efe711b449e80cbef94419bc050" - `plans.name` (string, required) Rate plan display name. Example: "Consumer Bronze Monthly" - `plans.displayName` (string) Optional alternate display name for the plan. - `plans.description` (string) Free-form plan description. - `plans.startDate` (string, required) Plan effective start date (UTC, YYYY-MM-DD). Example: "2024-01-01" - `plans.endDate` (string, required) Plan effective end date (UTC, YYYY-MM-DD). Example: "2050-12-31" - `plans.state` (string) Current lifecycle state of the plan. Example: "active" - `plans.status` (string) Optional status when present in some responses. Example: "ACTIVE" - `plans.activeCurrencies` (array, required) ISO currency codes enabled for this plan. Example: "USD" - `plans.createTime` (string) Timestamp when the plan was created. Example: "2025-10-17T04:02:54.655-07:00" - `plans.updateTime` (string) Timestamp when the plan was last updated. Example: "2025-10-17T04:02:54.655-07:00" - `plans.createdBy` (string) ID of the user who created the plan. Example: "53c162482f054f3ca08e1ec82dccfec9" - `plans.updatedBy` (string) ID of the user who last updated the plan. Example: "53c162482f054f3ca08e1ec82dccfec9" - `plans.productId` (string) ID of the parent product for this plan. Example: "7ec58fadb6f84bc18e59c7529058d941" - `plans.productRatePlanNumber` (string) The plan number. Example: "PRP-00000198" - `plans.attributes` (array) Plan-level attribute metadata. - `plans.contextFilters` (array) Context filter rules scoped to the plan. - `plans.entitlements` (array) Entitlements included with the plan. - `plans.externalIdSourceSystem` (string) Source system identifier for the external plan ID. - `plans.externalRateplanId` (array) External plan identifier(s) from other systems. - `plans.organizationLabels` (array) Key/value style organizational labels on the plan. - `plans.customFields` (object) Custom field values on the plan. - `plans.productRatePlanCharges` (array) Charges created under this plan. - `plans.productRatePlanCharges.id` (string, required) Unique identifier of the product rate plan charge (PRPC). Example: "42db6ead399a4521bae91b3af469c074" - `plans.productRatePlanCharges.name` (string, required) Charge display name within the plan. Example: "Flat PRPC" - `plans.productRatePlanCharges.chargeModel` (string, required) Pricing model that determines how the amount is calculated. Example: "flat_fee" - `plans.productRatePlanCharges.chargeType` (string, required) Whether the charge recurs, rates usage, or is a one-time fee. Example: "recurring" - `plans.productRatePlanCharges.chargeFunction` (string) Internal function identifier for the charge. Example: "charge_function_standard" - `plans.productRatePlanCharges.productRatePlanChargeNumber` (string) The charge number. Example: "PRPC-00000283" - `plans.productRatePlanCharges.productRatePlanId` (string) ID of the parent plan for this charge. Example: "572a2efe711b449e80cbef94419bc050" - `plans.productRatePlanCharges.triggerEvent` (string) Event that triggers the charge to become billable. Example: "contract_effective" - `plans.productRatePlanCharges.endDateCondition` (string) Condition that determines when the charge ends. Example: "subscription_end" - `plans.productRatePlanCharges.upToPeriodsType` (string) Unit of time used when endDateCondition is fixed_period, for example, billing periods, days, weeks, months, or years. Example: "billing_periods" - `plans.productRatePlanCharges.upToPeriods` (integer) Number of periods used when endDateCondition is fixed_period. - `plans.productRatePlanCharges.listPriceBase` (string) Basis used for list pricing (if applicable). Example: "Per_Billing_Period" - `plans.productRatePlanCharges.specificListPriceBase` (number) Optional override for list price base when billing uses a specific period configuration. - `plans.productRatePlanCharges.billCycle` (object, required) Billing configuration of the charge. - `plans.productRatePlanCharges.billCycle.type` (string) Whether the charge inherits account defaults or uses an override. Example: "specific_day_of_month" - `plans.productRatePlanCharges.billCycle.dayOfMonth` (integer) Day of month to bill when using a specific day schedule. Example: 5 - `plans.productRatePlanCharges.billCycle.period` (string) Billing period length (for example, monthly). Example: "bill_cycle_period_month" - `plans.productRatePlanCharges.billCycle.periodAlignment` (string) How the billing period start aligns. Example: "align_to_charge" - `plans.productRatePlanCharges.billCycle.timing` (string) When the charge is billed relative to the service period. Example: "in_advance" - `plans.productRatePlanCharges.organizationLabels` (array) Key/value style organizational labels on the charge. - `plans.productRatePlanCharges.accounting` (object) Accounting fields returned by the API. *Type fields are derived from the tenant's chart of accounts and are read-only. - `plans.productRatePlanCharges.accounting.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. Example: "PRPC-REV-001" - `plans.productRatePlanCharges.accounting.accountsReceivableAccount` (string) Accounts Receivable (AR) account to book invoices for this charge. Must match an existing account in the tenant's chart of accounts. - `plans.productRatePlanCharges.accounting.accountsReceivableAccountType` (string) System-derived type/category of the AR account from the chart of accounts. Examples include "AccountsReceivable". - `plans.productRatePlanCharges.accounting.adjustmentLiabilityAccount` (string) The name of the account where the Account Type is "Adjustment Liability". Example: "adjustL-1" - `plans.productRatePlanCharges.accounting.adjustmentLiabilityAccountType` (string) System-derived type/category of the Adjustment Liability account from the chart of accounts. Examples include "AdjustmentLiability". - `plans.productRatePlanCharges.accounting.adjustmentRevenueAccount` (string) The name of the account where the Account Type is "Adjustment Revenue". Example: "adjustRev-1" - `plans.productRatePlanCharges.accounting.adjustmentRevenueAccountType` (string) System-derived type/category of the Adjustment Revenue account from the chart of accounts. Examples include "AdjustmentRevenue". - `plans.productRatePlanCharges.accounting.contractAssetAccount` (string) The name of the account where the Account Type is "Contract Asset". Example: "CA-2" - `plans.productRatePlanCharges.accounting.contractAssetAccountType` (string) System-derived type/category of the Contract Asset account from the chart of accounts. Example: "ContractAsset" - `plans.productRatePlanCharges.accounting.contractLiabilityAccount` (string) The name of the account where the Account Type is "Contract Liability". Example: "CL-2" - `plans.productRatePlanCharges.accounting.contractLiabilityAccountType` (string) System-derived type/category of the Contract Liability account from the chart of accounts. Examples include "ContractLiability". - `plans.productRatePlanCharges.accounting.contractRecognizedRevenueAccount` (string) Recognized revenue account used specifically for contract-based recognition flows. Must match an existing account in the tenant's chart of accounts. - `plans.productRatePlanCharges.accounting.contractRecognizedRevenueAccountType` (string) System-derived type/category of the Contract Recognized Revenue account from the chart of accounts. Example: "RecognizedRevenue" - `plans.productRatePlanCharges.accounting.deferredRevenueAccount` (string) Deferred revenue (liability) account to book revenue before recognition. Must match an existing account in the tenant's chart of accounts. - `plans.productRatePlanCharges.accounting.deferredRevenueAccountType` (string) System-derived type/category of the Deferred Revenue account from the chart of accounts. Example: "DeferredRevenue" - `plans.productRatePlanCharges.accounting.recognizedRevenueAccount` (string) The name of the account where the Account Type is "Recognized Revenue". Example: "ContractRevRec-1" - `plans.productRatePlanCharges.accounting.recognizedRevenueAccountType` (string) System-derived type/category of the Recognized Revenue account from the chart of accounts. Example: "RecognizedRevenue" - `plans.productRatePlanCharges.accounting.unbilledReceivablesAccount` (string) The name of the account where the Account Type is "Unbilled Receivables". Example: "unbilledR-1" - `plans.productRatePlanCharges.accounting.unbilledReceivablesAccountType` (string) System-derived type/category of the Unbilled Receivables account from the chart of accounts. Example: "UnbilledReceivables" - `plans.productRatePlanCharges.accounting.productRatePlanChargeId` (string) The ID of your product rate plan charge. Example: "2c92c0f962470b8101624b869fcd45fc" - `plans.productRatePlanCharges.discountOptions` (object) Discount behavior flags configured on the charge. - `plans.productRatePlanCharges.discountOptions.applyDetails` (array) List of granular discount application details. - `plans.productRatePlanCharges.discountOptions.applyTo` (array) Line item categories the discount applies to. - `plans.productRatePlanCharges.discountOptions.applyToBillingPeriodPartially` (boolean) Whether discount applies to partial billing periods. - `plans.productRatePlanCharges.discountOptions.reflectDiscountInNetAmount` (boolean) Whether to reflect discounts in the net amount fields. - `plans.productRatePlanCharges.discountOptions.rollover` (boolean) Whether unapplied discounts roll over. - `plans.productRatePlanCharges.discountOptions.stackedDiscount` (boolean) Whether multiple discounts can stack. - `plans.productRatePlanCharges.overageOptions` (object) Options governing overage behavior for usage charges. - `plans.productRatePlanCharges.overageOptions.includedUnits` (number) Number of units included before overages apply. - `plans.productRatePlanCharges.overageOptions.unusedUnitsCreditRates` (object) Credit rates for unused units by currency. - `plans.productRatePlanCharges.prepayment` (object) Prepayment configuration for the charge (if applicable). - `plans.productRatePlanCharges.prepayment.rollover` (boolean) Whether unused prepaid amounts roll over. - `plans.productRatePlanCharges.prepayment.rolloverApply` (string) How rollover amounts are applied. Example: "apply_last" - `plans.productRatePlanCharges.prepayment.rolloverPeriodLength` (integer) Length of the rollover period. - `plans.productRatePlanCharges.prepayment.rolloverPeriods` (integer) Number of rollover periods. - `plans.productRatePlanCharges.prorationOption` (string) Proration behavior for partial periods. Example: "default_from_tenant_setting" - `plans.productRatePlanCharges.priceChangeOption` (string) How price changes are applied to existing subscriptions. Example: "no_change" - `plans.productRatePlanCharges.taxable` (boolean) Whether the charge is taxable. - `plans.productRatePlanCharges.taxMode` (string) Tax mode classification (present on some responses). Example: "non_taxable" - `plans.productRatePlanCharges.prepaid` (boolean) Whether the charge is prepaid. - `plans.productRatePlanCharges.isCommitted` (boolean) Whether the charge is committed. - `plans.productRatePlanCharges.isChargeLevelMinCommit` (boolean) Whether a minimum commitment is enforced at the charge level. - `plans.productRatePlanCharges.useTenantDefaultForPriceChange` (boolean) Whether tenant default settings apply to price changes. Example: true - `plans.productRatePlanCharges.labels` (object) Arbitrary label metadata for the charge. - `plans.productRatePlanCharges.attributes` (array) Attribute metadata on the charge (if configured). - `plans.productRatePlanCharges.customFields` (object) Custom field values on the charge. - `plans.productRatePlanCharges.createdById` (string) ID of the user who created the charge. Example: "53c162482f054f3ca08e1ec82dccfec9" - `plans.productRatePlanCharges.createdTime` (string) Timestamp when the charge was created. Example: "2025-10-17T04:02:54.719-07:00" - `plans.productRatePlanCharges.updatedById` (string) ID of the user who last updated the charge. Example: "53c162482f054f3ca08e1ec82dccfec9" - `plans.productRatePlanCharges.updatedTime` (string) Timestamp when the charge was last updated. Example: "2025-10-17T04:02:54.719-07:00" - `plans.productRatePlanCharges.pricing` (object, required) Default (charge-level) pricing returned for the charge. - `plans.productRatePlanCharges.pricing.adjustments` (object) Price adjustments by currency or context. - `plans.productRatePlanCharges.pricing.discountAmounts` (object) Fixed discount amounts by currency. - `plans.productRatePlanCharges.pricing.discountPercentages` (object) Discount percentages by currency. - `plans.productRatePlanCharges.pricing.flatAmounts` (object) Flat fee amounts by currency. Example: {"USD":100} - `plans.productRatePlanCharges.pricing.maxAmounts` (object) Maximum amounts by currency (caps). - `plans.productRatePlanCharges.pricing.minAmounts` (object) Minimum amounts by currency (floors). - `plans.productRatePlanCharges.pricing.percentages` (object) Percentage values by currency for percentage models. - `plans.productRatePlanCharges.pricing.tiers` (array) Tier definitions for tiered/volume pricing. - `plans.productRatePlanCharges.pricing.unitAmounts` (object) Per-unit prices by currency for usage/per-unit models. - `plans.productRatePlanCharges.pricingSummary` (array) Textual summary of pricing for display purposes. - `plans.productRatePlanCharges.pricingWaterfalls` (object) Detailed pricing waterfall data (if available). - `plans.productRatePlanCharges.productChargeDefinitions` (array) Charge definition metadata linked to this PRPC. - `plans.productRatePlanCharges.rateCards` (array) Conditional rate card rules configured for the charge. - `plans.productRatePlanCharges.revenue` (object) Revenue recognition metadata for the charge. - `plans.productRatePlanCharges.revenue.excludeItemBillingFromRevenueAccounting` (boolean) Whether item billing is excluded from revenue accounting. - `plans.productRatePlanCharges.revenue.excludeItemBookingFromRevenueAccounting` (boolean) Whether item booking is excluded from revenue accounting. - `plans.productRatePlanCharges.revenue.legacyReporting` (boolean) Whether legacy reporting is enabled. - `plans.productRatePlanCharges.revenue.revenueRecognitionRuleName` (string) Revenue recognition rule applied to this charge. Example: "Recognize upon invoicing" - `plans.productRatePlanCharges.ocmJsonByCurrency` (object) Offer/charge metadata keyed by currency. - `plans.productRatePlanCharges.drawdown` (object) Drawdown configuration data (if applicable). - `plans.productRatePlanCharges.extendedPrice` (object) Extended price metadata (if present). - `plans.productRatePlanCharges.mergedRateCards` (array) Merged/compiled rate card entries after evaluation. - `plans.productRatePlanCharges.negotiatedRateCards` (array) Customer-specific negotiated rate card entries. ## Response 400 fields (application/json): - `errors` (array) - `errors.code` (string) Machine-readable error code identifying the failure type. - `errors.message` (string) Human-readable description of the error that provides more context about what went wrong. - `success` (boolean)