Plan Product

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

PropertyTypeDescription
statusEnum: {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.
productIdIntegerThe Fusebill generated ID that uniquely identifies the product this plan product was based on.
[Read Only]
planIdIntegerThe Fusebill generated ID that uniquely identifies the plan this plan product belongs to.
[Read Only]
productCodeStringThe 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]
productNameStringThe 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]
productStatusEnum:{Active, Retired}The status of the underlying product.
productDescriptionStringThe 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]
productTypeEnum:{RecurringService, PhysicalGood, OneTimeCharge}physical goods and one-time charges do not recharge after the first charge
productGLCodeStringThe general ledger code of the underlying product.
quantityDecimalThe initial starting quantity of the plan product.
maxQuantityIntegerThe maximum acceptable value for quantity. Null means there is no maximum.
isRecurringBooleanTrue if the plan product is a "RecurringService" type product.
isFixedBooleanIf true, then it will not be possible to modify the quantity of the product.
isOptionalBooleanIf 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".
isIncludedByDefaultBooleanIf isOptional is true, this indicates whether this plan product's inclusion is defaulted when subscriptions are created from the plan.
isTrackingItemsBooleanIf true, then the subscription product mad from this plan product will be using tracked items instead of a simple numeric quantity.
chargeAtSubscriptionActivationBooleanIf true, then the service charges at subscription activation. This is in contrast to charging at provisioning.
orderToCashCyclesObject. Definition belowAn object describing recharge and cycle details for this plan product
resetTypeEnum: {Never, StartOfPeriod, EndOfPeriod}"Never" means the quantity never resets, whereas "StartOfPeriod" and "EndOfPeriod" indicate when the quantity is automatically set to zero.
planProductUniqueIdIntegerUsed internally.
[Read Only]
sortOrderIntegerThe order this appears in the UI as well as on the invoice, top to bottom.
generateZeroDollarChargeBooleanIndicates 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
idIntegerThe Fusebill generated ID that uniquely identifies this plan product.
[Read Only]
uriStringThe full string path to this resource.
[Read Only]

Order To Cash Cycle Fields

PropertyTypeDescription
planFrequencyIdIntegerThe Fusebill generated ID that uniquely identifies the plan frequency this cycle applies to.
[Read Only]
planProductIdIntegerThe Fusebill generated ID that uniquely identifies this plan product.
*[Read Only]**
numberOfIntervalsIntegerHow many months or years constitute a billing period for the related plan frequency.
intervalEnum: {Monthly, Yearly}The unit of measurement for numberOfIntervals which defines a billing period
chargeModelsList of Objects. Defined belowControls how the charge(s) of this plan product are modeled, prorated, and timed.
customFieldsList of Objects. See Catalog: Custom Fields ObjectContains defaultValue instead of Value
remainingIntervalIntegerThe number of intervals it takes for this plan product to expire for the associated plan frequency. null means it never expires.
planProductPriceUpliftsList of objects. Defined belowAn 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.
customServiceDateNumberOfIntervalsIntegerService 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.
customServiceDateIntervalEnum:{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.
customServiceDateProjectionEnum:{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.
upliftPriorToRechargeBooleanControls whether the scheduled price uplifts in planProductPriceUplifts occur prior to the recharge, or afterwards.
includingInitialChargeBooleanFor the price uplifts scheduled in planProductPriceUplifts, this controls whether the first charge counts as an interval.
earningTimingIntervalEnum: {Daily, Monthly, Yearly}Controls the granularity of revenue recognition for this plan product on this plan frequency.
earningTimingTypeEnum: {StartOfInterval, EndOfInterval}Indicates how the timing of the earning in relation to the period should occur
pricingModelObject. Defined belowDefines how quantities of this plan product are used to calculate charge price

Charge Model Fields

PropertyTypeDescription
chargeModelTypeEnum:{Signup, Lifetime}Indicates the type of charge
chargeTimingTypeEnum:{StartOfPeriod, Immediate, EndOfPeriod}Controls where in the period the charge occurs.
prorationGranularityEnum:{Daily, Monthly}Controls the granularity of proration
ProrateOnPositiveQuantityBooleanIf the chargeModelType is 'Signup', then this indicates that proration is used when the product is purchased/renewed

If the chargeModelType is 'Lifetime', then this indicates that proration is used when the quantity is changed

Plan Product Price Uplift Fields

PropertyTypeDescription
sequenceNumberIntegerThe position of this price uplift in the sequence of price uplifts
numberOfIntervalsIntegerThe number of periods that will occur after the previous price uplift in the sequence before this price uplift takes effect.
amountDecimalThe percentage this uplift will increase the price by for this plan product on this plan frequency.
repeatForeverBooleanIf this is the last price uplift in the sequence, it can be set to repeat indefinitely

Pricing Model Fields

PropertyTypeDescription
pricingModelTypeEnum: {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.
quantityRangesList 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

PropertyTypeDescription
minDecimalThe 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.
maxDecimalThe 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
pricesList of Objects. Defined below.A list of prices based on each configured currency.

Prices fields

PropertyTypeDescription
amountDecimalThe price in units of the currency.
currencyStringThe 3 character ISO code of the currency this price is measured in.