Easy Digital Downloads is a complete eCommerce solution for selling digital products on WordPress. Learn more at EasyDigitalDownloads.com.
Whether it is selling software like WordPress plugins or themes, documents and spreadsheets, photography, ebooks, music, graphics or digital artwork, videos, or any other type of media file, Easy Digital Downloads provides a complete ecommerce platform that just works, so you can get back to creating.
Easy Digital Downloads is an invaluable tool that I use throughout my business and for my clients. I love its simplicity yet powerful features and library of useful extensions. EDD stands out as one of the only affordable options for scaling a business centered around providing digital ecommerce sites to its clients.
Mark Hunter – Mark of Approval
Easy and free, meet robust and powerful
Too often digital creators have to make the hard choice between affordable and powerful. Not with Easy Digital Downloads. It’s free forever. It’s easy to get started. Then, as you grow, there are hundreds of extensions to add functionality when you need it.
EDD gives me a solid platform out of the box, with the flexibility of being able to customize anything I want or need to. The best of both worlds!
Brian Hogg – SellingPlugins.com
Here are some of the features supported out-of-the-box:
- Complete shopping cart – Customers can browse your product catalogue, add items to their cart, and checkout when they are ready. Or they can bypass the cart using Buy Now buttons.
- Highly customizable and clean checkout – Buyers can complete their purchase with ease, directly on your site’s checkout page.
- Payment flexibility – Accept credit card payments using Stripe as well as PayPal payments. Apple Pay and Google Pay are also included via Stripe’s Payment Request Buttons.
- Complete customer management – View and manage detailed records of all customers and their purchase history.
- Detailed eCommerce reports – Keep track of your earnings, refunds, sales, and more.
- Secure file protection – Prevent unauthorized visitors from accessing your product files without paying.
- Discount codes – Boost sales by offering potential customers coupon or discount codes which can be applied at checkout.
- Works with any theme – Let your chosen WordPress theme handle the design. Easy Digital Downloads will fit right in.
- And much more!
Localized for your language
Easy Digital Downloads has been translated into more than two dozen languages and new translations are being added all the time, letting you have a natural, native experience, regardless of where you live. If your language is not available, we welcome translation contributions! See our FAQ.
Support for many payment gateways, including Stripe and PayPal
The internet has made it possible for anyone to sell their products to a world-wide audience. No matter where you live, Easy Digital Downloads can be your e-Commerce solution. We offer integrations for the most common merchant processors and, through 3rd party extensions, support for many, many more as well.
Payment gateways supported in the free Easy Digital Downloads plugin:
- Amazon Payments
Payment gateways supported through free or paid extensions:
- Stripe Pro (reduced fees and preapproved payments functionality)
- PayPal Commerce Pro (unbranded card payments and additional payment methods)
- SOFORT Banking
What can I say? Stripe is my go-to payment processor and without this [integration] I don’t know what I would do. Connect EDD to your Stripe account in seconds and you’re done! Having a simple test mode toggle is also a valuable development tool.
Matt Whiteley – Whiteley Designs
See our payment gateways in the extensions catalog for a complete list of supported payment processors.
Easy Digital Downloads is a verified member of the Stripe partner program. This program recognizes software that meets Stripe’s strict quality requirements and provides users of Easy Digital Downloads and Stripe with the confidence they need to trust us both with their payment integrations.
Take your store further with extensions
With extensions from our extensive catalog you can super-charge your ecommerce business. Some of our most popular extensions are:
- Stripe Pro removes the additional 2% processing fee as well as adds the ability to accept pre-approved payments (extension must be installed and activated).
- PayPal Commerce Pro allows customers to pay by debit or credit card as well as alternative payments such as Sofort, iDEAL, Bancontact, and Giropay (extension must be installed and activated).
- Software Licensing provides a complete solution for selling software license keys and distributing software updates to customers. Trusted by some of the most successful WordPress Theme and Plugin developers.
- Recurring Payments allows store owners to sell recurring subscriptions for digital products using payment gateways like Stripe and PayPal.
- Frontend Submissions transforms your store into a full-featured multi-vendor marketplace.
- Commissions enables store owners to easily track earnings for product vendors.
- Free Downloads allows free products to be purchased more easily by bypassing the standard checkout form.
- Zapier automates your store by connecting Easy Digital Downloads with more than 700 other web services and products.
- Reviews allows customers to leave reviews and feedback on the products they have purchased.
- Recommended Products increases revenue by showing customers recommendations on additional products to purchase based on real sales data.
- Content Restriction allows site owners to restrict access to page content to paying customers.
- Mailchimp connects your store to your Mailchimp account so you can easily subscribe customers to email lists based on which products they purchase.
- AWeber connects your store to your AWeber account so you can easily subscribe customers to email lists based on what they purchase.
- Amazon S3 lets you securely host files on Amazon S3 for more reliable and secure file delivery.
- Dropbox File Store lets you securely host files in your Dropbox account for more reliable and secure file delivery.
These are just a few of the extensions we offer to help you optimize your digital store and increase revenue. See our complete extensions catalogue for more. There are also hundreds of extensions created by Easy Digital Downloads community members, which can be found on our 3rd Party Extensions page.
Built with developers in mind
Extensible, adaptable, and open source — Easy Digital Downloads is created with designers and developers in mind. Consult our detailed developer documentation to learn how you can extend and customize your Easy Digital Downloads powered eCommerce store.
The Easy Digital Downloads API makes it possible for developers to make customizations such as:
- Modifying the checkout form
- Overriding default plugin behavior
- Generating custom e-Commerce reports
- Extending native features
- Creating new product page templates
- Integrating with other plugins and web applications
…and much much more!
As a developer, Easy Digital Downloads is very pleasant to work with since you can absolutely extend anything available within EDD.
Yudhistira Mauris – WP House
Easy Digital Downloads is backed by top-notch technical support from our globally distributed full-time support team. We also have an extensive documentation site available. If you’re looking for faster support via email, we encourage you to purchase an Easy Digital Downloads pass or premium extension.
EDD has been a long standing, rock-solid e-commerce solution for WordPress. The team lives and breathes WordPress, understands the platform, and is embedded in the community.
Joe Casabona – Creator Courses
From our blog
Check out some of our popular posts for actionable advice for running your business and selling digital files on the web.
- The 12 Most Popular Digital Products You Can Sell Online
- How to Add Lead Magnets in WordPress to Grow Your Email List
- How to Successfully Launch Your Digital Product
- How to Sell Canva Templates with WordPress
- The Astonishing Benefits of Selling Digital Products
Subscribe to our newsletter to get posts like these in your inbox as soon as they’re published.
Contribute to Easy Digital Downloads
Development for this plugin happens in a public GitHub repository to better facilitate contributions from an active community of users, developers and designers. If you have a suggestion, bug report, patch, or pull request, please feel free to contribute here or to our code snippet library.
Looking to change e-Commerce solutions?
Easy Digital Downloads is the perfect digital e-Commerce alternative to Etsy, Gumroad, WooCommerce, Shopfiy, BigCommerce, or Wix.
You can use Easy Digital Downloads to sell your digital products with less fees than Gumroad or Etsy.
If Easy Digital Downloads doesn’t quite fit your needs, take a look at some of our other projects.
- Activate the plugin
- Go to Downloads > Settings and configure the options
- Create Downloadable products from the Downloads page
- Insert purchase buttons for any download via the “Insert Download” button next the Upload Media buttons
- For detailed setup instructions, vist the official Documentation page.
Where can I find complete documentation?
Full searchable docs for Easy Digital Downloads and all our extensions can be found at https://easydigitaldownloads.com/docs
Where can I ask for help with my digital e-Commerce store?
You can submit a support ticket or pre-sale question from our support page at anytime.
Which file types can I sell?
Any file type can be sold using Easy Digital Downloads. You can sell .PDF, .DOC, .MP3, .MOV, .EPUB, .PSD, .MP4, .JPG, or any other extension which exists. On the product creation form, there is a file upload field which will accept any file type. Whatever file is uploaded to that field is the file customers will receive instantly when they complete a purchase.
Is an SSL certificate required to sell digital products?
Easy Digital Downloads can function without an SSL certificate 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 live store, 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.
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 are being 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 my digital products?
There are several different ways to visually display your product catalogue, each documented here.
Can I set up an affiliate program?
Yes! EDD integrates directly with several affiliate platforms that provide complete affiliate systems you can use to award commissions to your affiliate marketers. This means when affiliates refer customers to you, and those customers buy your products, those affiliates earn a commission from you.
Can I give my customers downloadable PDF Invoices?
Yes, with the Invoices extension, you can provide beautiful and downloadable invoices to your customers.
Are recurring payments (subscriptions) supported?
Yes, through the use of our commercial addon called Recurring Payments. Full documentation here. The Recurring Payments extension allows you to create subscriptions so that customers continue paying you over time. This is great for selling memberships, courses, all access passes, software licenses, and other products which require an ongoing payment.
Laguntzaileak eta Garatzaileak
“Easy Digital Downloads – Simple eCommerce for Selling Digital Files” software librea da. Ondoko pertsonek egin dizkiote ekarpenak plugin honi.Laguntzaileak
Easy Digital Downloads – Simple eCommerce for Selling Digital Files 18 eskualde-ezarpenetara itzuli da. Eskerrik asko itzultzaileei beraien ekarpenengatik.
Garapena interesatzen zaizu?
220.127.116.11, July 28, 2022
- Fix: Upgrade warning notices were showing incorrectly for some sites.
3.0.2, July 26, 2022
- Fix: Customer verification URL was not working in the admin.
- Fix: Swedish postal codes would not pass validation.
- Fix: Non-Shop Manager roles could no longer leave notes on orders.
- Fix: Searching orders was not working in the admin.
- Fix: Template: Download History shortcode was not providing access to bundled products.
- Fix: 3.0 Migration: Stores with no orders, but other data like discounts, did not prompt the user to run the migration.
- Fix: EDD admin menu bar styles were not always loading correctly.
- Fix: An admin notice is now shown if EDD detects that it was unable to create the proper database tables.
- Fix: When showing taxes on product pricing, the % character was showing twice.
- Fix: Improved error handling around importer tools.
3.0.1, July 15, 2022
- Fix: Setting the EDD_USE_PHP_SESSIONS constant to ‘false’ could result in empty carts.
- Fix: Exporting reports with ‘All Statuses’ and a country/region fails.
- Fix: Adding more than one additional customer email address in a row failed.
- Fix: A fatal error could be triggered when attempting to output the JSON-LD structured data.
- Fix: Adjust the debug mode setting to be more clearly stated.
- Fix: Report graphs did not support hour-by-hour for some custom date queries.
3.0, July 13, 2022
- IMPORTANT: This is a major release, and should be tested in your staging environments prior to running on your live site.
- Upgrade: This update will ask you to perform database maintenance once installed. Your site should remain functional during this time, but access to historical store data will be limited until the migration is complete.
- New: Custom database tables have been added for all transactional data types in EDD.
- New: Migrate orders, order items, tax rates, discount codes, fees, customer addresses, and transaction details to custom tables with the UI or WP-CLI migration tool.
- New: All new reporting with advanced features for orders, downloads, customers, refunds, taxes, and more.
- New: Downloads now use the Block Editor and are available in the REST API.
- New: Improved tax settings, allowing historical data to be determined.
- New: Fully featured Refund system, for accurate reporting which includes partial and full refund support.
- New: Refunds can be initiated from within EDD for gateways which support it.
- New: Filter orders with advanced rules like purchase total, product, country, or state.
- New: New email marker insertion interface to assist in creating emails.
- New: Ability to manually add orders, without an extension; the Manual Purchases extension will be deactivated automatically.
- New: Discounts support start and end times, in addition to dates.
- New: Discounts now support notes.
- New: Use JSON-LD format for schema output.
- New: The order details views have been redesigned completely to make managing orders easier.
- Improvement: CSS styles have been updated and modernized throughout, including for jQuery and Chosen, as well as to improve mobile responsiveness.
- Improvement: Chosen has been updated for improved performance and accessibility.
- Improvement: Admin table views have been revised to be more responsive and consistent with WordPress core.
- Improvement: Dates for orders and related data are stored in the database in UTC, and displayed in the store’s time zone.
- Improvement: Discounts which have been used at least once can no longer be deleted.
- Improvement: Admin screens, settings and input fields have been revised for improved accessibility.
- Improvement: Order items for variably priced products now include the price option name.
- Improvement: Language files have been removed from the deliverable package, and will rely on translate.wordpress.org going forward.
- Improvement: Introduce a “Store Gateway” to handle free orders and orders not handled through another gateway.
- Improvement: EDD HTML fields can now be required.
- Improvement: Admin table views have been rewritten to more accurately represent object status counts.
- Improvement: Because orders can be partially refunded, file deliverability is evaluated per order item, not order.
- Improvement: Download and customer sales and earnings are now dynamically calculated.
- Fix: Additional order statuses (like renewals) were not consistently included when querying for orders.
- Fix: Customers were failing to be created when their email address exceeded 50 characters.
- Fix: Improved performance of the
- Fix: Average earnings now accounts for fees.
- Fix: The customer’s list table could show an empty customer name.
- Fix: Greatly improved the performance of the cart total calculation.
- Fix: Single price products are saved to the order items table with a null price ID, to differentiate from variable products with a 0 price ID.
- Templates: The receipt, order history, and download history templates have been updated to work with new order functions.
- Dev: Introduced
edd_delete_helper functions to access new database methods.
- Dev: Introduced
edd_maybe_add_customer_addressto ensure that only unique physical addresses are added to a customer.
- Dev: Introduced helper functions such as
edd_redirectto reduce the need to write repeated code.
- Dev: The minimum PHP version has been updated to 5.6.
- Dev: The minimum WordPress version has been updated to 4.9.
- Dev: Added new helper functions to retrieve order status by state like gross, net, recoverable, deliverable.
- Dev: A new
edd_is_cart_empty()function was added.
- Dev: Orders now use ‘complete’ as the final state instead of ‘publish’.
- Dev: Moved all script and style generation to use webpack.
- Dev: EDD style settings have been deprecated.
2.11.7, June 29, 2022
- Fix: Some settings for custom integrations were not showing settings screens, when no registered EDD settings were found in the section.
- Fix: Improved sanitization when generating and using URLs.
2.11.6, March 21, 2022
- Fix: Improved reliablity of PayPal Commerce modal while on checkout page.
- Fix: PayPal Standard could throw an undefined variable notice when listening to the IPN.
- Improvement: The link to configure Mailchimp could be wrong depending on the version of the extension.
- Improvement: There was a hard coded string that wasn’t able to be translated.
- Improvement: Add a link to documentation about how to activate a Pass license key.
2.11.5, January 27, 2022
- New: Add an admin notice when the EDD Debug Log is enabled.
- Fix: Importer has been updated to work with PHP 8.
- Fix: Change how data is added to the debug log to prevent errors due to size.
- Fix: Bundled product metadata is no longer saved to the download for non-bundle products.
- Fix: A PHP notice was thrown when a payment had an unregistered status.
- Fix: Stripe – EDD 3.0: Incorrect tax amount being charged when customer uses a different country from the store’s base country.
18.104.22.168, January 7, 2022
- Fix: “Submit” buttons missing from Reviews and Recurring Payments settings pages.
2.11.4, December 27, 2021
- New: Set minimum PHP version to 5.4 in readme.txt.
- New: Add notifications to EDD screens.
- New: Reorganize some settings locations to make them more predictable for users.
- New: Improve user opportunities to give feedback to the EDD team.
- New: Add support for webp images.
- Improvement: Add the
edd_ajax_remove_discount_responsefilter inside the AJAX remove discount function.
- Improvement: If a license key has not been entered for a specific product, but it’s covered by an existing pass key, use the pass key for updates.
- Improvement: Remove a confusing link for licenses near expiration date.
- Fix: In some cases, download links were unexpectedly not allowing users to download files.
- Fix: EDD Pass Manager was not saving the license key to the pass data during activation.
- Fix: Purchase receipt emails were always assumed to be successfully sent, even if they weren’t.
- Fix: Variable prices were missing the index when a product was first saved.
- Fix: Exporting earnings results with an incorrect date range generated invalid data.
- Fix: A PHP notice was generated when an invalid license key was entered.
- Fix: PayPal Standard – Transaction links were not directing to the transation.
- Fix: The Arabic translation file caused a fatal error; it has been removed in deference to the repository translation.
- Fix: Improve earnings export performance.
- Dev: CLI – Prevent PHP error when a malformed payments command is used.
- Dev: Add helper methods the to the Pass Manager class.
- Dev: Create an option for the store activation date.
- Dev: Introduce the EDD extension registry for managing licensed extensions.
- Dev: Save EDD licensed products to options for improved reliability.
- Dev: Explicitly declare the
- Dev: Improve performance of
- Dev: FILTER_SANITIZE_STRING is deprecated in PHP 8.1.
22.214.171.124, November 1, 2021
- Fix: Fatal error in PHP versions lower than 7.3.
2.11.3, November 1, 2021
- New: Add contextual EDD header to relevant pages.
- New: Add quick link to EDD reports in the Dashboard menu.
- Improvement: Update styling for settings tabs.
- Improvement: Rename and reorganize some settings menu items.
- Improvement: Adjust formatting of plugins list in system info file.
- Improvement: License key fields now use a password input.
- Fix: Undefined index: post_data error.
- Fix: Upgrade notice not appearing after enabling sequential order numbers.
- Fix: PayPal – Disconnecting PayPal account not working.
- Fix: PayPal – Improve check for declined payments.
- Fix: PayPal – Unable to switch payment gateway after opening then closing PayPal modal.
- Fix: PayPal – Purchase can’t be completed when you have a long product title.
- Fix: Unable to use discount deactivate/activate hover actions.
_edd_deprecated_function()– only trigger error with backtrace if there is a backtrace provided.
- Fix: API requests have unexpected output when using Query Monitor.
- Dev: Updated
EDD_SL_Plugin_Updaterto version 1.9.1.
126.96.36.199, October 18, 2021
- Security: Fix authenticated reflected XSS on payment history list table.
2.11.2, September 29, 2021
- Improvement: PayPal – Product names now appear in PayPal.
- Improvement: File download token validation has been reworked to be more compatible with caching.
- Fix: PayPal – Ensure all numbers are rounded when sending price data to PayPal. This prevents errors due to rounding issues.
- Fix: PayPal – Excessive error text when triggering a validation error on a mobile device.
- Fix: PayPal – Multiple “Buy Now” buttons not working on the same page.
- Fix: WP-CLI –
price_idparameter not working with
wp edd payments createcommand.
- Fix: Stripe – Transaction link not working if the payment is pre-approved.
- Fix: Stripe – Connect not working with certain countries.
- Fix: Stripe – Numeric product name causes error.
- Fix: Stripe – Payments able to be marked for preapproval when they shouldn’t be.
- Refactor: SendWP – Update link to account area.
2.11.1, August 30, 2021
- Improved: Better compatibility with caching when using PayPal Commerce.
- Improved: Made it more clear when PayPal Commerce is successfully connected, but not set as an active gaetway.
- Fix: The download history shortcode was not aware of bundles with variable prices.
2.11, August 19, 2021
- New: Introducing the new PayPal Commerce gateway integration.
- New: System info page now shows Plugin Author or Update URI
- New: Improved support for caching pages that contain add to cart buttons by using a custom token verification instead of nonces.
- Improved: The extension updater class has been updated to version 1.9.0.
- Fix: Download Notes could be duplicated in the email receipt.
- Fix: The Paypal transaction ID links were using an older format.
- Fix: The edd_items_in_cart cookie wasn’t setting the correct attributes on sites with SSLs.
- Fix: Some bundled images hadn’t been optimized.
- Fix: The discounts API endpoint could not filter a discount by ID.
- Fix: When making an EDD Wallet deposit, the cart HTML would be removed when taxes were enabled.
2.10.6, June 22, 2021
- New: Added license upgrade notices to EDD admin pages.
- Improvement: The discount API endpoint now includes
- Improvement: The Hummingbird cache plugin is now detected in
- Fix: Currency symbol was prefixed with minus sign in PHP 8 on some interfaces.
- Fix: Prevent multi purchase mode from reporting as enabled if a product does not have variable pricing turned on.
- Fix: Deprecation notices in PHP 8.
- Improvement: Stripe – When using the filter to adjust Stripe Element styles, we now merge those styles with the default generated ones.
- Improvement: Stripe – The
edds_is_zero_decimal_currency()function now accepts an optional
$currencyparameter, so you can check any currency instead of just the shop’s selected currency.
- Fix: Stripe – Fatal error when attempting to perform old database upgrades.
- Fix: Stripe – Undefined index notice with Stripe Connect.
2.10.5, May 20, 2021
- Fix: Unexpected checkout fields may become required when they weren’t before, after a discount code is applied.
- Fix: Deprecation notices in PHP 8.
- New: Stripe – Added UGX to zero decimal currency list.
- Improvement: Stripe – The Express Checkout gateway option is now completely hidden until eligibility is confirmed, whereas before it was shown and then hidden if determined to be ineligible. This should remove the sudden “flash” of the gateway option disappearing.
- Improvement: Stripe – Express Checkout settings are now disabled if taxes are enabled for the store.
- Fix: Stripe – The “Buy Now” modal visible on the page if Buy Now is enabled but the Stripe gateway isn’t active.
- Fix: Stripe – Incorrect get_current_user() function usage.
- Fix: Stripe – Express Checkout not using custom price (from the Custom Prices add-on).
- Fix: Stripe – Undefined variable $purchase_data when making purchase that only contains fees.
- Dev: Stripe – Update refund logic to use new refunds API in EDD 3.0.
- Dev: Stripe – Remove composer/installer version lock.
2.10.4, May 4, 2021
- Security Fix: Reflected XSS.
2.10.3, April 14, 2021
- Security Fix: Fix nonce logic when disconnecting from Stripe Connect.
- Fix: Not enough padding on file upload field.
2.10.2, April 5, 2021
- Fix: Stripe – Some Stripe errors were not localized.
- Fix: Stripe – The pre-approval payment status was being registered when it was not supported.
- Fix: Stripe – Use of the array_key_first function was only available in PHP 7.3+.
- Fix: Registration form was not validating all fields.
- Fix: Batch Download importer was using GLOB_BRACE which is not available on all containerized platforms.
- Tweak: Re-Organized the gateway list in settings.
- Tweak: Adjust SendWP setting description.
- Tweak: Removed Jilt callout in Advanced Email settings.
- New: Inform store owners of Recapture for abandoned cart recovery.
2.10.1, March 9, 2021
- Fix: Removed incorrect inclusion of license key field for the Stripe integration when the Stripe Pro Payment Gateway extension is not active.
2.10, March 9, 2021
- New: Accept credit cards, Apple Pay, Google Pay, and Microsoft Pay with the included Stripe Standard payment gateway. Read more about this feature here: https://easydigitaldownloads.com/edd-stripe-integration
- New: Updated bundled add-on updater class to the latest version (1.8.0).
- New: Added a notice for users on older PHP versions about upcoming EOL for PHP 5.3, 5.4, and 5.5 support.
- Fix: The select HTML helper improperly assumed the selected value was an array.
- Fix: There was a memory leak when calling get_password_reset_key() caused by EDD’s customers database class.
- Fix: When adding items to the cart via AJAX, the presence of the download_id value was assumed, but not verified.
- Fix: Imported CSV files were not being properly deleted after the import was completed.
- Fix: Client-side validation of the discount field could cause unexpected issues with the checkout when applying a discount.
- Fix: The discount amount was incorrect in the sales API endpoint when it was applied to a variably priced product.
- Fix: When querying the customers API endpoint, it was possible for an undefined variable notice to be logged.
- Fix: The password fields on the profile editor had incorrect attributes.
- Fix: After a failed login, the reset password link always linked to the checkout page.
- Fix: PayPal Standard: Negative fees were being applied twice.
- Fix: Account for an undefined index of edd-cart-downloads.
- Fix: The payment icons on checkout were missing alt tags.
- Fix: The login process was not using wp_safe_redirect.
- Fix: It was possible to save a non-numeric value for a discount.
- Fix: The modify_cart_item() function did not allow for decreasing of the tax rate on an item.
- Fix: Custom add to cart URLs with a malformed download_id value caused an undefined index notice.
- Fix: When no customer exists for a query, the total_spent returns an undefined index notice.
- Dev: When checking if a file download limit is reached, the price_id of the purchased download is now passed to the edd_is_file_at_download_limit filter.
- Dev: The edd_download_price_table_head and edd_download_price_table_row actions have been formally deprecated.