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

Today we are thrilled to announce that Easy Digital Downloads version 2.0 is now available for download and install from your WordPress admin.

The mantra for version 2.0 was refinement. Over the last six months, we have spent countless hours working to improve not only major features of the plugin but also the little details. When building a product that is easy to use, it is often the minor details that really make a significant difference.

Version 2.0 includes 127 separate improvements and bug fixes, the most of any release to date.

While we are pleased with all of the improvements that have been made, there are a few significant changes that I’d like to walk through with you.

Discount Codes

A lot of time was spent refining discount codes in EDD version 2.0 and several aspects of them have been significantly improved.

First and foremost, the edit screen for discounts is simpler and much easier to understand, especially the Download Requirements section. It was massively confusing previously; now it looks like this:

Screenshot from 2014-05-21 14:13:38

Second, we have improved the redemption process for discount codes during checkout. When an invalid discount code is entered, an inline message is displayed with the reason the discount code is invalid. This helps the customer understand exactly why their discount cannot be redeemed, whether it be due to an invalid code or one that is simply expired.

Third, we have made some improvements to the UI for applying a discount code. Previously discount codes were applied as soon as the input field lost focus. While this was great for the users that understood how it worked, many users felt it was not intuitive. We have resolved the confusion by introducing a dedicated Apply button to the discount field.


There have been three significant improvements to the checkout screen.

First, when cart item quantities are enabled, there used to be an “Update Cart” button displayed for updating the quantities and prices after quantities were changed. This occasionally caused purchase errors because customers didn’t always realize they needed to click “Update Cart” in order for the checkout to reflect their changes. We decided it would be better if we simply updated cart prices (subtotal, taxes, discounts, and total included) automatically any time cart quantities are adjusted. This now all happens in the background with AJAX to provide the customer with a live-refresh of their checkout screen.

Second, we’ve introduced an option to control exactly how the registration / login forms are displayed on the checkout screen. You used to limited turning the registration / login forms on / off as a whole. Now you can enable just the login form, just the registration form, both, or neither form.

Screenshot from 2014-05-21 14:20:12

Third, we’ve added an option to enforce SSL on checkout. This will take care of redirecting non-https requests to https and will also ensure that all assets, such as images and script files, are loaded via https.

Payment History

The Payment History screens, some of the most important in the entire plugin, have received several significant improvements.

First, we’ve added the option to generate new file download URLs for any purchase directly from the View Order Details screen. We’ve also added a link between the View Order Details screen and the File Downloads log section in Reports that lets you easily jump from the order details to the file download history for any purchase.

Second, we have introduced Sequential Order numbers in EDD core. You can enable sequential order numbers from Downloads > Settings > Misc. There are also options to define the starting number, the prefix, and the postfix for order numbers. Along with providing sequential order numbers, we’ve also included an upgrade routine that will allow you to upgrade all previous payment records with sequential numbers.

The third major improvement we made is the introduction of improved search routines that allow you to search by payment transaction IDs. If you have the transaction ID from PayPal, Stripe, or some other payment gateway, you can now easily locate the corresponding EDD payment record by simply searching by the transaction ID.


The EDD REST API has received a few minor improvements, including performance improvements and the ability to search for specific payment records in the API requests.

We have fixed a few issues with how the API Request logs are generated and displayed, as well as several other minor UI elements.

The most significant change with the REST API, however, is the introduction of the new API Keys tab in the Tools page:

Screenshot from 2014-05-21 14:28:44

Since the introduction of the EDD REST API, the API keys have been pretty well hidden in the depths of the user edit screens, so many, many users were not even aware that it existed. This UI will help to bring one of the most powerful pieces of Easy Digital Downloads into the light, making it even more valuable as more and more users utilize it.

With the new API Keys UI, site admins can easily view all API keys for the site and even reissue or revoke keys as needed. New API keys can also be generated from this screen. In the case that you suspect you may have a compromised API key, or one that is being abused by its user, there is a simple link for each API key that takes you to the API Request log for that particular key.


The Tools page has received some significant improvements and now holds several features that were previously spread out through the plugin. The System Info section is now in a tab under tools, as are the export / import tools for the EDD settings.

With the new Tools UI, we’ve introduced the option to blacklist specific email address. If you have email addresses that are used to make fraudulent purchases, you can now put those emails onto the banned list, preventing them from ever making a purchase again. This feature was previously offered as a free extension but was so useful for so many people, we chose to put it into core.


The export options EDD provides have received three nice improvements.

First, we’ve introduced the ability to export Earnings and Sales stats overtime for a specific date range. This allows you to generate a CSV of monthly earnings and sales between two points, such as January 2013 to March 2014.

Screenshot from 2014-05-21 14:36:07

Second, we’ve improved the payment history export option so that it now includes the customer’s billing address for wach payment record (if collected).

Third, the customer export option now supports exporting customers of a specific product AND a specific price option. Previously it was only possible to export customers of a product, not the price option as well.

Other Improvements

There have been numerous other improvements throughout the plugin that really help bring it to a new level of polish, but a couple of the important ones to note are:

  • The shopping cart template is now much more flexible.
  • There is a new template file for the [edd_login] short code
  • There is a new short code and template file for a stand alone registration form, [edd_register]
  • The checkbox anti-pattern throughout the plugin has been mostly reversed
  • Numerous new action and filter hooks have been added
  • 100% discount codes now work with credit card payment gateways, such as Stripe and
  • The [purchase_link] short code can now be used with SKUs
  • The EDD_Fees API now supports “item” and “fee” types for virtual product purchases. The checkout process also allows purchases that only contain an “item” fee. Products are no longer required to be in the shopping cart to make a purchase.
  • The EDD_Fees API now allows for fees to be marked as non-taxable
  • The Sales Summary widget has received some nice improvements

Complete Change Log

New: Added support for sequential order numbers
New: Added a new [edd_register] short code
New: Added an enforce SSL option
New: Added greatly improved discount code validation during checkout
New: Added a new API Keys list table in Downloads > Tools
New: Added support for making purchases with cart fees only
New: Added support for searching for specific payments via the REST API
New: Added a tabbed interface to the Tools page
New: Added an option to generate file download URLs from the View Order Details screen
New: Added JS events for all frontend cart / checkout actions
New: Added an “Apply” button to the checkout discount field
New: Added an Earnings / Sales Overtime export tool
New: Added support for searching payment records by transaction ID
New: Added a template file for the [edd_login]
New: Added support for Revisions to the Downloads post type
New: Added {discount_codes} template tag to purchase receipt emails
New: Added no-index, no-follow to checkout and account pages
New: Added options to control how the login / registration forms are displayed on checkout
New: Added support for passing a discount code to the checkout screen via a query arg
New: Added textarea support to the EDD_HTML_Elements class
New: Added support for exporting customers of a specific product and a specific price option
New: Introduced edd_get_*_by() functions for downloads and discounts
New: Introduced a edd_get_users_purchased_products() function
New: Introduced a edd_is_host() function

Tweak: Removed the “Update” cart button and added a background update process so amounts and quantities are updated automatically.
Tweak: Added billing address to payment history export
Tweak: Added average earnings / sales to the detailed earnings reports for products
Tweak: Added a link to the File Downloads log from View Order Details
Tweak: Added a “was_completed” meta flag for payment records
Tweak: Reversed some of the checkbox anti-patterns
Tweak: Added support showing all Download products in the [downloads] short code
Tweak: Log the reason a payment is marked as failed from PayPal
Tweak: Added a columns variable to the edd_download_class filter
Tweak: Added tax settings to the System Info
Tweak: Added improved hooks to the edd_shopping_cart() function
Tweak: Added a link to the product edit screens for each Download in the Purchased Downloads section of View Order Details
Tweak: Added $payment_id to the edd_view_order_details_form_top action
Tweak: Modified the way that the global file download limit affects individual file download limits
Tweak: Add support for identifying products in by an SKU
Tweak: Added support for hiding the credit card form if a 100% discount code is redeemed
Tweak: Added support for moving the checkout cart to the bottom of the checkout screen
Tweak: Improved the Product Requirements section of the discount edit screen
Tweak: Improved the Amount field of the discount edit screen
Tweak: Added WP_LANG constant to the System Info
Tweak: Improved order history display for non-completed payments in the purchase history
Tweak: Removed unnecessary serialization of payment meta

Bug: Cart fees weren’t properly taxed
Bug: JS error caused by error in the German translation
Bug: The File Download Limit field couldn’t be left empty
Bug: Expiration dates were set improperly in WP_Session, resulting in the garbage collection not working
Bug: Payment method icons fail to load properly on Windows servers
Bug: Entering a currency sign in the price field results in an invalid amount on save
Bug: Incorrect data format passed to number_format()
Bug: edd_before_download_content action fired too early
Bug: Customer names longer than two words cannot be properly saved in payment meta
Bug: “Activate” button for discounts fails if a discount is expired
Bug: Country field during checkout wasn’t actually required
Bug: Duplicate IDs when multiple purchase buttons for the same product are on the same page
Bug: Cart totals incorrect when redeeming multiple discounts
Bug: File download limits cannot be reset
Bug: File URLs and other fields in File Downloads secttions are not trimmed of whitespace
Bug: Currency signs improperly encoded in the email subject of purchase receipts
Bug: Improper decimal points in Dashboard Summary widget sale counts
Bug: State / province fields loaded in Taxes settings when not needed
Bug: Custom events not purged from WP Cron when EDD is deactivated
Bug: Dates for “Last Quarter” incorrect Custom reports
Bug: Filtering payment history by a guest user fails
Bug: EDD_Payments_Query cannot be instantiated multiple times
Bug: Spaces cannot be used for the thousands separator
Bug: Undefined index “state” in System Info
Bug: 400 bad request error during API calls
Bug: Improper behavior during extension license deactivation
Bug: Restored the Unlimited File Downloads option for payment records
Bug: API request logs not properly displayed
Bug: Duplicate label in View Order Details
Bug: Live credit card verification doesn’t update the card type after initial check
Bug: Removed duplicate call to edd_get_payment_meta()
Bug: Removed duplicate comma in edd.css
Bug: Return value, not echo in metabox.php
Bug: View Order Details can be loaded for non-payment post types
Bug: Obsolete mfunc/mclude/dynamic-cached-content removed
Bug: Payment history cannot be sorted by date
Bug: Current view not properly displayed in the Logs table
Bug: Issuewith default payment gateway when no gateways are active

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

    Congratulations Pippin! Awesome stuff! Great job! 🙂

    (Lots of exclamation points there…)

    Is there a list anywhere of the bug fixes that took place between Beta 1 and release (today)? Would love to see it.

  2. Pippin Williamson

    Huge congratulations…I know this was a massive effort. Thanks Pippin for all your tireless work on it.

    (Eagerly anticipating the compatible CSV importer so I can get all the content in there!)

  3. Pippin Williamson
  4. Pippin Williamson

    Finally having Sequential Order numbers in EDD I am sure a lot of european sellers are very happy today 😉 Great update overall, Pippin.

  5. Pippin Williamson
  6. Pippin Williamson

    Now my emails with the download file is not being sent out since the update. How can we fix this immediately?

    1. Pippin Williamson

      Could you open a ticket in the support forums for me? We will be more than happy to assist.

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

    Looks awesome. Lots of these improvements have been on my wish list for a while!

    1. Pippin Williamson

      Since this update my emails with the download link have not been sending when my customers purchase.

      Do I need to reinstall the EDD plug in?

  8. Pippin Williamson

    I want to be able to sell different levels of a digital download product using one page, for example:
    Super Drum Kit 200 – $50
    Super Drum Kit 100 -$30
    Super Drum Kit 50 – $17
    I saw a feature on one of the videos which allowed the customer to choose using a pull down arrow or button to make a selection. Is this feature included with Music Maker Theme or EDD? Or is it an extension? I need this feature but don’t want to pay again if it’s already in Music Maker Theme.

    1. Pippin Williamson
  9. Pingback: Weekly Roundup: June 6, 2014 | Sell with WP
  10. Pingback: Refinement: the greatly unappreciated aspect of project releases | Pippins Plugins
  11. Pippin Williamson

    I Purchased Easy Digital Downloads – Amazon S3 version 2.0.2 and after activating this plugin I have not seen download in the menu of my dashboard. Please help me.

    1. Pippin Williamson
      1. Pippin Williamson

        Not before. But now its working after installing main edd plugin. But i am facing an another problem.

        Warning: S3::putObject(): [AccessDenied] Access Denied in /var/www/vhosts/ on line 383

        I have filled all the required aws keys.

        1. Pippin Williamson

Leave a Reply

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