A plan product is set up at the time of plan creation. It is based on a product, becomes associated with a plan and frequency, and may have field values that differ from the base product (price, custom fields, etc.). When a subscription is created, the subscription is based on the plan, and the subscription products are based on that plan's plan products.
Plan Product Fields
Property | Type | Description |
---|---|---|
status | Enum: {Active, Deleted, Retired} | The status of this plan product. A retired plan product will not become a subscription product on subscriptions made after it became retired. When it is deleted, the relevant existing subscription products are deleted. |
productId | Integer | The Fusebill generated ID that uniquely identifies the product this plan product was based on. [Read Only] |
planId | Integer | The Fusebill generated ID that uniquely identifies the plan this plan product belongs to. [Read Only] |
productCode | String | The code field for this plan product. Typically this is the same code as the underlying product, but it can be overwritten in the UI. [Max Length: 1000 characters] |
productName | String | The name field for this plan product. Typically this is the same name as the underlying product, but it can be overwritten in the UI. [Max Length: 100 characters] |
productStatus | Enum:{Active, Retired} | The status of the underlying product. |
productDescription | String | The description of this plan product. Typically this is the same as the underlying product, but it can be overwritten in the UI. [Max Length: 1000 characters] |
productType | Enum:{RecurringService, PhysicalGood, OneTimeCharge} | physical goods and one-time charges do not recharge after the first charge |
productGLCode | String | The general ledger code of the underlying product. |
quantity | Decimal | The initial starting quantity of the plan product. |
maxQuantity | Integer | The maximum acceptable value for quantity . Null means there is no maximum. |
isRecurring | Boolean | True if the plan product is a "RecurringService" type product. |
isFixed | Boolean | If true, then it will not be possible to modify the quantity of the product. |
isOptional | Boolean | If true, then subscription products based on this plan product can have their inclusion or exclusion controlled. This is false when the registration visibility in the UI is set to "Always Include". |
isIncludedByDefault | Boolean | If isOptional is true, this indicates whether this plan product's inclusion is defaulted when subscriptions are created from the plan. |
isTrackingItems | Boolean | If true, then the subscription product mad from this plan product will be using tracked items instead of a simple numeric quantity. |
chargeAtSubscriptionActivation | Boolean | If true, then the service charges at subscription activation. This is in contrast to charging at provisioning. |
orderToCashCycles | Object. Definition below | An object describing recharge and cycle details for this plan product |
resetType | Enum: {Never, StartOfPeriod, EndOfPeriod} | "Never" means the quantity never resets, whereas "StartOfPeriod" and "EndOfPeriod" indicate when the quantity is automatically set to zero. |
planProductUniqueId | Integer | Used internally. [Read Only] |
sortOrder | Integer | The order this appears in the UI as well as on the invoice, top to bottom. |
generateZeroDollarCharge | Boolean | Indicates whether subscription products based on this plan product will generate charges if they amount to zero dollars. This can be overwritten on the subscription product level |
id | Integer | The Fusebill generated ID that uniquely identifies this plan product. [Read Only] |
uri | String | The full string path to this resource. [Read Only] |
Order To Cash Cycle Fields
Property | Type | Description |
---|---|---|
planFrequencyId | Integer | The Fusebill generated ID that uniquely identifies the plan frequency this cycle applies to. [Read Only] |
planProductId | Integer | The Fusebill generated ID that uniquely identifies this plan product. *[Read Only]** |
numberOfIntervals | Integer | How many months or years constitute a billing period for the related plan frequency. |
interval | Enum: {Monthly, Yearly} | The unit of measurement for numberOfIntervals which defines a billing period |
chargeModels | List of Objects. Defined below | Controls how the charge(s) of this plan product are modeled, prorated, and timed. |
customFields | List of Objects. See Catalog: Custom Fields Object | Contains defaultValue instead of Value |
remainingInterval | Integer | The number of intervals it takes for this plan product to expire for the associated plan frequency. null means it never expires. |
planProductPriceUplifts | List of objects. Defined below | An advanced price setting that allows automatic price increases over the life cycle of the subscription product made from this plan product on this plan frequency. |
customServiceDateNumberOfIntervals | Integer | Service dates control the dates displayed on invoice below the line item representing this plan product on this plan frequency. This indicates how many intervals away from the invoice date is to be displayed. |
customServiceDateInterval | Enum:{Days, Periods} | Service dates control the dates displayed on invoice below the line item representing this plan product on this plan frequency. This controls whether the distance from the invoice date is measured in days or periods. |
customServiceDateProjection | Enum:{Future, Past} | Service dates control the dates displayed on invoice below the line item representing this plan product on this plan frequency. This controls whether the service date is before the posted invoice, or after. |
upliftPriorToRecharge | Boolean | Controls whether the scheduled price uplifts in planProductPriceUplifts occur prior to the recharge, or afterwards. |
includingInitialCharge | Boolean | For the price uplifts scheduled in planProductPriceUplifts , this controls whether the first charge counts as an interval. |
earningTimingInterval | Enum: {Daily, Monthly, Yearly} | Controls the granularity of revenue recognition for this plan product on this plan frequency. |
earningTimingType | Enum: {StartOfInterval, EndOfInterval} | Indicates how the timing of the earning in relation to the period should occur |
pricingModel | Object. Defined below | Defines how quantities of this plan product are used to calculate charge price |
Charge Model Fields
Property | Type | Description |
---|---|---|
chargeModelType | Enum:{Signup, Lifetime} | Indicates the type of charge |
chargeTimingType | Enum:{StartOfPeriod, Immediate, EndOfPeriod} | Controls where in the period the charge occurs. |
prorationGranularity | Enum:{Daily, Monthly} | Controls the granularity of proration |
ProrateOnPositiveQuantity | Boolean | If the chargeModelType is 'Signup', then this indicates that proration is used when the product is purchased/renewedIf the chargeModelType is 'Lifetime', then this indicates that proration is used when the quantity is changed |
Plan Product Price Uplift Fields
Property | Type | Description |
---|---|---|
sequenceNumber | Integer | The position of this price uplift in the sequence of price uplifts |
numberOfIntervals | Integer | The number of periods that will occur after the previous price uplift in the sequence before this price uplift takes effect. |
amount | Decimal | The percentage this uplift will increase the price by for this plan product on this plan frequency. |
repeatForever | Boolean | If this is the last price uplift in the sequence, it can be set to repeat indefinitely |
Pricing Model Fields
Property | Type | Description |
---|---|---|
pricingModelType | Enum: {Standard, Tiered, Stairstep, Volume} | Dictates how the price is calculated using the quantity. This is for the subscription product that is based on this plan product on this plan frequency. |
quantityRanges | List of Objects. Defined below. | A collection of ranges that control the price of the subscription product based on its quantity field. This is for the subscription product that is based on this plan product on this plan frequency. |
Quantity Ranges Fields
Property | Type | Description |
---|---|---|
min | Decimal | The lower bound for the value of quantity . If the subscription product made from this plan product has a quantity in this quantity range, the price in prices matching the customer's currency is used. |
max | Decimal | The upper bound for the value of quantity . If the subscription product made from this plan product has a quantity in this quantity range, the price in prices matching the customer's currency is used. NULL means infinity |
prices | List of Objects. Defined below. | A list of prices based on each configured currency. |
Prices fields
Property | Type | Description |
---|---|---|
amount | Decimal | The price in units of the currency . |
currency | String | The 3 character ISO code of the currency this price is measured in. |