Skip to main content
Easy Digital Downloads Blog
WordPress Tutorials, Tips, and Resources to Help Grow Your Business

Software Licensing is one of our essential extensions that truly sets Easy Digital Downloads apart. It is what makes it possible for so many great software products to be sold and managed by developers and product creators around the world. It is also one of our oldest extensions and was first released on September 12, 2012.

Many parts of the plugin have begun to show their age. Today, however, we’re thrilled to announce the release of version 3.5 of Software Licensing, an update that makes dramatic improvements throughout the entire plugin.

There are a lot of improvements in this update. Let’s look at the highlights.

Redesigned licensing admin

There is a lot of data associated with license keys. In version 3.5 we have redesigned the most of the administration areas of Software Licensing.

Downloads → Licenses

The list table that shows all license keys has been improved to help remove clutter and improve the display on smaller screens.

License details screen

Each license key now has a dedicated details screen where all of the pertinent information for the license key is available. This screen also provides tools for action items, such as renewing or disabling a license, editing an expiration date, obtaining an upgrade URL, related license keys, and even related payment records. This makes managing license keys and locating associated customer and payment records much, much easier.

Improved upgrade proration

In version 3.3 we introduced upgrade paths for license keys that allowed customers to upgrade from one license level to the next. With the original upgrade paths feature we included support for simple proration that gave customers discounts on the upgrade based on how much they had already paid. We have now further improved upgrade paths by adding support for time-based proration discounts.

Site admins can now select either Cost-Based or Time-Based proration. With time-based calculations, the cost of an upgrade takes into account how much time is left on the existing license and then prorates the new purchase accordingly.

Per-item renewal discounts

License keys often need to be renewed on a monthly or yearly basis. For this Software Licensing has always supported renewal discounts so customers can receive a discount, such as 30%, when they renew an existing license key. In version 3.5 we have extended this feature to support per-item renewal discounts.

This means products can now have custom renewal discounts. Would you like to offer 20% on one product but 30% on another? Now you can!

Development API: EDD_SL_License class

Software Licensing is built for developers and product creators and in 3.5 we have dramatically improved the internal APIs to make it easier for developers to work with and extend Software Licensing. The new EDD_SL_License class provides easy access to all data associated with license keys and makes interacting with and adjusting that data easy.

Beta versions

Successful software update releases often include beta versions (like 3.5 of Software Licensing) so we have introduced a new feature that allows you to release beta versions of your software and provide customers with an easy way to install those beta versions.

See our documentation for more information.

We actually used this feature to release a beta version of Software Licensing 3.5 several weeks ago.

New updater classes for WordPress themes and plugins

The updater classes for WordPress themes and plugins have been updated to fix some bugs, improve performance, and make new features (such as beta versions) available. Please update your themes and plugins if you use these classes.

The new versions of the classes are:

  • 1.6.9 for plugins
  • 1.0.2 for themes

Other improvements

Along with the new features noted above, we’ve made a significant number of additional improvements as well.

  • A new option has been added to enforce email matching on license renewals. This allows site admins to require that license renewals be purchased with the same email address as the original license.
  • The EDD_SL_Plugin_Updater class has improved caching and support for beta versions. Please update your integrations.
  • The EDD_Theme_Updater class has been updated with support for beta versions. Please update your integrations.
  • New action hooks have been added to the license renewal process.
  • New filters have been added to get_licenses_of_purchase() and get_licenses_by_purchase().
  • License keys are now included in the /sales/ endpoint of the EDD REST API.
  • License keys for bundles are now grouped in the [edd_license_keys] shortcode display.
  • License upgrade purchases can now be performed through a direct URL.
  • License keys and associated meta data are now deleted when a complete store reset is done.
  • The license keys metabox in View Order Details has been improved.
  • Inline upgrade links can now be shown on purchase buttons.
  • MD5 checksums are now included in all license REST API responses.
  • A new {expiration_time} template tag has been added to license renewal notice emails.
  • A new option has been added to disable discount codes on license renewals.
  • Banner images can now be added to WordPress plugins through the ReadMe.txt parsing.
  • License keys list table can now be filtered by download product ID by entering download:# in the search field.
  • Improved labels and layout of the licensing metabox.
  • Improved file organization and naming.

Bugs fixed

A number of major and minor bugs have also been fixed.

  • Action links on license keys list table should return user to previous screen.
  • Extra paragraphs added to license renewal notice emails
  • Expiration dates are shown in GMT instead of local time.
  • Incorrect renewal flags and discounts left in cart when removing renewal from cart.
  • Invalid download message returned when using “item_name” instead of “item_id” in licensing REST API.
  • Incorrect license keys generated when re-generating keys for a purchase.
  • Updating customer email does not update the email address on license keys.
  • Error message shown when loading “View Update Details” modal window multiple times.
  • Upgrade paths shown for expired and disabled license keys.
  • Incorrect upgrade path set as the default when products contain variable prices.
  • Extend license link missing from View Licenses page in frontend Purchase History.
  • Duplicate license keys created when regenerating license keys on a purchase.
  • Site URLs can still be managed by customer when license is disabled.
  • Setting a license key to lifetime does not update the status of the license.
  • License keys improperly set to disabled when a refund is processed for a renewal.
  • Extra dash shown on checkout when renewing a license key without variable prices.
  • Deleting a renewal payment also deletes the associated license key.

How to get the update

Version 3.5 of Software Licensing can be downloaded from your account page or through one-click updates inside of your WordPress install. If you’re new to Software Licensing, the extension can be purchased from the product page.

Using WordPress and want to get Easy Digital Downloads for free?

Enter the URL to your WordPress website to install.

Disclosure: Our content is reader-supported. This means if you click on some of our links, then we may earn a commission. We only recommend products that we believe will add value to our readers.


  1. Pippin Williamson

    Awesome job Pippin and team.

    One area i will love to see improvement is the account page. I know we can customize it as we want, but a pretty and basic look for it would be great.

    1. Pippin Williamson
  2. Pippin Williamson
  3. Pippin Williamson

    Love your plugin. It makes the shop owner more professional having a license for your software. Thank you for the improvements!

  4. Pippin Williamson
  5. Pippin Williamson

    I wish to sell downloadable PDF plan sets. Can the system set how many times they can be printed by the client?

    1. Pippin Williamson
  6. Pippin Williamson

    Thank you for the great improvements! For me to understand it: Why is the new version not available via the backend and has to be downloaded manually?

    1. Pippin Williamson
      1. Pippin Williamson
  7. Pippin Williamson
  8. Pippin Williamson

    Excited to see the time-based proration. Is there a way to specify a maximum prorate amount to prevent someone from upgrading their license at the end of their license cycle and paying next to nothing?

    1. Pippin Williamson
      1. Pippin Williamson

        No problem. It looks like there’s a filter on that value, so I could implement my own limits. Thanks!

        Btw, LOVE the beta testing feature. I’ve been wanting to come up with my own solution for a while now. Now I don’t have to 🙂

  9. Pippin Williamson

    These updates are very great, thank you fo the hard work !

    That said, I can see that another thing as evolved : the price.
    It was 89$ two months ago and it is now 199$ for a single site. It is the most expensive single site license I never saw for a WordPress plugin.

    I do understand that the more money you make, the more you will be able to hire people to make the support and continue the dev,
    But don’t you think that 199$ close the doors of this plugin (and so, to e-selling of WordPress plugins/themes with license management and updates feature) to a lot of small business companies ?

    Not every WordPress developers, even for premium plugins, do that full time, it can be a side activity to earn few dollars here and there… and for which paying 199$ might be too much to worth it. Some plugins are also develop for one client only, and are not sell to thousands of people.

    You could propose more offers (based on the number of site to actvate), or a revenue based offer, like Cockos do for REAPER (eg, if you make more than 20 000$ a year with WP plugins then choose this offer, else chose this one).
    Or, as you need contributions to make the project grow up, to propose big discount for contributors to your GutHub repo or translations. As I myself freely contributed to some of your open source repo, I found it a bit excessive to have to pay that much for the future updates.

    I hope you will find the right balance between making profits and allow your project to grow up, and still being affordable for all small WordPress developers out there.
    IMHO, having a reasonably affordable WordPress Premium Plugins solution is a great thing for the WordPress community in general, as it can allow more people to invest time in custom plugin development solution.

    Of course, we are all thankfull for the free EDD core plugin, but as Software Licensing is your main plugin and allow more WP devs to join, I think it should stay affordable.

    Thanks for your consideration.

    1. Pippin Williamson

      While I thought some of the same things with the price jump, if you look at all the Software Licensing extension supports the alternative of building and maintaining your own version makes it quite worth while:

      – Automatic license generation
      – License management interface
      – Revoking licenses on refunds/cancellations
      – Automatic plugin updates
      – License upgrades and downgrades
      – Expiry notices and discounts on renewals
      – Parsing of your plugin’s readme.txt (if hosted somewhere public)
      – Beta versions
      – Sample integration to add the above to your WP plugin/theme

      Not to mention the support Pippin and his team provides. If you’re selling your plugin for a decent price (ie. over $50, which you really should be) it doesn’t take long for it to pay itself off and then some. Plus if you value your time spending countless hours building and maintaining your own of the above is time better spent marketing and selling your plugin/theme.

      There are free alternatives for certain aspects (like for updates), but integrating everything in one solution with you in control of the data? EDD SL is the best bet.

      If you’re not sure if people will buy your plugin or theme you could always just start with the free version of EDD, sell a few copies of your plugin, then make the investment in the business and add in software licensing afterwards.

    2. Pippin Williamson

      The math shows that EDD SL is an incredible value for any business. $199 equals $17/month on year one then $12/month after that, considering the renewal discount. If a business sells themes or plugins for $50 then they only need to allocate a fraction of one sale each month to cover the cost of SL. The business can keep the rest of that sale — and all the sales after it for the month.

      If a business cannot do that then it is utterly failing in terms of revenue. That’s a problem with the business and not with EDD SL pricing. If a business is unwilling to share a fraction of one sale each month with the provider of a product (part of which is free) that powers their store, then that’s a whole other issue.

      Thank you, Pippin, for making licensing, updates and renewals easy and affordable for any business. Thank you for making EDD itself free. And thank you for ongoing updates and support, even for the free product. You provide an incredible value. I’m glad you raised prices. I have felt a little like a thief for years. I should only feel a little guilty next time I renew.

    3. Pippin Williamson

      If it was not clear,
      I do think EDD Software Licensing is a fantastic peace of software,
      That it definitely worth the price for a successful WordPress/Software business company,
      that the support is awesome,
      and that Pippin is very generous with the free EDD in the first place.

      I personally freely contributed back by sharing some code snippets to different EDD repos on GitHub, as a way to say thank you, and I bough several plugins inclusind this one.
      So be sure that product value is not what my post is about. I am just talking about entry price affordability, for people who doesn’t even make any revenue with WordPress yet for eg (like for their first plugin), and for people who want to have very affordable products (like 10$ a plugin) and still doesn’t make a lot of sales, or any other cases that doesn’t fit the “successful WordPress business company” case. It is because I love this plugin that I want it to stay affordable to others. 🙂

      I totally understand his new pricing policy. It will be very good for EDD business, and so, for all customers who could surely benefit from more support, more updates etc.

      Again, I am very thankful to pippin and all the team for their great jobs.

  10. Pippin Williamson

    Is the license keys output from this plugin per product (each product gets unique key) or per user (each user gets unique key). Is the list of keys auto generated of can I supply the list?

    1. Pippin Williamson
      1. Pippin Williamson

        Per product, hmmmm, okay. So that means that everyone who buys 1 specific digital product gets the same license key. Sorry, but that seems like such a big limitation for such a well-touted system (EDD) and a software licensing plugin (Software Licensing) — I hope that I’m misunderstanding (I realize that my original question could have been clearer) and that each user who purchases a specific digital product gets a unique key for that product. If not, I guess I’ll keep looking.

        1. Pippin Williamson

          No, everyone gets a unique license key. And it will be different for each product (ie. if a customer purchases two products, they get a unique key for each one). So you’re all set 🙂

          1. Pippin Williamson
          2. Pippin Williamson
    2. Pippin Williamson
  11. Pippin Williamson

    Pippin, can i restrict my Pro plugin usage, if license was not entered? Like protect my work of sorts?

    Also how do i integrate license entering into my plugin, and make it unusable, until license is entered?

    Finally, a stupid question – is Stripe included in your $799 bundle?

    Thanks very much

    1. Pippin Williamson

      Yes you that. That can be done by implementing a verification process in your plugin that queries the licensing API to determine if the entered license is valid.

      Stripe is not included in the $799 bundle at this time.

      1. Pippin Williamson

        Pippin, thanks for reply – I figured out what add-ons I need.

        No more on licensing:

        When I implement licensing API to my plugin, will it add an “Enter License” screen before the actual plugin is shown, or I need to do that myself?

        I looked at API docs – but there are so many. Can you point me to the right one (link) …


        PS – in your Starter Package an accounting add-on is required, and I don’t want one … this is quiet annoying, as my total cart amount is over $900 .. but none of them from Accounting column …

        Maybe fix that? I mean if you let people chose what they want, you should not force them to buy something they don’t want … just saying.

        1. Pippin Williamson

          Our sample plugin, included with Software Licensing, will include a demonstration of how to add the license key settings screen. The license key can be integrated into an existing settings screen or given its own.

          The Starter Package includes an automatic 30% discount and so a minimum purchase amount is enforced, otherwise it wouldn’t make sense for us to offer the Starter Package at a discount 🙂

  12. Pippin Williamson

    Is the documentation still up-to-date?

    I’m reading about adding it to an edd plugin:

    But when I actually dig deeper into it, I noticed one can also simply use

    if ( class_exists( ‘EDD_License’ ) ) {
    $license = new EDD_License( $plugin_file, $product_name, $product_version, $author_name, $item_id, $store_url

    What’s the difference between those two and which is preferred?

    1. Pippin Williamson

      The EDD_License class is for plugins that extend EDD and wish to have their license key added to the Downloads > Settings > Licenses page.

      If you’re building a plugin that is not dependent on EDD, you will want to follow the main documentation and use the EDD_SL_Plugin_Updater class.

Leave a Reply

Your email address will not be published. Required fields are marked *