Use Rate Plans with Your Subscriptions

You can use a rate plan to provide different levels of service for each subscription.

Here are some important concepts:

  • Usage.Usage of the subscription, such as using a gym, using cloud storage, or using electricity.
  • Usage charge. A pricing charge that measures usage, such as $2.44 for each gigabyte.
  • Rate plan. A plan that includes a collection of charges for a subscription item or set of items for each customer. It can include a one-time charge, such as an activation fee, recurring charge such as a monthly fee, or a usage charge that you can apply according to consumption discounts, and so on.

    For example, get a data plan for your cellular phone with a one-time $30 set up fee, with a recurring charge at the rate of $25 for each month for 25 gigabytes of data, and a usage charge of $10 for each 10 gigabytes that you use over the 25 gigabyte limit in each month.

Examples

Assume you offer this plan.

Assume you offer this plan.

Here's a summary of the plan.

Tier Recurring Charge
Silver Plan $75.00 for each month
Gold Plan $100.00 for each month
VIP Plan $150.00 for each month

You have a lot of flexibility in how you set up your plan. Here's another example.

You have a lot of flexibility in how you set up your plan. Here's another example.

Here's a summary of the plan.

Charge Price Discount
Training Fee $500.00 50% off the registration fee if you sign up during October through December.
Service Fee $249.99 for each month No service fee for the first month of service.
Consumption Fee

No fee for up to 200 GB.

$2.44 for each GB over 200 GB.

-

How it Works

You create an order that has a subscription in your source system.

Note

  1. You create a source order that has a subscription in your source system. The subscription can include pricing details. As an alternative, you can include pricing details in the Rate Plan REST API.
  2. You use REST API to import the source order into Order Management. See the Import Your Source Order subtopic for details.
  3. You create a price list that references your rate plan in Oracle Pricing. For details, see Manage Price Lists That Have Rate Plans.
  4. Order Management uses the orchestration process that you assign to the fulfillment line to orchestrate fulfillment. Order Management fulfills the item, then sends order data, subscription data, and the rate plan's identifier to Subscription Management.
  5. Subscription Management activates the subscription. Pricing uses the rate plan and usage amounts to calculate the amount to bill your customer, and sends updated details to display on the sales order to Order Management.
  6. Order Management displays the subscription number on the sales order in the Order Management work area.

Note

  • If you have usage charges, then you must use a rate plan.
  • You can use a rate plan only with a subscription. You can't use a rate plan with a coverage.

Import Your Source Order

Use these guidelines:

  • Import your rate plan through the Sales Orders for Order Hub REST API. You must use Sales Orders for Order Hub. You can't use one of Oracle Pricing's REST APIs to import the rate plan.
  • Price the sales order before you import it.
  • Include data for the charge or for the rate plan on each order line in the import payload. You can Include a one time charge or a recurring charge.
  • Include the rate plan identifier and the usage rate's details.
Consider this example:
Type of Charge Look For
One time PriceTypeCode": "ONE_TIME
Recurring "PriceTypeCode": "RECURRING"
Usage "RequestedRatePlanId": "300100573902628"

Here's the payload.

{
  "SourceTransactionNumber": "SUBS_RATEPLAN-0427_01",
  "SourceTransactionSystem": "ORA_BM_CPQ",
  "SourceTransactionId": "SUBS_RATEPLAN-0427_01",
  "BusinessUnitId": 204,
  "BuyingPartyId": 1006,
  "BuyingPartyContactId": 2663,
  "TransactionalCurrencyName": "US Dollar",
  "PartialShipAllowedFlag": false,
  "RequestingBusinessUnitId": 204,
  "RequestingLegalEntityId": 204,
  "FreezePriceFlag": "Y",
  "FreezeTaxFlag": "Y",
  "FreezeShippingChargeFlag": "Y",
  "SubmittedFlag": true,
  "RequestedShipDate": "2023-01-01",
  "TransactionTypeCode": "STD",  
  "billToCustomer": [
    {
      "CustomerAccountId": 1006,
      "SiteUseId": 1025,
      "ContactFirstName": "Charles",
      "ContactLastName": "Baker"
    }
  ],
  "shipToCustomer": [
    {
      "PartyId": 1006,
      "SiteId": 1036
    }
  ],
  "lines": [
    {
      "SourceTransactionLineId": "CPQ_LINE_ID_SUBS_1",
      "SourceTransactionLineNumber": "CPQ_LINE_NUM_SUBS_1",
      "SourceTransactionScheduleId": "CPQ_SCH_ID_SUBS_1",
      "SourceScheduleNumber": "CPQ_SCH_NUM_SUBS_1",
      "ProductNumber": "Zoom Phone Subscription",
      "PaymentTermsCode": 4,
      "TransactionLineType": "Buy",
      "OrderedUOM": "Each",
      "PurchasingUOMCode": "Ea",
      "OrderedQuantity": 1,
      "ServiceDuration": 2,
      "ServiceDurationPeriodName": "YEAR",
      "ContractStartDateTime": "2023-01-01",
      "ContractEndDateTime": "2024-12-31",
      "SubscriptionProfileName": "zOSS_SP_ServiceStartActual_Advance_Month",
      "ExternalPriceBookName": "CPQ_Price_List",
      "PackingInstructions": "CustomDOO_PauseforShipSubscriptionsProcess",
      "externalAssetReference": [
        {
          "ExternalAssetKey": "SUBS_RATEPLAN_AK_SUBS-0427_01"
        }
      ],
      "RequestedRatePlanId": "300100573902628",
      "charges": [
        {
          "SourceChargeId": "C1",
          "SequenceNumber": 1,
          "CanAdjustFlag": true,
          "ChargeDefinitionCode": "QP_SALE_PRICE",
          "PriceTypeCode": "ONE_TIME",
          "ChargeTypeCode": "ORA_SALE",
          "ChargeSubtypeCode": "ORA_PRICE",
          "ChargeCurrencyCode": "USD",
          "PricedQuantity": 1,
          "PricedQuantityUOMCode": "Ea",
          "PrimaryFlag": true,
          "ApplyToCode": "PRICE",
          "RollupFlag": false,
          "chargeComponents": [
            {
              "SourceChargeComponentId": "C1-CC1",
              "SequenceNumber": 1,
              "PriceElementCode": "QP_LIST_PRICE",
              "PriceElementUsageCode": "LIST_PRICE",
              "ChargeCurrencyCode": "USD",
              "ChargeCurrencyUnitPrice": 100,
              "ChargeCurrencyExtendedAmount": 100,
              "ChargeCurrencyDurationExtendedAmount": 100,
              "HeaderCurrencyCode": "USD",
              "HeaderCurrencyUnitPrice": 100,
              "HeaderCurrencyExtendedAmount": 100,
              "HeaderCurrencyDurationExtendedAmount": 100,
              "TaxIncludedFlag": false
            },
            {
              "SourceChargeComponentId": "C1-CC2",
              "SequenceNumber": 2,
              "PriceElementCode": "QP_NET_PRICE",
              "PriceElementUsageCode": "NET_PRICE",
              "ChargeCurrencyCode": "USD",
              "ChargeCurrencyUnitPrice": 100,
              "ChargeCurrencyExtendedAmount": 100,
              "ChargeCurrencyDurationExtendedAmount": 100,
              "HeaderCurrencyCode": "USD",
              "HeaderCurrencyUnitPrice": 100,
              "HeaderCurrencyExtendedAmount": 100,
              "HeaderCurrencyDurationExtendedAmount": 100,
              "TaxIncludedFlag": false
            }
          ]
        },
        {
          "SourceChargeId": "C2",
          "SequenceNumber": 2,
          "CanAdjustFlag": true,
          "ChargeDefinitionCode": "MONTHLYFEE",
          "PriceTypeCode": "RECURRING",
          "ChargeTypeCode": "PRICING2",
          "ChargeSubtypeCode": "SPMPRICE2",
          "ChargeCurrencyCode": "USD",
          "PricedQuantity": 1,
          "PricedQuantityUOMCode": "Ea",
          "PrimaryFlag": false,
          "PricePeriodicityCode": "0zG",
          "RollupFlag": false,
          "ApplyToCode": "PRICE",
          "chargeComponents": [
            {
              "SourceChargeComponentId": "C2-CC1",
              "SequenceNumber": 1,
              "PriceElementCode": "QP_LIST_PRICE",
              "PriceElementUsageCode": "LIST_PRICE",
              "ChargeCurrencyUnitPrice": 10,
              "ChargeCurrencyExtendedAmount": 10,
              "ChargeCurrencyDurationExtendedAmount": 240,
              "ChargeCurrencyCode": "USD",
              "RollupFlag": false,
              "HeaderCurrencyUnitPrice": 10,
              "HeaderCurrencyExtendedAmount": 10,
              "HeaderCurrencyDurationExtendedAmount": 240,
              "HeaderCurrencyCode": "USD",
              "TaxIncludedFlag": false
            },
            {
              "SourceChargeComponentId": "C2-CC2",
              "SequenceNumber": 2,
              "PriceElementCode": "QP_NET_PRICE",
              "PriceElementUsageCode": "NET_PRICE",
              "ChargeCurrencyUnitPrice": 10,
              "ChargeCurrencyExtendedAmount": 10,
              "ChargeCurrencyDurationExtendedAmount": 240,
              "ChargeCurrencyCode": "USD",
              "RollupFlag": false,
              "HeaderCurrencyUnitPrice": 10,
              "HeaderCurrencyExtendedAmount": 10,
              "HeaderCurrencyDurationExtendedAmount": 240,
              "HeaderCurrencyCode": "USD",
              "TaxIncludedFlag": false
            }
          ]
        }
      ],
      "salesCredits": [
        {
          "Salesperson": "James Seller",
          "Percent": 100,
          "SalesCreditTypeId": 1,
          "SourceTransactionSalesCreditIdentifier": "HSC01"
        }
      ]
    }
  ]
}

For details, go to REST API for Oracle Supply Chain Management Cloud, expand Order Management > Sales Orders for Order Hub Requests. Click Create Sales Orders, then look at example 57.

Import Usage Charge

  • If you import a usage charge, then you must also import a rate plan.

  • Each usage charge can have a basic charge or a rate table that you specify in a pricing matrix.

  • Each usage charge can have tier adjustments and attribute adjustments.

If you use REST API to import a usage charge, then make sure you include the attributes that you use to define the charge in the ratePlanCharges entity, that ratePlanCharges is a child of the ratePlans entity, and ratePlans is a child of the items entity.

For example:

  "items": [
    {
      "Item": "Zoom Voice",
      "ItemLevelCode": "ITEM",
      "LineTypeCode": "ORA_BUY",
      "PricingUOM": "Each",
      "ratePlans": [
        {
          "RatePlanName": "Rate_Plan_01012021",
          "RatePlanDescription": "Rate Plan for Zoom Voice",
          "Currency": "US Dollar",
          "StartDate": "2021-01-01",
          "EndDate": "2022-12-31",
          "ratePlanCharges": [
            {
              "PricingChargeDefinition": "Call Usage Charge",
              "PricingChargeDefinitionCode": "QP_CALL_USAGE_CHARGE",
              "CalculationMethodCode": "PRICE",
"UsageUOMCode": "MNS",
              "BasePrice": 1.00,
              "StartDate": "2021-01-01",
              "EndDate": "2021-12-31"
            },

where

  • Attributes in the ratePlanCharges entity define the usage charge, such as "PricingChargeDefinition": "Call Usage Charge"

  • ratePlanCharges is a child of the ratePlans entity

  • ratePlans is a child of the items entity

For details and examples, go to REST API for Oracle Supply Chain Management Cloud, then expand Order Management > Document Prices.