Skip to main content

Price Property

Zuora

Price Property

The Price property allows you to set up customized rules that dynamically return prices for the products in an offer.

How does it work?

The pricing information is pre-defined as attributes on the Charge Definition objects in your Zuora tenant. 

Note that as a prerequisite to using the Price property, you must first set up the charge definitions on the Billing side. 

After the price points are set up in Zuora Billing, you can use the Price rules builder to define rules that filter prices and charges. You can also sort the prices to be displayed.

Below is an example Price rule:

image1.png

This example rule will execute the following tasks:

  1. Filter out the prices based on the value of the Currency field on the charge definition object.
  2. Select the charge definitions that are only associated with charges that fall into the specified sales org.
  3. Sort the prices that are filtered out.
  4. Return all the prices on the list.

In addition, you can add Custom Inputs to the rule for either decision-making or filtering purposes.

  • A price point is defined at the charge definition level in Zuora and a charge can be associated with multiple charge definitions. 
  • As the Price rule engine will filter and return prices at the charge level. If a rate plan contains more than one charge, multiple sets of prices could be returned.

The following filtering and sorting nodes are available:

  • Charge Filter: Use this node to filter against fields on the Charge object.
  • Pricing Filter: Use this node to filter against fields on the Charge Definition object and decide which prices to retrieve.
  • Pricing Sort: Use this node to sort the prices.

Price specific nodes

You can configure the Pricing Filter and Charge Filter nodes in your price rules. Both nodes are available in the Filters & Sort tab on the canvas. You can also sort price points using the Pricing Sort node.

Note that the order of the nodes in a rule doesn't affect the execution flow. Dynamic Offers will always fetch and process the price points first, then fetch and filter the charge data.

The price rules must end with the Display Price node, which is available in the Price Output tab.

Pricing Filter

Use the Pricing Filter node to configure filters against the price points defined on charge definitions. Take the following steps to set up a Pricing Filter node:

  1. Select the field name on the Charge Definition that will be filtered against.
  2. Specify the condition.
  3. Specify the source of the filtering value. 
  • For the field that contains enum values, (defined as "picklist" type in Zuora Billing), you can select from the defined enum values when the condition is set to Equals and Source is set to Value. 
  • Use the Source > Custom Input field to select a custom input value

Charge Filter

Use the Charge Filter to select the charges that are needed. Available filter options are the name field and any custom charge fields.

To add a charge filter, you need to select a Charge Attribute and then specify the filtering condition.

Pricing Sort

Use the Pricing Sort node to sort the price points. You can choose a field from the Price Book Field dropdown list, and then select the sorting method.

Display Price

You must place the Display Price node at the end of the price rule. This node can specify whether the rule will return the top item only or all the items.

Tip: You can stack multiple Filter nodes to set up a comprehensive filter. Use the Type field at the bottom of the configuration window to specify the logical relationship between the filters.

Example Price property response

In the below example Dynamic Offer API response, the part in bold displays the Price property related data:


{
  "products": [
    {
      "id": "zuora-product",
      "label": "Zuora Product",
      "description": "",
      "features": [],
      "sharingLimit": 0,
      "metadata": {
        "order": 1,
        "recommended": false
      },
      "prices": [
        {
          "ratePlanId": "8ad081c68a1ba509018a1d155ac057f1",
          "charges": [
            {
              "discounts": [
                {
                  "items": [
                    {
                      "order": 1,
                      "type": "PERCENTAGE",
                      "value": 10,
                      "occurrence": "RECURRING",
                      "startPolicy": {
                        "type": "ON_CHARGE_START",
                        "offset": null
                      },
                      "endPolicy": {
                        "type": "ON_CHARGE_START",
                        "offset": null
                      }
                    }
                  ],
                  "orderType": "SEQUENTIAL"
                }
              ],
              "id": "8ad094088a1bce0b018a1d1719f63af8",
              "name": "Monthly Membership",
              "DemoPOB__c": null,
              "RighttoBill__c": null,
              "SalesOrg__c": null,
              "UnityTest__c": null,
              "AllocationEligible__c": null,
              "pricing": [
                {
                  "currency": "GBP",
                  "price": 0.0,
                  "productChargeDefinitionId": "8ad094088a1bce0b018a1d1719f63af8",
                  "productChargeDefinitionNumber": "CD-00000387",
                  "isDefault": true,
                  "productRatePlanChargeId": "8ad094088a1bce0b018a1d1719f63af8",
                  "productRatePlanChargeNumber": null,
                  "productRatePlanId": null,
                  "effectiveStartDate": "2023-08-22 00:00:00",
                  "effectiveEndDate": "2027-08-22 00:00:00",
                  "listPriceBase": "Per_Billing_Period",
                  "specificListPriceBase": null,
                  "billingPeriod": "Month",
                  "billingPeriodAlignment": "AlignToCharge",
                  "specificBillingPeriod": null,
                  "billingTiming": "IN_ADVANCE",
                  "ratingGroup": null,
                  "taxable": false,
                  "taxCode": "",
                  "termPeriodType": null,
                  "termType": null,
                  "term": null,
                  "chargeModel": "FlatFee",
                  "defaultQuantity": 1.0,
                  "applyDiscountTo": null,
                  "discountLevel": null,
                  "smoothingModel": null,
                  "overageCalculationOption": null,
                  "overageUnusedUnitsCreditOption": null,
                  "usageRecordRatingOption": null,
                  "endDateCondition": "Subscription_End",
                  "upToPeriods": null,
                  "upToPeriodsType": null,
                  "triggerEvent": "ContractEffective",
                  "revRecTriggerCondition": null,
                  "revenueRecognitionRuleName": "Recognize upon invoicing",
                  "useDiscountSpecificAccountingCode": null,
                  "excludeItemBookingFromRevenueAccounting": false,
                  "excludeItemBillingFromRevenueAccounting": false,
                  "isStackedDiscount": false
                }
              ]
            }
          ]
        }
      ],
      "properties": null
    }
  ]
}