LicenseSpring

Feature-Based Licensing: Gate, Meter, and Monetize Individual Product Features

Enable, disable, and meter individual product features with LicenseSpring's licensing infrastructure. Grant customers access to specific modules, track feature usage, and enforce consumption limits without building custom entitlement logic from scratch.

  • ISO 27001
  • Trusted by global software vendors
  • Developer-first APIs & SDKs

Sell Tiers, Gate Modules, and Charge Per Operation, Without Rewriting Your Codebase

Most software products contain multiple modules, tiers, or premium capabilities. Feature-based licensing gives vendors precise control over which functionality each customer can access, making it possible to build flexible pricing models without restructuring your codebase.

Example Use Cases
Use CaseExample
Module-based pricing
Advanced analytics available only in Enterprise tier
Pay-per-operation
Charge per report generation
AI or compute usage
Meter GPU-intensive operations
Add-on capabilities
Enable premium integrations
Hardware-enabled features
Unlock capabilities in industrial equipment

Key commercial applications include

  • Selling modular product tiers (Basic/Pro/Enterprise)
  • Gating premium functionality behind licenses
  • Tracking usage of specific capabilities
  • Enabling consumption-based pricing models
  • Launching new monetization strategies without rewriting application logic

Feature Controls Work on Top of Any Licensing Model You Already Use

Feature controls in LicenseSpring are not limited to a specific license model. Feature gating works with all license types (perpetual, subscription, time-limited, floating, and node-locked). This means you can layer feature entitlements on top of whatever licensing model your product already uses.

A few things this makes possible that vendors often find useful:

Features can have their own expiry dates, independent of the license. A license valid until end of year can include a premium feature that expires after 30 days, useful for trials of specific capabilities, promotional access, or temporary unlocks without issuing a separate license.

Features can be added or removed at any time. If you want to temporarily enable a premium module for a customer for an evaluation period, an upsell trial, or a support scenario, you can do that without touching the underlying license. When the period ends, the feature expires or gets removed; the license continues as normal.

Both activation-based and consumption-based features work this way. Independent expiry and mid-term changes apply to both feature types, giving you the same flexibility regardless of whether a feature is a binary on/off or a metered usage allowance.

Binary Feature Flags or Metered Usage: Choose How Each Feature Is Enforced

LicenseSpring supports two core approaches to feature entitlements, which can be used independently or together on the same license.

Activation-Based Features: On or Off, Based on What the License Grants

Activation-based features are straightforward: a feature is either enabled or disabled based on what the license grants. There's no usage tracking. Instead, the application checks whether the feature is on, and behaves accordingly.

Typical uses
  • Premium modules and product tiers

  • Feature flags

  • Add-on integrations

  • Hardware-enabled capabilities

Consumption-Based Features: Track and Enforce Usage Per Operation

Consumption features track how often a capability is used. Each feature carries a configurable maximum consumption limit, and usage increments against that limit as the application runs.

Configurable options include
  • Maximum usage limits

  • Overage rules

  • Automatic usage period resets

  • Local or server-side consumption tracking

FeatureExample Metering
Report generation
100 reports/month
AI inference requests
1,000 API calls
Rendering operations
Per-frame billing
Data exports
Limited export volume

Implement enterprise-grade licensing in days, not months.

Set Up Feature Licensing in Four Steps

LicenseSpring lets developers define product features directly in the platform and assign them to licenses without custom backend work.

Setup workflow
1Create features in the LicenseSpring dashboard
2Assign features to licenses with optional independent expiry dates
3Retrieve feature state through the SDK
4Enforce entitlement logic in your application

Query Feature State Directly From Your Application

Developers can check feature state using SDK methods available across multiple languages: C++, C#, Java, Python, Go, and Swift.

Retrieve a Specific Feature

Use the feature code to check whether a capability is available on the current license:

Returns a LicenseFeature object, or throws an exception if the feature does not exist.

C/C++
license->feature("feature_code");

Retrieve All Features

Retrieve every feature assigned to a license in a single call:

C/C++
license->feature("feature_code");

Returns a collection of feature objects for the application to evaluate, including active, expired, and consumption-based features.

Increment Usage as Your Application Runs

For consumption-based features, usage is incremented through the SDK as the application runs:

C/C++
license->updateFeatureConsumption("feature_code", 1, true);
ParameterDescription
feature_code
Unique identifier for the feature
consumption value
Amount to increment
local storage
Whether consumption is cached locally before syncing
This enables pay-per-use pricing, usage quotas, and consumption-based billing models, all enforced through the same licensing infrastructure.

Choose Where Consumption Is Tracked: On-Device, Server-Side, or Both

LicenseSpring supports two consumption tracking strategies, which can be combined depending on deployment requirements.

1. Local Consumption

Usage is stored on the device first. This reduces API calls, improves runtime performance, and keeps consumption tracking functional in offline or air-gapped environments. Local data can be synchronized with the platform later.

2. Total Consumption

Total consumption aggregates usage recorded on the LicenseSpring platform with any locally cached values. This is the right model when multiple users or devices are drawing from a shared usage pool, ensuring limits are enforced accurately across the full deployment.

Keep Consumption Totals Consistent Across All Active Sessions

When tracking shared consumption across users or devices, sync usage explicitly:

C/C++
license->syncFeatureConsumption("feature_code");
This ensures consistent consumption totals and accurate enforcement of limits across all active sessions.

Manage Feature Expiry Without Breaking Your Application

Features can expire independently of the license, or be removed at any time through the Vendor Platform. LicenseSpring returns both active and expired feature states to the application so you can handle transitions cleanly:

C/C++
license->check(InstallFileFilter(), includeExpiredFeatures);
This allows applications to gracefully disable expired capabilities, or surface upsell prompts, rather than failing unexpectedly when a feature's access window closes.

Feature Licensing Is Just One Part of What LicenseSpring Supports

LicenseSpring handles the licensing infrastructure so you don't have to build it. Feature-based controls work alongside every other model the platform supports:

  • Perpetual licensing
  • Subscription licensing
  • Usage-based / metered licensing
  • Offline activation
  • Device fingerprinting
  • Floating license servers

Ready to Add Feature-Level Licensing to Your Product?

LicenseSpring provides the licensing engine to support real-world deployment environments, from cloud SaaS products to air-gapped enterprise installs. Capabilities at a glance:
  • Feature-level entitlements across all license types
  • Independent feature expiry dates
  • Consumption-based metering with local and server-side tracking
  • Offline licensing support
  • Multi-language SDKs
  • Air-gapped deployment compatibility
  • Hardware binding and device fingerprinting