Provides a framework for selling access to local or remote resources.

In practice, this means that there’s a license entity, usually created during order checkout, that holds information about accessing the purchased resource, and it has a status and an optional expiration date. This allows selling access to anything from files to node types, or perhaps ZenDesk tickets and accounts on remote sites, all using a common API, while always having a record of the purchased access for the benefit of both the store administrator and the customer.

Drupal 8

Alpha release has some known limitations.

Works with Commerce Recurring for license subscriptions.

See this issue for setup instructions.

Drupal 7


  • Any kind of local or remote resource be licensed.
    Licenses are entities. Licensed types are implemented as classes (thanks to Entity Bundle Plugin) and contain all relevant logic.
  • A license can be configurable, allowing its fields to be edited straight on the add to cart form (through Inline Entity Form), or through a checkout pane.
  • Remote licenses are synchronizable, allowing a remote service to be contacted each time the status changes (to create / suspend an account, or anything else).
  • A checkout pane for the "complete" step shows the access details of the bought licenses, and in the case of remote licenses, refreshes itself until advanced queue processes the sync.
  • Licenses can be time limited, and are automatically expired (by cron) once that time passes.


  • commerce_license_example: demonstrates the API for both local and remote licenses.
  • commerce_license_role: allows roles to be licensed. The customer receives the role
    referenced by the purchased license product. Changing $license->product_id (from "Basic Membership" to "Premium Membership", for instance) changes the owner's role.

See the documentation page for information on getting started.
Also see this tutorial for information on creating your own license plugins.


ctools, Entity API, Views Bulk Operations, Entity bundle plugin, Entity reference.
Remote licenses require Advanced queue (used for synchronization).
Integrates with Inline Entity Form, if available.


Supporting organizations: 
Paid for development time

Project information