Subscription Object

Many systems use plan and subscription as interchangeable terms when discussing recurring billing but in Fusebill a plan and a subscription are very different.

Plans should be thought of as templates for a service you want to sell to your customers. A subscription is the actual implementation of a plan when that plan is attached to a customer. Changes to a plan do not change the subscriptions created from that plan and changes made to a subscription have no effect on the plan they were created from.

In addition, plans can have multiple frequencies (every 2 months, every 4 months, every 1 year, etc). Subscriptions are instances of a particular frequency of a particular plan, so a subscription has only one frequency regardless of how many frequencies were in the plan from which the subscription was created.

Subscription Object Fields

PropertyTypeDescription
customerIdIntegerThis is the Id of the Customer to whom this Subscription has been applied.
planFrequencyObject (definition below)This provides details of the plan frequency that was used to configure the subscription.
planCodeStringThis is the unique code which represents the Plan of which this Subscription is an instance.
planNameStringThis is the name of the plan of which this Subscription is an instance.
planDescriptionStringThis is the description text of the Plan of which this Subscription is an instance of.
planReferenceStringThis is a text field which will be populated with the reference text from the plan. This field is not exposed on the Invoice.
statusEnum: {Active, Draft, Cancelled, Provisioning, Expired, Migrated, Suspended, StandingOrder}This is the status of this subscription. Draft indicates that the Subscription has not yet been activated. Provisioning indicates this Subscription has been provisioned but that the Setup Fee and recurring Charge has not been applied to the Customer. To set a Subscription as "Provisioned" you must set a Scheduled Activation Date for some time in the future.
referenceStringThis is a text field you can populate with reference text for this subscription. This field is shown on invoices.
subscriptionOverrideObject. Defined belowThis represents a subscription-level override made after the object's creation.
hasPostedInvoiceBooleanThis indicates if this Subscription has caused an invoice to be created and posted against the Customer's account.
CreatedTimestampDateTimeThis indicates when the Subscription was created.
ActivatedTimestampDateTimeThis indicates when the Subscription was activated.
ProvisionedTimestampDateTimeThis indicates when the Subscription was provisioned.
NextPeriodStartDateDateTimeThis indicates when the next billing period for the Subscription will begin. Normally, this indicates when the subscription will bill and apply charges to the customer's account.
lastPeriodStartDateDateTimeThis is the timestamp of when the previous period started for this subscription if there was a previous period.
ScheduledActivationTimestampDateTimeIf set, this indicates when the Subscription should activate. The subscription will automatically be set to an "Active" status at this time if it has been set to status "Provisioned".
subscriptionProductsList of Objects. See the Subscription Products Object section for the definition.The list of subscription products on the purchase, both included and excluded.
remainingIntervalIntegerThis is the remaining number of billing intervals in the lifetime of this subscription. If this value is set to null the subscription will renew indefinitely. If this is set to a number then after that number of intervals have passed the subscription will go to the "Expired" status automatically and stop charging the customer.
remainingIntervalPushOutIntegerThis is the setting to default what the new remaining interval should be when the subscription is renewed.
openSubscriptionPeriodEndDateDateTimeThis is the date that the current billing period will end. Often, this field will match the nextPeriodStartDate value.
customFieldsList of Objects. See Catalog: Custom Fields for object definition.Custom fields hold additional data. This data is associated with the subscription.
planAutoApplyChangesBooleanThis field related to Grandfathering control. If true, this indicates that the Plan from which this Subscription is made usually pushes changes to the Plan down to existing Subscriptions - this forces existing customers onto the newest version of the Plan. If set to False, this 'grandfathers' the Customer into the version of the Plan they Subscribed to and does not push changes.
autoApplyCatalogChangesBooleanThis field controls if this specific Subscription should automatically push changes to the underlying Plan to this Subscription. If set to True, changes will be pushed automatically. If False, this Subscription will not reflect updates to the Plan from which it was made.
monthlyRecurringRevenueDecimalThe calculated monthly recurring revenue value being generated by this subscription.
netMonthlyRecurringRevenueDecimalThe net MRR being generated by this subscription.
amountDecimalThe amount of the subscription.
contractStartTimestampDateTimeThis is the date that the contract period will begin.
contractEndTimestampDateTimeThis is the date that the contract period will end.
expiredTimestampDateTimeThe timestamp of when this subscription expired if it is in status "Expired".
cancellationTimestampDateTimeThe timestamp of when this subscription became cancelled if it is in status "Cancelled".
modifiedTimestampDateTimeThe timestamp of the last modification to this entity.
couponsList of Objects. See Subscriptions: Coupons Object for details.The list of coupons that have been applied to this subscription
invoiceDayIntegerThe day of the month recharge occurs for this subscription.
invoiceMonthIntegerTells the system to create a billing period that cycles on the specified month. Typically only used for yearly frequencies. If this parameter is used for a monthly frequency, Fusebill will adjust the billing period such that the subscription will recharge on the provided day and month.
canMigrateBooleanTrue as long as their is at least one plan family relationship with this subscription's plan code as the source.
migrationDateDateTimeThe timestamp when this subscription entered status "Migrated".
scheduledMigrationDateDateTimeThe timestamp of when the scheduled migration for this subscription will occur if a migration has been scheduled.
migrationsObject. Defined below.A summary of the migration which resulted in this subscription, and the migration which was sourced from this subscription. Possibly null if the subscription is not associated to any migrations.
subscriptionHasRecurringEndOfPeriodChargeBooleanTrue if the subscription has a recurring end of period charge
nextRechargeDateDateTimeThe timestamp for when this subscription will recharge next.
billingPeriodDefinitionIdIntegerThe Fusebill generated ID that uniquely identifies the associated billing period definition.
salesforceIdStringThe Salesforce ID of the subscription in Salesforce that this object maps to. This is for the Salesforce plugin.
idIntegerThe Fusebill generated ID that uniquely identifies this subscription.
invoiceOwnerEnum: {InvoiceParent, InvoiceThisCustomer}Indicates charges will appear on customer invoice or on parent's invoice.
geotabDeviceCodesArray of StringsThe set of device product codes associated with this standing order subscription. Used to differentiate between multiple first-party devices on the same device plan. Matching is case-insensitive, ignores hyphens, and uses longest-prefix-first logic.
invoiceOwnerIdIntegerThe Invoice Owner ID of the subscription object in Stax Bill.
uriStringThe full string path to this resource.

PlanFrequency Fields

PropertyTypeDescription
planRevisionIdIntegerThis is the unique identifier for this plan revision.
numberOfIntervalsIntegerThis is the number of intervals that this plan will renew for.
intervalEnum: {Yearly, Monthly}The unit of measurement used for defining billing periods.
numberOfSubscriptionsIntegerThis is the number of instances of this plan currently in the system as subscriptions.
statusEnum: {Draft, Active, Retired}Indicates the status of the plan this subscription was sourced from.
isProratedBooleanThis indicates if this Subscription should prorate its charges if activated in the middle of a billing cycle.
prorationGranularityEnum: {Monthly, Daily}This defines how granular the proration calculations are.
planFrequencyUniqueIdIntegerThis is an internal identifier.
remainingIntervalIntegerThe default remaining interval for the plan. This is the number of periods before expiry. This can be overwritten or pushed out on the subscription.
salesforceIdStringThe ID of the Salesforce price book this plan frequency is associated with in Salesforce. This is for the Salesforce plugin.
idIntegerThis is the Fusebill generated ID for this plan frequency.
uriStringThis is full string path to this resource.

Subscription Override Properties

PropertyTypeDescription
nameStringThis is the value which will override the planName field value on the subscription. This override value will appear on invoices and in other customer facing locations.
descriptionStringThis is the value which will override the planDescription field value on the subscription. This override value will appear on invoices and in other customer facing locations.
idIntegerThe Fusebill generated ID that uniquely identifies this subscription.
uriStringThe full path to this subscription.

Migrations Object

PropertyTypeDescription
sourceSubscriptionIdIntegerThe Fusebill generated ID of the subscription which migrated to become this subscription.
sourceRelationshipMigrationTypeEnum: {Upgrade, Downgrade, PlanUpdate, FrequencyChange, FreeTrialConversion, Other}An enum used to describe the general purpose and context of the source migration
sourceRelationshipIdIntegerThe Fusebill generated plan family relationship ID used for the source migration
destinationSubscriptionIdIntegerThe Fusebill generated ID of the subscription which this subscription migrated to become.
destinationRelationshipMigrationTypeEnum: {Upgrade, Downgrade, PlanUpdate, FrequencyChange, FreeTrialConversion, Other}An enum used to describe the general purpose and context of the destination migration
destinationRelationshipIdIntegerThe Fusebill generated plan family relationship ID used for the destination migration