Subscriptions can run indefinitely or they may run for a fixed number of billing cycles. Subscription can have “contract terms”, which define a lock-in period on the subscription for a certain number of billing cycles. This prevents the subscription from being canceled by the customer when it is within the contract term.

The contract term resource described below, defines the properties of this lock-in period. This includes the number of billing cycles, the total contract value, the action to be taken at the end of the contract term, and so on. To allow for exceptions, you also have the option of terminating an active contract term and charging a termination fee.

A contract term starts in the active state and ends in the completed state. If the contract was canceled due to non-payment or other reasons, it can end in the canceled or terminated state. A given contract term is always associated with one, and only one subscription. A subscription, however, can be associated with only one active contract term. Over time, a subscription can be associated with several non-active contract terms. The active contract term for a subscription is available as an object within the subscription.

To enable and configure contract terms, follow these steps in the Chargebee UI:

  1. Click Settings on the left navigation.
  2. Click Configure Chargebee.
  3. Under Billing, click Contract Terms.
  4. Enable and configure the feature as needed.

Once contract terms have been configured, the following actions can be performed using the API:

Sample contract term [ JSON ]

{ "action_at_term_end": "renew", "billing_cycle": 12, "cancellation_cutoff_period": 0, "contract_end": 1548974761, "contract_start": 1517438761, "created_at": 1517438761, "id": "__test__3Nl7o66Rt41dR98T", "remaining_billing_cycles": 11, "status": "active", "total_contract_value": 10740 }
id
Id that uniquely identifies the contract term in the site.
string, max chars=50
status
Current status of contract.
enumerated string
Possible values are
activeAn actively running contract term.completedThe contract term has run its full duration.cancelledThe contract term was ended because: .terminatedThe contract term was terminated ahead of completion.
contract_start
The start date of the contract term.
timestamp(UTC) in seconds
contract_end
The end date of the contract term.
timestamp(UTC) in seconds
billing_cycle
The number of billing cycles of the subscription that the contract term is for.
integer, min=0
action_at_term_end
Action to be taken when the contract term completes.
enumerated string, default=renew
Possible values are
renew
  • Contract term completes and a new contract term is started for the number of billing cycles specified in contract_billing_cycle_on_renewal.
  • The action_at_term_end for the new contract term is set to renew.
  • .
    evergreenContract term completes and the subscription renews.cancelContract term completes and subscription is canceled.renew_onceUsed when you want to renew the contract term just once. Does the following:
  • Contract term completes and a new contract term is started for the number of billing cycles specified in contract_billing_cycle_on_renewal.
  • The action_at_term_end for the new contract term is set to cancel.
  • .
    total_contract_value
    The sum of the totals of all the invoices raised as part of the contract term. For active contract terms, this includes the invoices raised thus far and estimated invoice totals till the end of the contract term. If the subscription was imported with the contract term, then this value includes the value passed for total_amount_raised.
    in cents, default=0, min=0
    cancellation_cutoff_period
    The number of days before contract_end, during which the customer is barred from canceling the contract term. The customer is allowed to cancel the contract term via the Self-Serve Portal only before this period. This allows you to have sufficient time for processing the contract term closure.
    optional, integer
    created_at
    The date when the contract term was created.
    timestamp(UTC) in seconds
    subscription_id
    The Id of the subscription that this contract term is for.
    string, max chars=50
    remaining_billing_cycles
    The number of subscription billing cycles remaining after the current one for the contract term. This attribute is only returned for active contract terms.
    optional, integer, min=0