Freemius Checkout is highly optimized for upsells. For example, if you’re selling both monthly and annual subscriptions, our Checkout will automatically upsell the annual pricing to your customers.
The checkout performs the upsell by automatically calculating the discounts when upgrading from a single unit monthly pricing and displaying the discount in the UI. Below is an example of how the checkout will display both annual discount and multi-site discount.
These discounts are calculated automatically; no additional setup is required from your side. Understanding how these discounts are calculated can help you better price your products and explain value to users.
There are three main types of automatic discounts:
- Annual Discount
- Multi-unit Discount
- Bundle Discount
A unit is the measure of primary entitlement of licenses you sell through Freemius. For SaaS, it could be credits; for Apps, it could be activations; for WordPress products, it is a Site. Freemius allows you to customize the unit label in the product settings.
Annual Discount
This discount applies when your product is available in both monthly and annual billing cycles.
If your product has a monthly price set, Freemius multiplies that monthly price by 12 (to represent a full year). Then, it compares that amount to your actual annual price. If the annual price is lower, the difference is shown to the customer as a discount.
Annual Discount = (Single Unit Monthly Price ร 12 - Single Unit Annual Price) ร Number of Licenses
Example
Let’s say a product has the following pricing:
Units | Monthly Price | Annual Price |
---|---|---|
1 | $10 | $100 |
3 | $25 | $250 |
5 | $40 | $400 |
The table below shows the annual discount for different numbers of licenses.
Number of Units (Licenses) | Calculation | Annual Discount |
---|---|---|
1 | (10 ร 12 โ 100) | $20 |
3 | (10 ร 12 โ 100) ร 3 | $60 |
Notice that when purchasing multiple units (licenses), we do not take the monthly and annual price of that pricing into account. This allows us to show multi-unit discounts separately.
Disabling the Annual Discount
- You can set the
annual_discount
setting tofalse
in the JS SDK to disable the annual discount. - If you’re using the Hosted Checkout, simply pass
annual_discount=0
to the checkout URL as a query parameter.
Multi-unit Discount
This applies when a customer selects more than one license unit, e.g., a 5-unit license (excluding unlimited licenses).
Freemius calculates what the total would cost if each license was priced individually (based on the current billing cycle), and then compares that to the actual price shown for the multi-license purchase.
Multi-unit Discount = (Single License Price ร Number of Licenses) - Current Price
Example
For the same pricing configuration as above, the table below shows the multi-unit discount for different numbers of licenses.
Billing Cycle | Number of Licenses | Calculation | Multi-unit Discount |
---|---|---|---|
Monthly | 3 | (10 ร 3) โ 25 | $5 |
Annual | 3 | (100 ร 3) โ 250 | $50 |
Monthly | 5 | (10 ร 5) โ 40 | $10 |
Annual | 5 | (100 ร 5) โ 400 | $100 |
Disabling the Multi-unit Discount
- You can set the
multisite_discount
setting tofalse
in the JS SDK to disable the multi-unit discount. - If you’re using the Hosted Checkout, simply pass
multisite_discount=0
to the checkout URL as a query parameter.
When the annual discount is disabled, the multi-unit discount is calculated based on the current billing cycle price and not the monthly price.
Bundle Discount
This applies when your product is part of a bundle of multiple products like plugins, themes, or add-ons.
- We calculate the sum of individual prices of all child products in the bundle. Let’s call this the base price.
- The annual and multi-unit discounts are calculated based on the bundle’s pricing.
- The remaining discount, after deducting the annual and multi-unit discounts, is attributed to the bundle discount.
Base Price Calculation Modes
The base price (undiscounted price) is calculated based on the bundle_discount
setting.
bundle_discount |
What Freemius Uses |
---|---|
maximize (default) |
Single Unit Monthly Price of each child ร current months ร license count |
true |
Current Unit and Current Billing Cycle Price of each child |
Example
Let’s say we have two plugins, A and B, with the following pricing:
Plugin A | Plugin B | |
---|---|---|
Monthly price | $10 | $20 |
Annual price | $100 | $200 |
In such a scenario, the bundle discount will be calculated as follows:
With bundle_discount
set to maximize
- Child sum = (10 + 20) ร 12 = $360
- Bundle price = $260
- Bundle discount = $360 โ $260 = $100
With bundle_discount
set to true
- Child sum (annual) = 100 + 200 = $300
- Bundle price = $260
- Bundle discount = $300 โ $260 = $40
When
bundle_discount
is not set tomaximize
, we intentionally do not show the Annual Discount percentage in the UI, because the breakdown price of the individual product changes based on the billing cycle itself.
Disabling the Bundle Discount
- You can set the
bundle_discount
setting tofalse
in the JS SDK to disable the bundle discount. - If you’re using the Hosted Checkout, simply pass
bundle_discount=0
to the checkout URL as a query parameter.
That covers everything about automatic discounts in Freemius Checkout. Based on these discounts, Freemius Checkout will automatically display various upsells to customers.
Let us know if you have questions or would like to optimize your pricing setup!