There are advantages for both the software vendor and the user of the software to move from a perpetual non-expiring model to a subscription model. The IDC 2016 Software Licensing and Pricing Predictions report cites that software subscription revenue will continue its rapid growth trajectory to reach $130 billion in 2016, a 21% increase over 2015. We have seen tremendous growth in large companies offering subscription-based licenses. Companies like Adobe, Microsoft, AutoDesk, and Apple are offering software and even hardware under subscription. In fact, some software that was previously available under a perpetual license is now only available as a subscription.
When licensing software under a subscription, typically two to three components will work together:
There are two approaches to the way the Licensing Client and the Licensing Server communicate. Both approaches have the same end result of automatically expiring the subscription license if the customer ends or cancels their subscription payments.
The subscription verification APIs offered by the Licensing Client and Licensing Server are great for basic validation of a subscription when both devices are able to communicate with each other. However, we must admit that even though internet service is readily available these days, it can’t be guaranteed at all times and at all places. With the explosion of software running on various new platforms and devices – such as mobile and embedded/IoT devices – securely caching your license/subscription status increases your application’s reliability and availability – via local validation that can take place during the subscription period.
Therefore, it is recommended to create the subscription license inside of the Licensing Server and create a cached local license file saved to the customer’s device once they activate. This allows license entitlements to be enforced without always requiring a connection to the Licensing Server, and only periodic validations are required to check for updates to the license.
This approach updates the license expiration date in the License Server whenever a subscription payment is successfully processed. When the customer activates, the local license file will be set with the same expiration date as set in the Licensing Server. When the software checks the local license file and sees the license is near the subscription expiration, it can begin to poll the Licensing Server to see if the date was extended by another period, which occurs if a subscription payment is successfully processed. The validation process will update the local license file with the new expiration date and the software can continue to run without interrupting the user. If the customer can’t connect to the internet, they will not be able to get an updated expiration date and will be locked out of the software until they are able to validate with the Licensing Server. If the customer stops paying for their subscription, the license will eventually expire.
If you are using an integrated Licensing Server and eCommerce Server, this approach should be simple and gives you more control over the warning messages that can be presented to users about needing to renew their subscription. Also, an integrated Licensing and eCommerce Server might have a “plan cancellation” feature that customers can use to stop future subscription billing while the software will continue to be licensed through the current local expiration date of the subscription.
This approach does not use a specific expiration date, but enforces software termination if the customer misses a subscription payment or otherwise cancels the subscription. In this case, you issue a license without an expiration date, and the Licensing Client implementation needs to be configured to require periodic validation with the Licensing Server to check the license status. If the subscription license status is voided due to a missed payment or cancellation, the software will be deactivated. It is important to make this validation with the Licensing Server mandatory so that the customer cannot simply block the connection to the Licensing Server. The software can warn the customer if it is unable to validate, and then will automatically deactivate after a pre-defined grace period.
This can be the simplest implementation when the Licensing Server and eCommerce Server are two different systems as it minimizes the amount of integration between the two systems.
Both approaches offer the ability to license software on a subscription basis with certain advantages and levels of integration required by each approach.
When using the integrated configuration of the SoftwareKey System, either approach can be used. When integrating the SoftwareKey System for Licensing with another eCommerce solution (such as FastSpring), the License Status approach offers the easiest steps for integration.
Mike Wozniak is one of the co-founders of SoftwareKey.com and responsible for marketing, content and product strategy. When he isn't plotting new ways to help customers solve licensing and business automation challenges, he likes to travel and entertain guests who come to visit the Orlando area. He also writes most of the licensing tips here.
SOLO Server PayPal Integration Changes for TLS 1.2
FastSpring and SoftwareKey – bringing together the best in eCommerce and software licensing
Choosing an eCommerce System for selling your Licensed Applications
Licensing Plug-ins for Other Applications: 5 Tips
Drive Sales and Customer Retention with Thorough Testing
How to Satisfy Widely Diverse Customer Licensing Requirements