---
title: "Create a product charge definition"
method: POST
path: "/v1/product-charge-definitions"
tags: ["Product Charge Definitions"]
---

# Create a product charge definition

`POST /v1/product-charge-definitions`

Creates a product charge definition for a charge. You can create as many product charge definitions as needed for one charge.

In the request, you must specify the unique ID or number of the charge for which this charge definition is to be created. 
The ID or number of a product rate plan is optional.

**Note**: This operation requires the [Attribute-based Pricing](https://docs.zuora.com?resourceId=billing-attribute-based-pricing) feature to be enabled, which is in the **Early Adopter** phase.

## Headers

- `Idempotency-Key` string
- `Accept-Encoding` string
- `Content-Encoding` string
- `Zuora-Track-Id` string
- `Zuora-Entity-Ids` string
- `Zuora-Version` string

## Request body

- POSTChargeDefinitionRequest
  - `billingPeriod` string — The billing period for the product charge definition.
  - `billingTiming` 'IN_ADVANCE' | 'IN_ARREARS' — The billing timing setting for the product charge definition.
  - `chargeModel` 'DiscountFixedAmount' | 'DiscountPercentage' | 'FlatFee' | 'PerUnit' | 'Tiered' | 'Volume' | 'Delivery' — Determines how to calculate charges. Charge models must be individually activated in Zuora Billing administration.
  - `defaultQuantity` number, nullable — The default quantity. This field is applicable only for one-time and recurring charges.
  - `effectiveEndDate` string, date-time — The effective end date of the product charge definition.
  - `effectiveStartDate` string, date-time — The effective start date of the product charge definition.
  - `listPriceBase` 'Per_Billing_Period' | 'Per_Month' | 'Per_Week' | 'Per_Year' — The list price base. This field is applicable only for recurring charges. **Note**: The `Per_Year` enum value is available only if you have the <a href="https://docs.zuora.com?resourceId=billing-annual-list-price" target="_blank">Annual List Price</a> feature enabled.
  - `prices` POSTProductChargeDefinitionPricing[] — Container for the prices of the product charge definition.
    - `currency` string — The currency for the price.
    - `discountAmount` number, double — The specific amount for a fixed discount. The field is applicable only for charges based on the Discount-Fixed Amount charge model.
    - `discountPercentage` number, double — The percentage of discount for a percentage discount. The field is applicable only for charges based on the Discount-Percentage charge model.
    - `price` number — The price of this item. This field is only applicable for charges based on the following charge models: - Flat Fee - Per Unit - Delivery Pricing
    - `tiers` POSTChargeDefinitionPricingTier[] — Container for the tiers of the price item. This field is only applicable for charges based on the following charge models: - Tiered Pricing - Volume Pricing You must specify all relevant fields of all tiers, including pricing information for each currency. For each currency, ensure that the tiers appear in ascending order of `StartingUnit`. For example: ``` [ { "startingUnit": "1", "endingUnit": "150", "currency": "USD", "price": 1.95, "priceFormat": "Per Unit" }, { "startingUnit": "151", "endingUnit": "300", "currency": "USD", "price": 1.45, "priceFormat": "Per Unit" }, { "startingUnit": "1", "endingUnit": "150", "currency": "EUR", "price": 1.75, "priceFormat": "Per Unit" }, { "startingUnit": "151", "endingUnit": "300", "currency": "EUR", "price": 1.30, "priceFormat": "Per Unit" } ] ```
      - object[] — An array of charge pricing tier.
        - `currency` string — The code corresponding to the currency for the tier's price.
        - `endingUnit` number, double — The end number of a range of units for the tier. This field is required for charges based on the Tiered Pricing or Tiered with Overage Pricing charge model.
        - `price` number, double — The price of the tier if the price format is flat fee, or the price of each unit in the tier if the price format is per unit.
        - `priceFormat` 'Flat Fee' | 'Per Unit' — The price format of the tier.
        - `startingUnit` number, double — The starting number of a range of units for the tier. This field is required for charges based on the Tiered Pricing or Tiered with Overage Pricing charge model.
  - `productRatePlanChargeId` string — The unique ID of the charge of the charge definition.
  - `productRatePlanChargeNumber` string — The unique number (natural key) of the charge of the charge definition.
  - `productRatePlanId` string — The unique ID of the product rate plan that uses this charge definition.
  - `productRatePlanNumber` string — The unique number (natural key) of the product rate plan that uses this charge definition.
  - `specificBillingPeriod` number, nullable — The specific number of billing periods for the product charge definition.
  - `specificListPriceBase` integer, nullable — The number of months for the list price base of the charge definition. This field is `null` if the `listPriceBase` field is not set to `Per_Specific_Months`.
  - `taxCode` string — Specifies the tax code for taxation rules. This field is required when the `Taxable` field is set to `True`. **Note**: This value affects the tax calculation of the charge.
  - `taxMode` 'TaxExclusive' | 'TaxInclusive' | 'null', nullable — Determines how to define taxation for the charge. This field is required when the `Taxable` field is set to `True`. **Note**: This value affects the tax calculation of the charge.
  - `taxable` boolean — Determines whether the charge definition is taxable. When this field is set to `True`, the `TaxMode` and `TaxCode` fields are required. **Character limit**: 5 **Values**: `True`, `False` **Note**: This value affects the tax calculation of the charge.
  - `term` number, nullable — The number of periods of a termed subscription that is eligible for this charge definition. This field is applicable when the `termType` field is set to `TERMED`, and is to be used together with the `termPeriodType` field.
  - `termPeriodType` 'Month' | 'Year' | 'Day' | 'Week' | 'null', nullable — Specifies the period type for the subscription term that is eligible for this charge definition.
  - `termType` 'TERMED' | 'EVERGREEN' | 'null', nullable — The type of the subscription that is eligible for this charge definition.
  - `uom` string, nullable — Describes the unit of measure (UOM) configured in **Settings > Billing** for the charge.

## Response `200`

OK

- POSTChargeDefinitionResponse
  - `chargeDefinitionId` string — The unique ID of the product charge definition.
  - `chargeDefinitionNumber` string — The unique number (natural key) of the product charge definition.
  - `success` boolean — Indicates whether the request succeeded.

## Other responses

- `500` — Internal Server Error
- `4XX` — Request Errors

---

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