Apply usage-based bill for subscriptions
The Cleverbridge platform supports usage-based billing and ensures that all usage-based bills are synced with client-hosted applications that calculate usage.
Usage-based billing Components and requirements
The process of usage-based billing involves the following system components:
Header | Details |
---|---|
Your System | Your system must be set up to track the usage, determine the billable amount of this usage, and pass the billable quantity to Cleverbridge. Cleverbridge will then use this quantity to bill the customer based on the per-unit price for the subscription item. |
Subscription API | Usage-based billing implies that customers are billed for the usage after the end of the billing interval. Use cases in the following sections explain different usage-based billing options that can be implemented using our Subscription API. |
ProcessCart API | If the ProcessCart API is used, then the usage is not tied to the subscription, and a one-time purchase is created. |
Usage-based billing use cases
General usage billing
- On March 17th, a customer purchases a SaaS data storage subscription that is billed monthly. This service is priced entirely upon the amount of data storage used each month using a formula that your organization applies to activity records within its data centers. Although the customer was required to enter payment information to complete the purchase, the customer is not billed at this time.
- At the end of the day on April 16th, you use a program that accesses the Update Subscription Item endpoint to update the usage quantity for the monthly billing interval that just ended. This program calculates usage for each subscription with a renewal date of April 17th.
- On April 17th, the Cleverbridge platform automatically bills each customer for the prior month's usage.
- Every subsequent month, you run the program to update subscriptions with usage information.
This use case calls the Update Subscription Item API endpoint as described below:
Parameter | Set to Value |
---|---|
SubscriptionId | The unique identifier of the subscription. |
RunningNumber | 1 (This subscription has only one item.) |
ProductId | Product ID for the subscription item usage. |
Quantity | Quantity of usage. |
AlignmentSettings | AlignToCurrentInterval: false GetCustomerPricePreviewOnly: false |
UpdateAction | See the note below. |
Billing for excess usage
It is also possible to charge your customers for excess usage. For example:
- On March 17th, a customer purchases a SaaS data storage subscription that consists of two subscription items billed on a recurring basis as follows:
- Base usage: €50 for up to 500 gigabytes, billed at the start of the monthly billing interval
- Excess usage: Storage used in excess of 500 gigabytes, billed at €1 per 25 gigabytes used and billed in arrears
- The same day, the Cleverbridge platform automatically bills the customer €50 for the base usage subscription item.
- At the end of the day on April 16th, the client applies a formula to activity records in its data centers to calculate the quantity of excess usage for each customer.
- The same day, you run a program that uses the Update Subscription Item endpoint to update the subscription's usage quantity in the Cleverbridge platform. This program calculates usage for each subscription with a renewal date of April 17th.
- On April 17th, the Cleverbridge platform automatically bills the customer €58, which is the sum of €50 for base usage and €8 for 200 gigabytes in excess. This use case calls the Update Subscription Item API endpoint as described below:
Parameter | Set to Value |
---|---|
SubscriptionId | The unique identifier of the subscription. |
RunningNumber | 2 (Excess usage is the second of the two subscription items.) |
ProductId | Product ID for the subscription item usage. |
Quantity | Quantity of excess usage. |
AlignmentSettings | AlignToCurrentInterval: false GetCustomerPricePreviewOnly: false |
UpdateAction | See the note below |
Using Quantity-Based Pricing
You can use a tiered or volume pricing approach to bill a customer for usage. For example:
-
On October 17th, a customer subscribes to a cloud messaging product that is billed at the end of every monthly billing interval based solely upon the number of messages sent during that billing interval. The customer was advised that usage during every billing interval would be priced according to the following tiers:
Number of Messages Price per Message 1,000 or fewer ¥5.00 1,001 – 10,000 ¥1.00 10,001 – 50,000 ¥0.75 50,001 – 100,000 ¥0.50 Over 100,000 ¥0.30 Although the customer was required to enter payment information to complete the purchase, the customer is not billed at this time.
-
At the end of the day on November 16th, the program running on your organization’s system does the following for each subscription with a renewal date of November 17th:
- Calculates the quantity of usage during the billing interval, and then uses the same table to determine the correct price at which to bill the usage quantity
- Uses the Update Subscription Item Price endpoint to update the subscription item’s quantity and price
-
On November 17th, the Cleverbridge platform automatically bills the customer ¥39,211 (78,421 messages sent, priced at ¥0.50 per message) during the billing interval that ended on November 16th.
This use case calls the Update Subscription Item Price API endpoint as described below:
Parameter | Set to Value |
---|---|
SubscriptionId | The unique identifier of the subscription. |
RunningNumber | 1 (it is assumed that the messages item is the only item in the subscription). |
Quantity | 78,421 |
AlignmentSettings | AlignToCurrentInterval: false |
GetCustomerPricePreviewOnly: false | |
CustomerPrice | CurrencyId: JPY IsGross: false |
Value: 0.50 | |
UpdateAction | See the note below. |
Illustration
Important comments
For all of the use-cases above, it is important to keep in mind the following information.
The use of "UpdateAction" Parameter
The UpdateAction
parameter is currently used for documentation and tracking only. The value set does not affect transaction processing.
The supported values are as follows:
- For upgrades, set the parameter to
upgrade
(or 1 for JSON) - For downgrades, set the parameter to
downgrade
, (or 2 for JSON) - For all other changes, set the parameter to
update
(or 0 for JSON)
Additional options
Although not covered in this use case, the following options are also available:
Reduce the price of the subscription by applying a discount coupon that was set up in the Cleverbridge platform. Suppress generation of the confirmation email to the customer for the transaction.
The Cleverbridge platform generates an email for new purchases that cannot be suppressed.
Get the customer's consent for changes to subscription-metrics. For more information, see Obtain customer consent.