Search Over 30,000 FREE Plugins from the Official WordPress Plugin Directory Repository

Easy Digital Downloads

The easiest way to sell digital products with WordPress.

Easy Digital Downloads is a complete e-commerce solution for selling digital and other non-physical products in a light, performant, and easy to use plugin. Rather than attempting to provide every feature under the sun, Easy Digital Downloads makes selling digital simple and complete by providing just the features you need.

Features of the plugin include:

  • Cart system for purchasing multiple downloads at once
  • Complete promotional code system
  • Many payment gateways. PayPal, Amazon, Test Payments are included by default with Stripe, PayPal Pro, PayPal Express, and others available as extensions
  • Complete payment history
  • User purchase history and ability to redownload files
  • Multiple files per downloadable product
  • Variable prices for multiple price options per product
  • Bundled products
  • Customizable purchase receipts
  • Earnings and sales charts
  • Detailed purchase and file download logs
  • Data export options for CSV and PDF
  • Add functionality with many extensions
  • Developer friendly with dozens of actions and filters. View developer documentation

More information at Easy Digital

Follow this plugin on GitHub

Sell and Track Software License Keys

Software Licensing for Easy Digital Downloads provides a complete license key generation, activation, and checking system. It allows you to provide license keys along with your digital products that can then be used to properly license and activate the buyer's copy of the software.

Includes a complete integration pack for delivering automatic upgrades for premium WordPress plugins and themes.

Build Up Your Email Subscribers

With extensions for MailChimp, Campaign Monitor, and AWeber, Wysija, ActiveCampaign, GetResponse, ConvertKit, Constant Contact, and more, Easy Digital Downloads can easily grow your email subscription lists while making you money at the same time.


Easy Digital Downloads has been translated into more than two dozen languages. The complete list of languages can be found in our FAQ.

Would you like to help translate the plugin into more languages? Join our WP-Translations Community.

Author Easy Digital Downloads
Contributors easydigitaldownloads, mordauk, sunnyratilal, chriscct7, section214, sumobi, sdavis2702, cklosows, mindctrl, sksmatt, SpencerFinnell, johnstonphilip
Tags digital downloads, download, downloads, e-commerce, e-store, eshop, wp ecommerce
  1. easy-digital-downloads screenshot 1

    Download products overview

  2. easy-digital-downloads screenshot 2

    Download configuration

  3. easy-digital-downloads screenshot 3

    Download configuration details

  4. easy-digital-downloads screenshot 4

    Payment History

  5. easy-digital-downloads screenshot 5

    Payment details

  6. easy-digital-downloads screenshot 6

    Discount codes

  7. easy-digital-downloads screenshot 7

    Earnings and sales reports

  8. easy-digital-downloads screenshot 8

    Add to cart / purchase button

  9. easy-digital-downloads screenshot 9

    Checkout screen

  1. Activate the plugin
  2. Go to Downloads > Settings and configure the options
  3. Create Downloadable products from the Downloads page
  4. Insert purchase buttons for any download via the "Insert Download" button next the Upload Media buttons
  5. For detailed setup instructions, vist the official Documentation page.

2.7.2, February 15, 2017

  • Fix: It was possible for the batch exporter base class to not be loaded before it was trying to be used.
  • Fix: Payments completed with the 'resume payment' feature prevented file download links from working.
  • New: EDD_Payments_Query now keeps a record of the initial arguments used, to allow better extensibility.

2.7.1, February 14, 2017

  • Fix: Checkout was showing wrong total price when certain fees were applied to the cart.
  • Fix: Plugin row meta linked to non-existent "Getting Started" page.
  • Fix: There was a typo in the link to our site when showing an error message for a license key.
  • Fix: Incorrect function name in new EDD_Discount class was being checked.

2.7, February 13, 2017

  • New: Introduced EDD_Cart class for managing the shopping cart contents.
  • New: Redesigned and improved functionality of the purchased downloads when viewing a payment.
  • New: The applied tax rate is now saved in the payment meta.
  • New: Created a tool that generates CSV earnings report.
  • New: Added the ability for users to complete abandoned/pending purchases.
  • New: Reduced number queries run during reports, improving performance.
  • New: Selected image size is now inserted into File URL field in Download Files box.
  • New: Added a link to the discount edit screen when viewing a payment.
  • New: Added an option to the cart widget that allows it to be hidden when empty.
  • New: Added support for all_blank on text inputs.
  • New: Messages registered with edd_set_error are now output via a hook.
  • New: Introduced the EDD_Discount class.
  • New: Created tool to export all Logs.
  • New: Improved WP CLI payment creation to support a date range.
  • New: Quantity fields can now be disabled on individual download products.
  • New: Added parent theme name to System Info when a child theme is detected.
  • New: Added lost password URL to log in form on checkout.
  • New: Introduce edd_get_payment which uses WordPress object cache to improve performance of getting payments.
  • New: EDD_Payment and edd_get_payment now accept a payment transaction ID.
  • New: Introduced a more EDD-specific downloads shortcode [edd_downloads].
  • New: Moved edd-ajax.min script to footer to allow async loading of jQuery.
  • New: Added a 'Refresh Reports' button to the graph view.
  • New: Variable priced bundles can now fully support a variable priced item being bundled.
  • New: Switched to using new IPN endpoints for PayPal Standard.
  • New: Zip / postal code now included in tax calculation function.
  • Tweak: Replaced all instances of get_post_meta() for payments with edd_get_payment_meta().
  • Tweak: Deprecated edd_get_earnings_by_date & edd_get_sales_by_date.
  • Tweak: Default gateway can no longer be set to a disabled gateway.
  • Tweak: Adjusted error message returned when a discount code is not yet active.
  • Tweak: Updated Profile Editor markup to match current EDD markup format.
  • Tweak: Removed loading of the icon-font in the front end.
  • Tweak: Improved the metabox for managing the customer when editing a payment.
  • Tweak: Settings, Reports, Tools admin page now have headings.
  • Tweak: The gateway selector is now shown when a user has an error during checkout.
  • Tweak: Improved the layout and responsiveness of the customer details screen.
  • Tweak: Buy Now options and buttons are now disabled if multiple gateways are enabled.
  • Tweak: Improved the markup for the shortcode-login.php template file.
  • Tweak: Added a per-download hook to the edd_receipt shortcode.
  • Tweak: Unit tests no longer hit the network. They are so much faster now.
  • Tweak: Removed use of global variable $edd_options.
  • Tweak: Placeholders can now be defined for text fields when using the EDD Settings API.
  • Tweak: Removed PDF earnings report in favor of the CSV Report.
  • Tweak: Made the 'ignore tax' setting on reports less confusing.
  • Tweak: Fixed some links in the readme.txt file.
  • Tweak: Removed option to disable AJAX.
  • Tweak: Adjusted "post type attribute" metabox label for downloads.
  • Tweak: Fixed unit tests to work with the new WordPress core 4.7 unit tests.
  • Fix: EDD_License did not properly support item_id.
  • Fix: Earnings by Category estimates were not correct.
  • Fix: Item card views (customers, licenses, subscriptions, etc) size improperly.
  • Fix: Stopped redirect to PayPal on Buy Now buttons if PayPal gateway is disabled.
  • Fix: The wrong class name was on the Checkout state input.
  • Fix: Amazon Gateway settings are now checked before loading the scripts for Amazon Payments.
  • Fix: The edd_download_redirect_to_checkout filter wasn't respecting the desired outcome in some configurations.
  • Fix: The payment notes were included in normal comment count.
  • Fix: Disabling API request logging was not working.
  • Fix: Undefined index notices could be triggered during the login process on checkout.
  • Fix: South Korea Zip/Postal Codes changed, so we updated our validation RegEx.
  • Fix: Undefined index notice was shown on the dashboard widget.
  • Fix: Attachment ID was not overwritten by external URL on download files.
  • Fix: The history-downloads.php template was not properly showing variable price names.
  • Fix: When adding fee to cart, we now preserve the decimal precision.
  • Fix: Recounting store stats now resets the report transients.
  • Fix: Improved the fault tolerance and error handling of creating discount codes.
  • Fix: EDD_Download::setup_download() now identify $download as a WP_Post object type.
  • Fix: Product import now defaults to the main admin user if the author does not exist.
  • Fix: Multi-option purchase mode and variable prices work better with buy now buttons.
  • Fix: Added "required" attribute to the email input field.
  • Fix: Moved edd_undo_purchase_on_refund to deprecated-functions.php.
  • Fix: Fixed the spelling of "Pound Sterling".

2.6.17, December 28, 2016

  • Fix: Checkboxes in Downloads > Tools > Beta Versions do not retain checked state
  • Fix: Extension update notifications do not show up

2.6.16, December 21, 2016

  • Fix: 404 errors when downloading some files

2.6.15, December 19, 2016

  • Fix: Conflict with some object caching configurations and the extension update checks that resulted in poor performance.

2.6.14, December 15, 2016

  • New: Added hooks before and after cart on checkout screen
  • New: Added support for user-specific locales
  • Tweak: Improved performance of edd_get_payment_by(), making account pages faster
  • Fix: Quantity not set on cart items when adding multiple price options to the cart at once
  • Fix: Download links in email receipts over escaped, resulting in failed downloads
  • Fix: December point plotted improperly on earnings / sales graphs
  • Fix: Files still downloaded even if the file doesn't exist, resulting in a corrupted download file
  • Fix: Non-formatted amount not set in data attribute of cart when discount codes applied
  • Fix: Deleting an item from payment record does not delete the associated sale log
  • Fix: This Week and Last Week reports not showing sale stats
  • Fix: Calling edd_is_discount_valid() results in cart errors being set
  • Fix: Earnings value doubled for Today report
  • Fix: Price and currency not properly separated in schema microdata
  • Fix: Tax exempt products still show tax rate on purchase buttons
  • Fix: check_update() method is called twice in EDD_SL_Plugin_Updater class

2.6.13, November 21, 2016

  • Fix: Custom payment meta items were not being saved correctly.

2.6.12, November 17, 2016

  • New: Added new hooks to the profile editor form.
  • Fix: edd_has_active_discounts could return false when there were active discounts.
  • Fix: Supplying an invalid date range on reports could produce an incorrect graph.
  • Fix: EDD_Payment::update_meta could produce a PHP warning when used.
  • Fix: Variable Pricing options were inconsistently being shown and hidden when toggled.
  • Fix: Today/Yesterday Reports miscalculated hours to include the first hour of the next day.
  • Fix: When single day ranges were used on Payments list table, order status counts were not loading.
  • Fix: EDD HTML Select input had many cases where mixed variable types could trigger errors and warnings.
  • Fix: edd_get_users_purchases had outdated PHPDocs.
  • Fix: Determining the 'main' subsection of settings could fire hooks twice and had poor performance.
  • Fix: When changing report years, the report data could have been incorrect.
  • Fix: Payment counts were incorrect on the Payments list table when custom dates were used.
  • Fix: Certain hosting configurations caused the usage tracking notice to be improperly escaped.
  • Fix: Admin scripts were not requiring jquery-form.
  • Fix: Download limit setting isn't checked for existence before accessing it when saving a Download.
  • Fix: Timezone wasn't respected when setting up daily cron.
  • Fix: Upgrade routines could calculate incorrect number of total steps.
  • Fix: The notice about being in test mode was not linked to the correct settings page.
  • Fix: edd_get_users_purchased_products would fail if the first product ID supplied was not a download.
  • Fix: Checkout could require a state even if the country had no states associated with it.
  • Fix: Creating a discount would not save the product requirements and exclusions on first save.
  • Fix: PHP Warning was being caused by the new beta setting in the extension updater.
  • Fix: The EDD_SL_Plugin_Updater::check_update method could possibly be called twice.
  • Fix: Sanitized unescaped URLs with esc_url

2.6.11, November 8, 2016

  • New: WP CLI: Customers command now allows searching by user_id.
  • New: Add framework for the new Software Licensing beta support.
  • New: EDD Settings API now supports adding classes to registered settings.
  • New: Improve PayPal Standard IPN lookup logic.
  • New: Support iOS app one-click configuration.
  • New: Add hook after cart quantities are updated.
  • New: Add tooltip to "Display during checkout" tax option.
  • New: Allow exporting the file download history of a specific product.
  • New: Add action after discount is added to the cart.
  • New: Add action hook called "edd_payment_saved" for when EDD_Payment::save() is run.
  • New: Add "author" paramater support to [downloads] shortcode with support for username or ID.
  • Tweak: Correct branding of necessary assets.
  • Tweak: Block self-pings in tracking check-ins.
  • Tweak: Update author and author URI to Easy Digital Downloads.
  • Tweak: Update the Insert Download media button icon to use Dashicons.
  • Tweak: Allow download admin icon to be more easily customized.
  • Tweak: Exported CSVs show "Complete" status as "publish".
  • Fix: Corrected translation for login shortcode redirect description.
  • Fix: Improved the caching of stats transients for better performance.
  • Fix: API Keys were not able to be copied from user profile.
  • Fix: Corrected link to the iOS application.
  • Fix: Use new iPhone icon.
  • Fix: EDD_Payment::setup_tax did not always contain proper data.
  • Fix: Styles on Recount/Reset tool were lost.
  • Fix: CSV import tool were not importing Download Files in some circumstances.
  • Fix: Tooltip styles had a conflict with Gravity Forms.
  • Fix: Recount earning/sales tool for all downloads was failing to properly recount.
  • Fix: Multiple instances of cart widget was causing conflicts when adding or removing items.
  • Fix: API Key list table was unreadable on mobile.
  • Fix: Custom icons via edd_accepted_payment_icons were unwrapped.
  • Fix: Fees for specific download and price IDs did not check if the item or price ID is in the cart.
  • Fix: EDD API was always returning version 1 by default.
  • Fix: Changed uses of jQuery .toggle() to use .show() and .hide() to fix bad checkbox states.
  • Fix: Corrected translation for 'State / Province'.
  • Fix: Corrected a variable type issue in the HTML_Elements::select defaults.

2.6.10, October 21, 2016

  • Fix: JavaScript error when removing a product from a payment that does not contain a fee.

2.6.9, October 20, 2016

  • Fix: Negative fees associated with cart item do not affect cart item earnings.
  • Fix: Z-index of tooltips needs to be increased.
  • Fix: Products endpoint returns empty response on v2 of the API.
  • Fix: Email property set twice in edd_insert_payment().
  • Fix: "Email already in use" error if capitalization does not match.
  • Fix: Chosen dropdowns cause a horizontal scroll bug in RTL.
  • Fix: record_fees() clears fees in the session before purchases are completed.
  • Fix: New user email strips login link on plain text email.
  • Fix: Country and state chosen fields on view order details broken.
  • Fix: Billing address fields are not saving in the payment details page when edited.
  • Fix: Not all settings and data removed when uninstall is run.
  • Fix: Don't output a label if one isn't set for text and select HTML elements.
  • Fix: Date in payment_meta should match the payment date when modified.
  • Fix: The edd_get_random_download() should return an item.
  • Fix: Potential PHP warning when using EDD_Payment->save().
  • Fix: Payment date is not included in the payment history export.
  • New: API sales endpoints now include both user_id and customer_id.
  • New: Add user_dropdown to HTML elements that support chosen.
  • New: Add support for product variations in the HTML elements product_dropdown.
  • Tweak: Change "Disable Guest Checkout" to "Require Login".
  • Tweak: Typo "assocaited" in error messages when adding emails to a customer.
  • Tweak: Resend Receipt button allows selecting which associated customer email address to send receipt to.

2.6.8, September 26, 2016

  • Fix: Category earnings report does not recover when the site has no download categories.
  • Fix: PHP notice caused by localized script loader.
  • Fix: CSV Product exporter/importer does not honor file conditions for variable pricing.
  • Fix: CSV importer improperly started variable pricing IDs as 0 instead of 1.
  • Fix: Repeatable rows not properly adding data-key attribute for variable price select boxes.
  • Fix: Undefined index warning when adding download details widget within the customizer.
  • Fix: edd_update_payment_status() creates new blank payment record if given an invalid payment ID.
  • Fix: REST API Products endpoint doesn't take into account search parameter API.
  • Tweak: Correct typo in country list for Philippines.
  • Tweak: Upload file text is misaligned within the input field.

2.6.7, September 14, 2016

  • Fix: Improved CSV file type detection to avoid 'invalid CSV' error.
  • Fix: The edd_payment_meta filter was not respecting values modified during the filter when saving a payment.
  • Fix: Redirect to Checkout setting was not keeping custom query string variables when direct cart URLs.
  • Fix: Cart Widget did not properly refresh the page when purchase links were present on the page.
  • Fix: Categories/Tags not created and assigned during product import.
  • Fix: Remove discount cron which could cause discount codes incorrectly changing to inactive without warning.
  • Fix: Can't Uncheck All Checkboxes in Multi-Check.
  • Fix: Verify discount is in array before unsetting the discount.
  • Fix: edd_stats_{key} transients causing performance issues.
  • Fix: Undefined Indexes when assigning new user ID to customer details.
  • Fix: Purchase Email Subject ampersands getting improperly HTML encoded.
  • Fix: Local files not being properly found when on a Windows server.
  • Fix: Properly catch default case for license activation callback.
  • Fix: Sequential payment number not assigned when creating payments with EDD_Payment.
  • Fix: Tax calculation should only run on values greater than 0.
  • Fix: Fix variable name in customer recount tool for post status array.
  • Fix: Discount functions not always having user_info array key.
  • Tweak: Rename Download List Table Taxonomy Headers.
  • Tweak: Fix horizontal alignment of items in the dashboard widget.
  • Tweak: Update codex link in readme.txt.
  • Tweak: Update EDD_SL_Plugin_Updater.php to latest version.
  • Tweak: Correct references of 'short code' to 'shortcode'.
  • Tweak: Filter "edd_get_cart_discounts_html" does not pass relevant arguments for developers.
  • Tweak: Update payments export to use EDD_Payment.
  • Tweak: Return null for all empty data returned from the API instead of an empty array.
  • Tweak: Update readme.txt with new donate link.
  • Tweak: Allow custom Arguments for Settings API Callbacks.
  • New: Accepted payment method icons have been updated to PNGs with transparent backgrounds.
  • New: Update MasterCard Logo.
  • New: Add filters to API endpoints.
  • New: Added actions to the adding and removing of fees.
  • New: Buy Now button option on Add/Edit Download now always shows, but is disabled when requirements are not.
  • New: Customer address can now be edited for customers who do not previously have an address on file.
  • New: Add edd_get_php_arg_separator_output on System Info.
  • New: Linking a Customer to a WordPress user now allows login or email address as a valid input.

2.6.6, August 1, 2016

  • Fix: Discount codes being marked as inactive
  • Fix: Incorrect state/province used in tax calculations in certain scenarios
  • Fix: Incorrect placeholder for Select Customer drop down
  • Fix: Incorrect redirect URL for [edd_login] shortcode
  • Fix: Spelling errors in internal documentation
  • New: Added $items parameter to edd_post_add_to_cart action

2.6.5, July 25, 2016

  • Fix: Incorrect parameters passed to edd_is_checkout()
  • Fix: Some records skipped during CSV import
  • Fix: update_option() cannot be used to update EDD settings
  • Fix: Incorrect date format used in CSV payment import
  • Fix: Product-specific sales / earnings graphs show no earnings
  • Fix: Spelling errors in PHPDocs
  • Fix: Resend Receipt box visible even when payment is not Complete
  • Fix: File URLs split on / during product import
  • Fix: Setting display:none on variable price options breaks add to cart processing
  • Fix: Prices can be set as negative
  • Fix: edd_get_variable_prices() returns prices even when variable prices are disabled
  • Tweak: Added filters to payment gateway labels on checkout screen
  • Tweak: Modified how metadata is registered in anticipation of WordPress 4.6
  • Tweak: Changed role required for deleting payment records to delete_shop_payments
  • New: Added Remember Me option to log in form
  • New: Added /info/ endpoint to REST API

2.6.4, July 6, 2016

  • Fix: Negative fees getting included twice with PayPal Standard
  • Fix: Non-standard status in the product import caused silent failure.
  • Fix: Rely on Customer's User ID when EDD_Payment::setup_user_id has incorrect data.
  • Fix: Date strings are not properly parsed in product import.
  • Fix: PHP notice is triggered when using purchase_link shortcode with an invalid SKU attribute.
  • Fix: PHP warning when activating on Multisite due to roles not being correcly instantiated.
  • Fix: It is possible for edd_get_ip() to return a CSV of IP addresses.
  • Fix: Products deleted after being added to the cart creates invalid cart data.

2.6.3, June 30, 2016

  • Fix: Product name needs to be trimmed during payment import to prevent duplicate products being created
  • Fix: Discount codes getting erroneously marked as Inactive
  • Fix: Importing settings causes a fatal error
  • Fix: Address Line 2 erroneously marked as required in some cases
  • Tweak: Improved inline documentation for edd_get_download_file_url()
  • Tweak: Add-on updater updated to 1.6.4

2.6.2, June 28, 2016

  • Fix: Existing guest customers cannot register a user account on checkout using the email address associated with their existing customer profile.
  • Fix: DocBloc for edd_delete_option function is incorrect.

2.6.1, June 24, 2016

  • Fix: PayPal Standard transaction ID links don't link to PayPal Sandbox when payment was made in test mode.
  • Fix: Opt-in tracking not sending after initial activation.
  • Tweak: Welcome page not showing on upgrade.
  • Tweak: Only show welcome page on major versions.
  • New: If enabled, send checkin data when Easy Digital Downloads is upgraded.
  • New: Add a filter for edd_price_options() that allows adding classes to the output.

2.6, June 23, 2016

  • New: Added filters to process the earnings as they are updated.
  • New: Profile Editor state field shows as dropdown when possible.
  • New: Public API query mode to allow extension developers the ability to create API endpoints that do not require API keys.
  • New: Add/Improve inline help throughout the plugin with UI Tooltip.
  • New: Purchased Products column in payment export improved for better parsing.
  • New: Filters added to EDD_Customer increase and decrease methods.
  • New: Introduce Version 2 (v2) of the REST API.
  • New: (API v2) Products endpoint supports category and tag filtering.
  • New: (API v2) Customers endpoint supports filtering customers by creation date.
  • New: (API v2) Support searching products.
  • New: (API v2) Improve discount code reporting.
  • New: Add price(s) to oEmbed output for downloads.
  • New: Remove comment/trackback counts from oEmbed output for downloads.
  • New: Add new edd-table class to all tables outputted by Easy Digital Downloads.
  • New: Improve discount code status updates by setting inactive when usage reaches max.
  • New: Add daily cron to mark expired and discount codes at max usage as expired or inactive.
  • New: Add get_payments() method to the EDD_Customer class.
  • New: Make download ID more visible on the downloads list table.
  • New: Add filters to the add_fee() and get_fees() methods of EDD_Fees class.
  • New: Add price_id support for the Fees API.
  • New: PayPal Standard payments are now able to be refunded within the WordPress admin.
  • New: Deprecate edd_get_success_page_url().
  • New: Add default redirect option to [edd_login] and [edd_register] shortcodes.
  • New: Introduce customer meta table.
  • New: Add JavaScript trigger to edd_load_gateway() for 3rd party hooks.
  • New: Support post__in as an argument in [downloads] shortcode.
  • New: Final declaration removed from EDD_Payment class.
  • New: Allow edd_get_payment_status to also accept a payment ID.
  • New: Support additional email addresses for customers.
  • New: Add actions into the increase/decrease sales/earnings methods of the EDD_Download class.
  • New: Added CSV Import functionality.
  • Tweak: Use internal methods when getting sales counts and files in EDD_Download class.
  • Tweak: Add campaign tracking to links in the contextual help menus.
  • Tweak: Improve edd-admin.css coding standards.
  • Tweak: Update translation .mo files and add development tool for downloading translations from Language Packs.
  • Tweak: Improve EDD Licenses tab in settings.
  • Tweak: Improve edd_object_to_array method.
  • Tweak: Improve mobile breakpoints for customer details view.
  • Tweak: Remove pagination when [download] shortcode uses 'random' for the sort.
  • Tweak: Use existing function to build {receipt_link} email tag.
  • Tweak: PayPal Standard Buy Now was updated to use EDD_Payment.
  • Fix: New User Email alerts have incorrect header.
  • Fix: Transient being bypassed in EDD_Payment_Stats::get_earnings().
  • Fix: Remove unused variable and duplicate post_where filters in EDD_Payment_Stats.
  • Fix: Correct spelling error in edd_get_paypal_redirect().
  • Fix: Improved cache key generation in EDD_Payment_Stats::get_earnings().
  • Fix: Remove deprecated constructor method in System Info browser class.
  • Fix: Negative cart fees should not have tax charged on them.
  • Fix: Roles are being initialized on every admin request.
  • Fix: Negative item fees did not alter the taxation on the item.
  • Fix: System info shows Must-Use plugins when none are present.
  • Fix: Cart position (key) is not passed to the hooks in the cart.
  • Fix: Product dropdown search never shows the current download in results.
  • Fix: Trim response from country state lookup.
  • Fix: Update subscribe link in Welcome screen.
  • Fix: edd_get_users_purchased_products() can sometimes try an array_mege on a non-array value.
  • Fix: PayPal IPN Verification forced to HTTPS.
  • Fix: Incorrect earnings across a custom date range report.
  • Fix: Flat rate discounts can apply an amount larger than the cart total.
  • Fix: Improve performance of transient deletion when uninstalling Easy Digital Downloads.
  • Fix: Sales logs show incorrect item amounts with variable pricing sales.
  • Fix: (a11y) Customer details page icons are not focused.
  • Fix: (a11y) Removed title attributes.
  • Fix: (a11y) Focus is lost when removing price option.
  • Fix: (a11y) Make Add New Price a button when working with variable pricing.
  • Fix: (a11y) Repeatable field link to remove row should be a button.
  • Fix: Creating a payment sometimes doesn't save the correct user_id or customer_id.
  • Fix: Remove old WordPress version compatibility checks for WordPress versions less than 4.0.
  • Fix: Preview emails use default gateway.
  • Fix: EDD_API hooks for API key generation fire when extending the base class.
  • Fix: Remove incorrect messaging on profile editor related to password changes.
  • Fix: HTML validation fails if itemtype is missing.
  • Fix: Clicking 'Complete Purchase' button multiple times can result in Empty Cart error.
  • Fix: Replace calls to global settings variable with edd_get_option().
  • Fix: Duplicate get_post_meta calls in EDD_Download class.
  • Fix: Amazon Payments address field not showing with AJAX disabled.
  • Fix: Reporting is incorrect when changing predefined dates where year_end changes.
  • Fix: Allow no gateway to be enabled when purchase is free.
  • Fix: Item fees not taken into account when using EDD_Payment_Stats::get_earnings() for a specific download.
  • Fix: Subtotal and Total data attributes using incorrect amounts.
  • Fix: Taxonomies with numeric slugs are assumed to be the term_id in [downloads] shortcode.
  • Fix: Multiple instances of variable pricing output for a single product causes label target issue.
  • Fix: Correct structured data for items with variable pricing.
  • Fix: Correct HTML validation for the legend tag on forms by removing span wrappers.
  • Fix: markup missing priceCurrency attribute.
  • Fix: Use tel input type and patterns to force numeric keyboard on checkout for card number and CVC inputs.
  • Fix: Settings sanitization for subsections unsets tax rates when a subsection is registered under taxes.

2.5.17, June 3, 2016

  • Fix: Discount codes are not always sent when opt-in tracking is enabled
  • Fix: Correct a capitilzation error in EDD_Customer class usage during edd_insert_payment
  • Fix: Correct error in the System Info browser detection

2.5.16, May 18, 2016

  • Fix: Checkboxes cannot be unchecked in the settings screens of some extensions if only one extension is activated

2.5.15, May 11, 2016

  • Fix: Removed unused variables and typos in unit tests
  • Fix: Non-standardized display of file names for items in bundles on receipts
  • Fix: Downloads not always removed from payment records when removed from the View Order Details screen
  • Tweak: Introduced new edd_checkout_user_error_checks action during purchase processing
  • Tweak: Placeholders on product dropdowns improved to help indicate searchability

2.5.14, May 5, 2016

  • Fix: New user emails do not have the proper heading
  • Fix: Opt-in tracking not always sending when allowed
  • Tweak: Added Locale to opt-in tracking

2.5.13, April 21, 2016

  • Fix: User info data not properly populated from customer record when missing in payment meta
  • Fix: filesize() run on external files during download process
  • Tweak: Changed log in form label to include email address
  • Tweak: Added PHP version, EDD version, install date, and WordPress version to opt-in tracking payload

2.5.12, April 14, 2016

  • Fix: Removed incorrect title attribute from Send Test Email button
  • Fix: Made add to cart AJAX action Accessible
  • Tweak: Added Delete Payment option to View Order Details screen
  • Tweak: Moved Resend Receipt button to separate box on View Order Details screen

2.5.11, April 7, 2016

  • Fix: Non-complete payments permitting file downloads
  • Fix: Double POST requests for plugin update checks
  • Fix: Missing validation for discount code ID in edd_decrease_discount_usage()
  • Fix: Default view of Sales / Earnings graphs for individual products not working
  • Fix: Download Details widget will not save "Current" display option
  • Fix: Sessions should never start on RSS feeds
  • Fix: Missing screen reader text for Default Price Option radio buttons
  • Fix: Incorrect heading size for some admin screens
  • Fix: Payment History Search results now stay after performing actions on shown payments
  • Tweak: Added new filters to recount stats tool for customers to allow support for other payment statuses
  • Tweak: Added new filters to allow URIs to be added to the session blacklist to prevent sessions from starting on those URIs
  • Tweak: Added filter to permit disabling wpautop() in emails
  • Tweak: Set "filter_items_list", "items_list_navigation", and "items_list" labels for Download post type
  • Tweak: Added new "edd_payment_advanced_filters_row" filter

2.5.10, March 24, 2016

  • Fix: Fatal PHP error when adding multiple price IDs to the card when same item is already in cart
  • Fix: New user registration notification email does not support HTML
  • Fix: {receipt_link} HTML stripped from plain text emails
  • Fix: fees_total property not set up in EDD_Payment object
  • Fix: Payment History not properly setting end date filter
  • Fix: filesize() being run on external files during file download
  • Fix: Symlinked file downloads result in 0 byte files
  • Fix: 100% discount codes with taxes enabled fail to allow purchase
  • Fix: Extraneous hyphen after product name for products without price options
  • Fix: Payments cannot be searched by user ID
  • Fix: Undefined index "download_method"
  • Fix: Ajax Download search excludes bundles improperly
  • Fix: Custom date range over multiple years does not work well in earnings reports
  • Fix: HTTP/HTTPS protocol stored on file URLs in database, resulting in failed downloads if site protocol changes
  • Fix: Extensions settings tab displays empty Main section in some cases
  • Fix: "No checkout page has been configured" notice cannot be dismissed properly
  • Fix: EDD transients not deleted during uninstall
  • Fix: Sales logs not deleted when payment is changed from Complete to Pending
  • Fix: Inconsistent formatting in Dashboard stats widget
  • Fix: About and Welcome pages not compatible with Admin Menu Editor plugin
  • Fix: State / Province field not populating saved country / state / province when shown as text field
  • Fix: discount_dropdown() method of EDD_HTML_Elements does not support non-item label
  • Fix: widgets.php page dies if site has large number of products
  • Fix: Form to create new API key not shown
  • Tweak: Re-adding support for retrieving card item price without tax

2.5.9, February 18, 2016

  • Fix: Settings cannot be saved

2.5.8, February 18, 2016

  • Fix: Transaction ID detection not working properly for old payment records that stored transaction ID in notes
  • Fix: 100% discount codes not properly removing billing fields when decimal separator is not a period
  • Fix: [edd_receipt payment_key="false"] results in error retrieving receipt message
  • Fix: Unused variable in Javascript
  • Fix: File downloads failing with Force download method on nginx
  • Fix: Undefined variable $file_path during file downloads on some servers
  • Fix: Incorrect inline PHP documentation
  • Fix: Settings with some non-alphanumeric keys not saved properly
  • Fix: Price override in add_download() method of EDD_Payment does not respect price of 0
  • Fix: Dash incorrectly shown after product name on the receipt page
  • Fix: Missing P tag on View Order Details screen
  • Tweak: Replace usage of $edd_options with edd_get_option() helper function
  • Tweak: URL in New User Notification email now linked
  • Tweak: edd_price() now displays the value of the Default price option
  • New: Introduced edd_payment_currency_default filter

2.5.7, February 10, 2016

  • New: Added refund() method to EDD_Payment class
  • New: Added filters to enable/disable product and customer stat adjustments during refunds
  • New: Addded new hooks to EDD_Payment class that run before payment is setup
  • Tweak: Improved taxonomy labels for categories and tags
  • Tweak: Automatically flush permalinks when a 404 is detected on EDD archive pages
  • Tweak: Add proper 403 headers to REST API
  • Tweak: Removed usage of soon-to-be-deprecated function get_currentuserinfo()
  • Tweak: Improved CSS formatting for edd.css
  • Tweak: Improved label/field HTML markup on checkout
  • Fix: Store earnings reports can cause memory problems when store has only 0.00 sales
  • Fix: Incorrect query arguments when redirecting back to checkout with ?payment-mode if query args are already present
  • Fix: Maybe unserialize user_info array in EDD_Payment
  • Fix: Recalculate Totals button ignores item quantities
  • Fix: Incorrect item price stored in sales log when adding item to existing payment
  • Fix: .jpeg files blocked by .htaccess file
  • Fix: Product search on customer export returns customer names instead of products
  • Fix: Editing items on payment do not save properly in some instances
  • Fix: File download links fail with qTranslate-X plugin active
  • Fix: Admin notice about expired and invalid keys should show only to site admins
  • Fix: Cart widget cannot be shown on checkout screen
  • Fix: Incorrect date format when viewing Last Week report
  • Fix: PHP notice when sending test payment receipt
  • Fix: edit_date not passed in when updating payment record
  • Fix: Unneeded product query on discount add/edit screen
  • Fix: Profile editor does not update customer name
  • Fix: Price not formatted in placeholder for price field
  • Fix: Unnecessary paragraph tags inside of form elements on Export screen
  • Fix: Payments list filters are off by one day
  • Fix: File download links break if UTM variables are added to them
  • Fix: pagination=false parameter in [downloads] shortcode does not work
  • Fix: Coupon code use count not decremented when payment marked as failed
  • Fix: Username field not validated before submitting form to generate new API key
  • Fix: Download Details widget requires settings to be saved before it displays

2.5.6, January 13, 2016

  • Fix: Payment dates recorded with incorrect dates depending on the timezone selected in settings
  • Fix: Download links missing from purchase receipts for some sites

2.5.5, January 12, 2016

  • Fix: Timezones still not set properly for some sites. This resulted in download links missing from purchase receipts.

2.5.4, January 12, 2016

  • Fix: Timezones set improperly sometimes when payments are created
  • Fix: PHP notices in edd_process_add_to_cart() when AJAX is disabled
  • Fix: PHP warning in Recount Single Customer Stats tool
  • Fix: Payment date cannot be changed in the admin
  • Fix: Currency code not properly returned if payment is missing currency metadata
  • Fix: "Sorry trouble retrieving payment receipt" error shown occasionally
  • Fix: Sanitization process for settings breaks some extension's settings
  • Fix: Download links blank for some customers
  • Fix: Prevent default placeholder from showing as an option in multi-select fields

2.5.3, January 9, 2016

  • Fix: Status passed to edd_insert_payment() not respected. Caused subscription payments to be marked as pending
  • Fix: edd_is_payment_complete() returns false improperly
  • Fix: Buy Now links going to empty checkout screen when customer is not logged in
  • Tweak: Removed redundant Max Uses column on Discounts screen

2.5.2, January 8, 2016

  • Fix: Item specific fees applying twice

2.5.1, January 7, 2016

  • Fix: Infinite loop in some instances where add_filter() is used by extensions
  • Fix: Deactivate License button missing on valid license keys
  • Fix: Payments not properly attached to customer records if last name is not supplied during checkout while logged out
  • Fix: Item amounts not saving properly when adding new Download to payment record
  • Fix: PHP warning on explode() due to empty customer notes field

2.5, January 7, 2016

  • New: Improved settings organization with subsections
  • New: Product export to CSV tool
  • New: Recount stats tool
  • New: EDD_Payment class for developers
  • New: Credit card fields now include HTML5 attributes
  • New: Improved license key fields for extensions
  • New: Discount codes can now be sorted
  • New: 0.00 value sales can now be excluded from sales graphs
  • New: File download history now available in REST API at /edd-api/file-download-logs
  • New: Quantities now included in payment history export
  • New: Payment History can be searched by discount code
  • New: File Downloads on products can now be re-ordered with drag-and-drop
  • New: Added filter to disable "edd_items_in_cart" cookie
  • Tweak: Improved customer options in purchase history export
  • Tweak: All meta keys now registered with WordPress
  • Tweak: EDD_API now runs on wp hook for improved performance
  • Tweak: Show item price instead of sale price in sales log
  • Tweak: Post type labels now used for Featured Image labels
  • Tweak: Inline styles have been removed from [downloads] shortcode
  • Tweak: Improved labels for checkbox options in Emails settings tab
  • Tweak: Improved SSL detection
  • Tweak: Improved abstraction of Customer UI so it can be re-used
  • Tweak: edd_get_cart_contents() standardized
  • Tweak: Set minimum WordPress version to 4.0
  • Tweak: Customer name on Payment History now goes to Customer details screen
  • Tweak: Properties in EDD_Amazon class are now public
  • Fix: Bulk actions not shown when list tables have no items
  • Fix: Fatal error in earnings by category reports
  • Fix: edd_maybe_remove_menu_profile_links() breaks some AJAX actions
  • Fix: PHP notices in PayPal if cart_details is not an array
  • Fix: "This Week" reports fail when crossing a month or year boundary
  • Fix: Deleting non-complete payment updates customer stats
  • Fix: inline-edit-post loaded when it shouldn't be
  • Fix: PayPal IPN listener using deprecated mc_gross key
  • Fix: PayPal listener not properly decoding data keys in some server environments
  • Fix: Downloads cannot be sorted in DESC order
  • Fix: User verification URL missing from email when plain text template is used
  • Fix: Incorrectly spelled UTM tags in Add Ons page
  • Fix: CSS for Welcome Page affects other pages
  • Fix: Properly run install routine when network activating EDD
  • Fix: Remove use of WP_CONTENT_URL constant
  • Fix: North/South Korea country codes reversed

Where can I find complete documentation?

Full searchable docs can be found at

Is an SSL certificate required?

Easy Digital Downloads can function without one just fine, making it easy to set up in a testing or development environment. We still strongly recommend you have an SSL certificate for your production web site, both for security and for the peace of mind of your customers. Documentation here

What themes work with Easy Digital Downloads?

Any properly written theme will work with Easy Digital Downloads.

That said, we have a nice collection of free themes that come with support for Easy Digital Downloads, requiring much less design work on the part of the store owner.

See the free themes here.

How do I Show My Shopping Cart?

There are two ways you can show the downloads shopping cart:

  1. Use the shortcode and simply place [download_cart] on a page or within a text widget.

  2. Use the included widget. Go to Appearance > Widgets and place the "Downloads Cart" widget into any widget area available.

Is there a sample import file I can use to setup a demo store?

Yes! Simply go to Tools > Import and install the WordPress Importer, then navigate to wp-content/plugins/easy-digital-downloads/assets/ and select the sample-products-import.xml file. This will create several sample products and plugin pages for you.

Can I import all the products from my existing store into EDD?

Yes! We do have a basic import solution that imports a CSV file, so if you can get your data into the appropriate format then we can import it.

My Payments Marked as Pending

There are several reasons this happens. Please follow the suggestions here.

Getting a 404 error?

To get rid of the 404 error when viewing a download, you need to resave your permalink structure. Go to Settings > Permalinks and click "Save Changes".

How do I Show the User's Purchase History?

Place the [purchase_history] shortcode on any page.

If you want to just show a list of the files the user has purchased, use the [download_history] shortcode instead.

How do I display products?

There are several different ways, each well documented.

Can I Setup an Affiliate System?

Yes! EDD integrates directly with several affiliate platforms that provide complete affiliate systems you can use to award commissions to your affiliate marketers.

Check out AffiliateWP

Can I give my customers downloadable PDF Invoices?

Yes, EDD has an extension that allows for downloadable invoices to be generated for each payment.

PDF Invoices

Are recurring payments supported?

Yes, through the use of our commercial addon called Recurring Payments. Full documentation here

Can Users Purchase Products without Using PayPal?

Yes, through the addition of one or more of the add-on payment gateways, you can accept payments in many different ways. Here are some of the gateways currently found on our complete list:

Version 2.7.2

Requires WordPress version: 4.0 or higher

Compatible up to: 4.8

Last Updated 15 Feb 2017

Date Added: 10 Apr 2012

Plugin Homepage


4.8 stars
250 ratings


Not Enough Data

Works: 0
Broken: 0