# Create a price Creates a new price for an existing plan. Endpoint: POST /prices Version: 2025-11-12 Security: bearerAuth ## Query parameters: - `fields[]` (array) Allows you to specify which fields are returned in the response. Accepted values custom_fields, created_by_id, updated_by_id, created_time, id, updated_time, tiers, charge_model, charge_type, name, description, revenue_recognition_rule, stacked_discount, recognized_revenue_accounting_code, deferred_revenue_accounting_code, accounting_code, recurring, start_event, tax_code, tax_inclusive, taxable, unit_of_measure, quantity, min_quantity, max_quantity, price_base_interval, discount_level, overage, plan_id, tiers_mode, apply_discount_to, prepayment, drawdown, discount_amounts, unit_amounts, discount_percent, amounts, price_change_percentage, price_change_option, price_increase_option Example: ["id,created_time"] - `expand[]` (array) Allows you to expand responses by including related object information in a single call. See the Expand responses section of the Quickstart API Tutorials for detailed instructions. - `filter[]` (array) A case-sensitive filter on the list. See the Filter lists section of the Quickstart API Tutorial for detailed instructions. Note that the filters on this operation are only applicable to the related objects. For example, when you are calling the "Retrieve a billing document" operation, you can use the filter[] parameter on the related objects such as filter[]=items[account_id].EQ:8ad09e208858b5cf0188595208151c63 - `page_size` (integer) The maximum number of results to return in a single page. If the specified page_size is less than 1 or greater than 99, Zuora will return a 400 error. - `price.fields[]` (array) Allows you to specify which fields are returned in the response. Accepted values custom_fields, created_by_id, updated_by_id, created_time, id, updated_time, tiers, charge_model, charge_type, name, description, revenue_recognition_rule, stacked_discount, recognized_revenue_accounting_code, deferred_revenue_accounting_code, accounting_code, recurring, start_event, tax_code, tax_inclusive, taxable, unit_of_measure, quantity, min_quantity, max_quantity, price_base_interval, discount_level, overage, plan_id, tiers_mode, apply_discount_to, prepayment, drawdown, discount_amounts, unit_amounts, discount_percent, amounts, price_change_percentage, price_change_option, price_increase_option Example: ["id,created_time"] ## Header parameters: - `zuora-track-id` (string) A custom identifier for tracking API requests. If you set a value for this header, Zuora returns the same value in the response header. This header enables you to track your 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 ("), or quote ('). - `async` (boolean) Making asynchronous requests allows you to scale your applications more efficiently by leveraging Zuora's infrastructure to enqueue and execute requests for you without blocking. These requests also use built-in retry semantics, which makes them much less likely to fail for non-deterministic reasons, even in extreme high-throughput scenarios. Meanwhile, when you send a request to one of these endpoints, you can expect to receive a response in less than 150 milliseconds and these calls are unlikely to trigger rate limit errors. If set to true, Zuora returns a 202 Accepted response, and the response body contains only a request ID. - `zuora-entity-ids` (string) An entity ID. If you have Multi-entity enabled and the authorization token is valid for more than one entity, you must use this header to specify which entity to perform the operation on. If the authorization token is only valid for a single entity or you do not have Multi-entity enabled, you do not need to set this header. - `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. This idempotency key should be a unique value, and the Zuora server identifies subsequent retries of the same request using this value. For more information, see Idempotent Requests. - `accept-encoding` (string) Include a accept-encoding: gzip header to compress responses, which can reduce the bandwidth required for a response. If specified, Zuora automatically compresses responses that contain over 1000 bytes. For more information about this header, see Request and Response Compression. - `content-encoding` (string) Include a content-encoding: gzip header to compress a request. Upload a gzipped file for the payload if you specify this header. For more information, see Request and Response Compression. ## Request fields (application/json): - `custom_fields` (object) Set of user-defined fields associated with this object. Useful for storing additional information about the object in a structured format. - `name` (string, required) The name of the price. - `description` (string) An arbitrary string attached to the object. Often useful for displaying to users. - `recognized_revenue_accounting_code` (string) An active accounting code in your Zuora chart of accounts. - `deferred_revenue_accounting_code` (string) An active accounting code in your Zuora chart of accounts. - `recurring` (object) The recurring components of a price such as interval and usage. - `recurring.recurring_on` (string) Specifies on which day or the month or day of the week a customer shall be billed. Enum: "_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8", "_9", "_10", "_11", "_12", "_13", "_14", "_15", "_16", "_17", "_18", "_19", "_20", "_21", "_22", "_23", "_24", "_25", "_26", "_27", "_28", "_29", "_30", "_31", "subscription_item_start_day", "account_cycle_date", "subscription_start_day", "term_start_day", "term_end_day", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" - `recurring.usage` (boolean) Indicates that this is a usage price. - `recurring.interval` (string) Specifies the billing frequency. One of week, month or year. Enum: "month", "year", "week", "term", "day" - `recurring.interval_count` (integer) The number of intervals (specified in the interval attribute) between subscription billings. For example, interval=month and intervalCount=3 bills every 3 months. - `recurring.alignment_behavior` (string) Specifies how to align billing for recurring (subscription) products that start on different days. Enum: "subscription_start", "term_start", "term_end", "none" - `recurring.timing` (string) You can choose to bill in_advance or in_arrears for recurring prices. The field is not used with one-time or usage-based prices. Enum: "in_advance", "in_arrears" - `recurring.duration_interval` (string) Specifies the duration frequency. One of day, week, month or year. Enum: "day", "week", "month", "year", "subscription_term", "billing_period" - `recurring.duration_interval_count` (integer) Specifies how long a customer shall be charged if this is less than the duration of the subscription - `recurring.rating_group` (string) A rating group based on which usage records are rated. Only applicable to usage prices. Enum: "billing_period", "usage_start_date", "usage_record", "usage_upload", "custom_group" - `recurring.on` (string) Specifies on which day or the month or day of the week a customer shall be billed. Enum: "_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8", "_9", "_10", "_11", "_12", "_13", "_14", "_15", "_16", "_17", "_18", "_19", "_20", "_21", "_22", "_23", "_24", "_25", "_26", "_27", "_28", "_29", "_30", "_31", "subscription_item_start_day", "account_cycle_date", "subscription_start_day", "term_start_day", "term_end_day", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" - `start_event` (string) Specifies when to start billing your customer. Enum: "contract_effective", "service_activation", "customer_acceptance", "specific_date" - `apply_discount_to` (array) Any combination of one_time, recurring and plan. Enum: "one_time", "recurring", "usage" - `tiers` (array) Price information for different tiers. When creating or updating tiered prices, you must specify this field and the tiers_mode field. - `tiers.up_to` (number) The upper bound of a tier. The lower bound of a tier is the upper bound of the previous tier plus one or some fraction of one, depending on the precision of the unit of measure. - `tiers.amounts` (object) Prices for the tier. Only set if charge_model is tiered, tiered_overage, or highwatermark_tiered. Example: {"USD":10,"GBP":15} - `tiers.unit_amounts` (object) Per unit prices for units in the tier. Only set if charge_model is tiered, tiered_overage, or highwatermark_tiered. Example: {"USD":10,"GBP":15} - `tax_code` (string) A tax code identifier. If a tax_code of a price is not provided when you create or update a price, Zuora will treat the charged amount as non-taxable. If this code is provide, Zuora considers that this price is taxable and the charged amount will be handled accordingly. - `tax_inclusive` (boolean) If this field is set to true, it indicates that amounts are inclusive of tax. - `unit_of_measure` (string) A configured unit of measure. This field is required for per-unit prices. - `quantity` (number) Quantity of the product to which your customers subscribe. - `min_quantity` (number) The minimum quantity for a price. Specify this field and the max_quantity field to create a range of quantities allowed in a price. - `max_quantity` (number) The maximum quantity for a price. Specify this field and the min_quantity field to create a range of quantities allowed in a price. - `discount_level` (string) Specifies at what level a discount should be applied: account, subscription, or plan. Enum: "account", "subscription", "plan" - `revenue_recognition_rule` (string) Determines when to recognize the revenue for this charge. You can choose to recognize upon invoicing or daily over time. - `stacked_discount` (boolean) This field is only applicable for the Percentage Discount price. This field indicates whether the discount is to be calculated as stacked discount. Possible values are as follows: true: This is a stacked discount, which should be calculated by stacking with other discounts. false: This is not a stacked discount, which should be calculated in sequence with other discounts. For more information, see Stacked discounts - `amounts` (object) Example: {"USD":10,"GBP":15} - `unit_amounts` (object) Example: {"USD":10,"GBP":15} - `discount_amounts` (object) Example: {"USD":10,"GBP":15} - `discount_percent` (number) Discount percent. Specify this field if you offer a percentage-based discount. - `price_base_interval` (string) Specifies the base interval of a price. If not provided, this field defaults to billing_period. Enum: "month", "billing_period", "week" - `revenue` (object) Accounting configuration if you have Zuora Revenue enabled. - `revenue.exclude_item_billing_from_revenue_accounting` (boolean) If set to true, any associated billing document items are excluded from the revenue accounting. - `revenue.exclude_item_booking_from_revenue_accounting` (boolean) If set to true, any associated subscription items are excluded from the revenue accounting. - `accounting_code` (string) An active accounting code defined in Finance Settings > Configure Accounting Codes in your Zuora tenant. - `prepayment` (object) - `prepayment.credit_option` (string) The way to calculate credit. See Credit Option for more information. Enum: "time_based", "consumption_based", "full_credit" - `prepayment.quantity` (number) The number of units included in a prepayment charge. - `prepayment.total_quantity` (number) The total amount of units that end customers can use during a validity period when they subscribe to a prepayment charge. - `prepayment.validity_period` (string) The period in which the prepayment units are valid to use as defined in a prepayment charge. Enum: "subscription_term", "annual", "semi_annual", "quarter", "month" - `drawdown` (object) - `drawdown.conversion_rate` (number) The conversion rate between usage unit of measure (UOM) and drawdown unit of measure for a drawdown charge. Note: Must be a positive number (>0). Must be 1 when usage UOM and drawdown UOM are the same. If both conversion_rate and unit_of_measure for the drawdown are empty, the system will set default values respectively: conversion_rate: 1 unit_of_measure: Same as the usage UOM of this drawdown charge. The conversion_rate and unit_of_measure fields need to have values or be empty at the same time. - `drawdown.unit_of_measure` (string) Unit of measurement for a drawdown charge. - `taxable` (boolean) - `price_change_percentage` (number) The percentage to increase or decrease the price of a termed subscription's renewal. - `price_change_option` (string) Applies an automatic price change when a termed subscription is renewed. Enum: "latest_catalog_pricing", "percentage", "none" - `price_increase_option` (boolean) Indicates whether to apply an automatic price change when a termed subscription is renewed. - `plan_id` (string) Specify the ID of a plan to which this price is associated. - `plan_number` (string) Specify the number of a plan to which this price is associated. This field is required if plan_id is not supplied - `custom_field_per_unit_rate` (string) Name of the custom field that will be used to set a per unit rate under the Pre-Rated Per Unit charge model - `custom_field_total_amount` (string) Name of the custom field that will be used to set a total amount under the Pre-Rated charge model - `tiers_mode` (string) Specifies the mode for tiered prices. Enum: "graduated", "volume", "high_watermark_volume", "high_watermark_graduated", "graduated_with_overage" - `overage` (object) An object defining how overage charges are calculated. - `overage.interval_count` (integer) Specifies the number of intervals used to calculate smoothed overage charges. - `overage.type` (string) Represents the overage type: one of rolling_window or rollover. Enum: "rolling_window", "rollover" - `overage.included_units` (number) Specifies the included units to which overage charges do not apply. - `overage.credit_unused_units` (boolean) Specifies whether or not to credit unused units. - `overage.apply_at_end_of_smoothing_period` (boolean) Indicates if the overage price is calculated at the end of the smoothing period. ## Response 201 fields (application/json): - `id` (string) Unique identifier for the object. - `updated_by_id` (string) Unique identifier of the Zuora user who last updated the object - `updated_time` (string) The date and time when the object was last updated in ISO 8601 UTC format. - `created_by_id` (string) Unique identifier of the Zuora user who created the object - `created_time` (string) The date and time when the object was created in ISO 8601 UTC format. - `custom_fields` (object) Set of user-defined fields associated with this object. Useful for storing additional information about the object in a structured format. - `custom_objects` (object) The custom objects associated with a Zuora standard object. - `name` (string) The name of the price. - `description` (string) An arbitrary string attached to the object. Often useful for displaying to users. - `recognized_revenue_accounting_code` (string) An active accounting code in your Zuora chart of accounts. - `deferred_revenue_accounting_code` (string) An active accounting code in your Zuora chart of accounts. - `recurring` (object) The recurring components of a price such as interval and usage. - `recurring.recurring_on` (string) Specifies on which day or the month or day of the week a customer shall be billed. Enum: "_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8", "_9", "_10", "_11", "_12", "_13", "_14", "_15", "_16", "_17", "_18", "_19", "_20", "_21", "_22", "_23", "_24", "_25", "_26", "_27", "_28", "_29", "_30", "_31", "subscription_item_start_day", "account_cycle_date", "subscription_start_day", "term_start_day", "term_end_day", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" - `recurring.usage` (boolean) Indicates that this is a usage price. - `recurring.interval` (string) Specifies the billing frequency. One of week, month or year. Enum: "month", "year", "week", "term", "day" - `recurring.interval_count` (integer) The number of intervals (specified in the interval attribute) between subscription billings. For example, interval=month and intervalCount=3 bills every 3 months. - `recurring.alignment_behavior` (string) Specifies how to align billing for recurring (subscription) products that start on different days. Enum: "subscription_start", "term_start", "term_end", "none" - `recurring.timing` (string) You can choose to bill in_advance or in_arrears for recurring prices. The field is not used with one-time or usage-based prices. Enum: "in_advance", "in_arrears" - `recurring.formula` (string) You can choose to bill in_advance or in_arrears for recurring prices. The field is not used with one-time or usage-based prices. - `recurring.duration_interval` (string) Specifies the duration frequency. One of day, week, month or year. Enum: "day", "week", "month", "year", "subscription_term", "billing_period" - `recurring.duration_interval_count` (integer) Specifies how long a customer shall be charged if this is less than the duration of the subscription - `recurring.rating_group` (string) A rating group based on which usage records are rated. Only applicable to usage prices. Enum: "billing_period", "usage_start_date", "usage_record", "usage_upload", "custom_group" - `recurring.on` (string) Specifies on which day or the month or day of the week a customer shall be billed. Enum: "_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8", "_9", "_10", "_11", "_12", "_13", "_14", "_15", "_16", "_17", "_18", "_19", "_20", "_21", "_22", "_23", "_24", "_25", "_26", "_27", "_28", "_29", "_30", "_31", "subscription_item_start_day", "account_cycle_date", "subscription_start_day", "term_start_day", "term_end_day", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" - `start_event` (string) Specifies when to start billing your customer. Enum: "contract_effective", "service_activation", "customer_acceptance", "specific_date" - `apply_discount_to` (array) Any combination of one_time, recurring and plan. Enum: "one_time", "recurring", "usage" - `tiers` (array) Price information for different tiers. When creating or updating tiered prices, you must specify this field and the tiers_mode field. - `tiers.up_to` (number) The upper bound of a tier. The lower bound of a tier is the upper bound of the previous tier plus one or some fraction of one, depending on the precision of the unit of measure. - `tiers.amounts` (object) Prices for the tier. Only set if charge_model is tiered, tiered_overage, or highwatermark_tiered. Example: {"USD":10,"GBP":15} - `tiers.unit_amounts` (object) Per unit prices for units in the tier. Only set if charge_model is tiered, tiered_overage, or highwatermark_tiered. Example: {"USD":10,"GBP":15} - `tax_code` (string) A tax code identifier. If a tax_code of a price is not provided when you create or update a price, Zuora will treat the charged amount as non-taxable. If this code is provide, Zuora considers that this price is taxable and the charged amount will be handled accordingly. - `tax_inclusive` (boolean) If this field is set to true, it indicates that amounts are inclusive of tax. - `unit_of_measure` (string) A configured unit of measure. This field is required for per-unit prices. - `quantity` (number) Quantity of the product to which your customers subscribe. - `min_quantity` (number) The minimum quantity for a price. Specify this field and the max_quantity field to create a range of quantities allowed in a price. - `max_quantity` (number) The maximum quantity for a price. Specify this field and the min_quantity field to create a range of quantities allowed in a price. - `discount_level` (string) Specifies at what level a discount should be applied: account, subscription, or plan. Enum: "account", "subscription", "plan" - `revenue_recognition_rule` (string) Determines when to recognize the revenue for this charge. You can choose to recognize upon invoicing or daily over time. - `stacked_discount` (boolean) This field is only applicable for the Percentage Discount price. This field indicates whether the discount is to be calculated as stacked discount. Possible values are as follows: true: This is a stacked discount, which should be calculated by stacking with other discounts. false: This is not a stacked discount, which should be calculated in sequence with other discounts. For more information, see Stacked discounts - `amounts` (object) Example: {"USD":10,"GBP":15} - `unit_amounts` (object) Example: {"USD":10,"GBP":15} - `discount_amounts` (object) Example: {"USD":10,"GBP":15} - `discount_percent` (number) Discount percent. Specify this field if you offer a percentage-based discount. - `price_base_interval` (string) Specifies the base interval of a price. If not provided, this field defaults to billing_period. Enum: "month", "billing_period", "week" - `revenue` (object) Accounting configuration if you have Zuora Revenue enabled. - `revenue.exclude_item_billing_from_revenue_accounting` (boolean) If set to true, any associated billing document items are excluded from the revenue accounting. - `revenue.exclude_item_booking_from_revenue_accounting` (boolean) If set to true, any associated subscription items are excluded from the revenue accounting. - `accounting_code` (string) An active accounting code defined in Finance Settings > Configure Accounting Codes in your Zuora tenant. - `prepayment` (object) - `prepayment.credit_option` (string) The way to calculate credit. See Credit Option for more information. Enum: "time_based", "consumption_based", "full_credit" - `prepayment.quantity` (number) The number of units included in a prepayment charge. - `prepayment.total_quantity` (number) The total amount of units that end customers can use during a validity period when they subscribe to a prepayment charge. - `prepayment.validity_period` (string) The period in which the prepayment units are valid to use as defined in a prepayment charge. Enum: "subscription_term", "annual", "semi_annual", "quarter", "month" - `drawdown` (object) - `drawdown.conversion_rate` (number) The conversion rate between usage unit of measure (UOM) and drawdown unit of measure for a drawdown charge. Note: Must be a positive number (>0). Must be 1 when usage UOM and drawdown UOM are the same. If both conversion_rate and unit_of_measure for the drawdown are empty, the system will set default values respectively: conversion_rate: 1 unit_of_measure: Same as the usage UOM of this drawdown charge. The conversion_rate and unit_of_measure fields need to have values or be empty at the same time. - `drawdown.unit_of_measure` (string) Unit of measurement for a drawdown charge. - `taxable` (boolean) - `price_change_percentage` (number) The percentage to increase or decrease the price of a termed subscription's renewal. - `price_change_option` (string) Applies an automatic price change when a termed subscription is renewed. Enum: "latest_catalog_pricing", "percentage", "none" - `price_increase_option` (boolean) Indicates whether to apply an automatic price change when a termed subscription is renewed. - `plan_id` (string) Specify the ID of a plan to which this price is associated. - `plan_number` (string) Specify the number of a plan to which this price is associated. This field is required if plan_id is not supplied - `charge_type` (string) The type of charge. Can be one_time,recurring, or usage. - `charge_model` (string) The charge model of the price, which determines how users are charged. Common charge models include flat fee, per-unit, volume, and tiered prices. - `tiers_mode` (string) Specifies the mode for tiered prices. Enum: "graduated", "volume", "high_watermark_volume", "high_watermark_graduated", "graduated_with_overage" - `overage` (object) An object defining how overage charges are calculated. - `overage.interval_count` (integer) Specifies the number of intervals used to calculate smoothed overage charges. - `overage.type` (string) Represents the overage type: one of rolling_window or rollover. Enum: "rolling_window", "rollover" - `overage.included_units` (number) Specifies the included units to which overage charges do not apply. - `overage.credit_unused_units` (boolean) Specifies whether or not to credit unused units. - `overage.apply_at_end_of_smoothing_period` (boolean) Indicates if the overage price is calculated at the end of the smoothing period. - `active` (boolean) Whether the price can be used for new purchases. ## Response 400 fields (application/json): - `type` (string) - `errors` (array) - `errors.code` (string) - `errors.parameter` (string) - `errors.message` (string) - `retryable` (boolean) ## Response 401 fields (application/json): - `type` (string) - `errors` (array) - `errors.code` (string) - `errors.parameter` (string) - `errors.message` (string) - `retryable` (boolean) ## Response 404 fields (application/json): - `type` (string) - `errors` (array) - `errors.code` (string) - `errors.parameter` (string) - `errors.message` (string) - `retryable` (boolean) ## Response 405 fields (application/json): - `type` (string) - `errors` (array) - `errors.code` (string) - `errors.parameter` (string) - `errors.message` (string) - `retryable` (boolean) ## Response 429 fields (application/json): - `type` (string) - `errors` (array) - `errors.code` (string) - `errors.parameter` (string) - `errors.message` (string) - `retryable` (boolean) ## Response 500 fields (application/json): - `type` (string) - `errors` (array) - `errors.code` (string) - `errors.parameter` (string) - `errors.message` (string) - `retryable` (boolean) ## Response 502 fields (application/json): - `type` (string) - `errors` (array) - `errors.code` (string) - `errors.parameter` (string) - `errors.message` (string) - `retryable` (boolean) ## Response 503 fields (application/json): - `type` (string) - `errors` (array) - `errors.code` (string) - `errors.parameter` (string) - `errors.message` (string) - `retryable` (boolean) ## Response 504 fields (application/json): - `type` (string) - `errors` (array) - `errors.code` (string) - `errors.parameter` (string) - `errors.message` (string) - `retryable` (boolean)