Easy Digital Downloads – Simple eCommerce for Selling Digital Files

Description

Easy Digital Downloads is a complete eCommerce solution for selling digital products on WordPress. Learn more at EasyDigitalDownloads.com.

Sell effortlessly

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:

  • Stripe
  • PayPal
  • 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)
  • Braintree
  • Authorize.net
  • 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

Get help

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.

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.

Screenshots

  • Detailed and actional reports
  • Customer Management
  • Order History
  • Order Details
  • Product Grid - Vendd
  • Checkout - Vendd
  • Product Grid - Default Theme
  • Checkout - Default Theme

Blocks

This plugin provides 10 blocks.

  • EDD Cart Display a mini or full shopping cart outside of checkout for Easy Digital Downloads.
  • EDD Download Terms Show categories, or tags for Easy Digital Download products.
  • EDD Order History Display the Easy Digital Downloads order history of a logged in user.
  • EDD Receipt Show customers their detailed receipt. Supports guest orders.
  • EDD Registration Form Registration form for Easy Digital Downloads.
  • EDD Products A block to show your Easy Digital Download products based on visual customizations and query parameters.
  • EDD Login Form Login form for Easy Digital Downloads.
  • EDD Checkout Full checkout block for Easy Digital Downloads.
  • EDD Buy Button Quickly add a "buy now" button for any EDD product.
  • EDD Confirmation A brief confirmation screen to show to customers immediately after a successful purchase.

Installation

  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.

FAQ

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.

See the themes here.

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.

Check out AffiliateWP

Can I give my customers downloadable PDF Invoices?

Yes, with the Invoices extension, you can provide beautiful and downloadable invoices to your customers.

Invoices

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.

Reviews

December 13, 2022
Mihai does a great job responding quickly to support requests. If either EDD or WooCommerce were to create a greatly expanded and simplified User Manual so that anyone could more easily set up a WordPress site without getting stuck, I think they'd attract many customers.
December 6, 2022 1 reply
Hello After the update, when I enter the product editing page, it is extremely slow and I have to wait for more than 40 seconds until the product editing page is fully loaded. Thank you for your guidance
November 23, 2022 2 replies
When there is content in the cart, the site is slow. Session has fatal error. Very complex and unstable. The plugins are all too expensive and there are too many types.
November 15, 2022
TLTR: Do not let them lock yourself in this nightmare. Otherwise, click the title to see this formatted. I am a long time EDD user and plugin dev and WP expert myself. I never used WooCommerce, but it has to be purchased by Automatic itself, and I read that selling digital products only with it works just fine. Yoast took on an extremely complicated migration journey because they were not satisfied with this plugin, perfectly understandable. Software has Lots of Issues I like to tell everyone that I had only problems with EDD over the years. I am honestly too lazy to list them all. EDD acting weird, doing weird things with things that should not be uncommon. And that without any warnings or messages. There was always something that went wrong. I had to issue so many refunds because EDD messed things up. Operating this plugin with its extensions is not only NOT EASY at all. It's time-consuming and reflects very unprofessionally to your customers because it always messes something up. Honesty, always something weird non-transparent things. People with cancelled subscriptions getting charged anyway. Multiple subscriptions linked to one key, when I cancelled one subscription for the customer the key got deactivated as well even though another People having no cancel subscription buttons under certain outdated conditions. People getting error messages on purchase, purchase goes through anyway, they get charged triple because they retried again 2 times Protected files setup for NGINX does not work for me since 3.0 Support Refuses to Help The EDD devs also seems to only care about sites that are set up a total default way, with everything and every setting default only. I had an issue years ago when I hosted on Pantheon (I also not recommend them). And they simply did not reply to me Support ticket anymore. After I pressured them they said they have a lot to do (not an excuse for a company that size with that pricing), what they really did was move on to other tickets that have some basic default WP site instead and just ignored me because there was no copy pasta for my case. Now in 2022 I have protected files setup for NGINX does not work for me since 3.0, and they claim they did change nothing. Support refuses to help me and just tells me I should set up my site like a default site, that is totally unacceptable! I use Bedrock site structure that has the site like this: └── web ├── app │ ├── mu-plugins │ ├── plugins │ ├── themes │ └── uploads ├── wp-config.php ├── index.php └── wp This is not uncommon, and pretty much everything and every plugin that is not coded wrong works like that. WordPress INTENDS and supports this! EDD devs do not care, they do NOT. Even though I told them it worked in 2.0. With hours and hours of my own research and config that was not fully documented, btw. Their initial response was just "We used NGINX as well, so it should work" that kind of answer tells you A LOT! Prices are Insane! Let talk about pricing. EDD used to be somewhat affordable, I do not remember how many years ago EDD made a sudden price hike that was very negatively received by the community. A single extension for more than $100 a year and you need at least a few extensions to operate. All the essential functionality is locked behind expensive add-ons. Last year, EDD was acquired, and the original dev and founder left WP development altogether. They made the pricing even worse again. You can now no longer purchase only the extensions you need. You are forced to buy an insanely expensive subscription package. And guess what, the only one that makes any sense for Digital Downloads for software that is maintained is the one that contains the add-ons needed to "Sell Licensed Software" that lets you set up subscriptions. This is how they themselves to it anyone who sells plugins or themes for WP should set up a yearly subscription model, it has been proven that a subscription model gets you the most money by far. They know this, exploit it, and charge you $500 a year. I simply can not afford this! I am a single dev who does not make that much on my add-ons. All the email and marketing and other extensions included, I do not have time for, I do not need them at this point. But I am forced to pay for them because they no longer let you purchase add-ons individually. Not everyone has a large revenue and a big company. What I always liked about WP is that it empowers individuals. EDD only thinks of its customers to be some large revenue, huge company. They do the opposite of supporting individuals, in fact individuals may not know how good the subscription model works and may choose to "save" on the EDD package and take the cheaper one without the subscriptions add-on and think they save money when in fact they lose money in the long run. Just pick WooCommerce, again, never used it, but it can only be better, and I bet they have actual support that helps you. Sorry for my bad writing, I am angry, English is not my native language. Too much "I this, I that" I know 😉
Read all 464 reviews

Contributors & Developers

“Easy Digital Downloads – Simple eCommerce for Selling Digital Files” has been translated into 18 locales. Thank you to the translators for their contributions.

Translate “Easy Digital Downloads – Simple eCommerce for Selling Digital Files” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

3.1.0.5, January 25, 2023

  • Improvement: New customer report tiles now only count customers with purchases.
  • Improvement: The email address field at checkout now adheres to the database schema and limits to 100 characters.
  • Improvement: Further improve the AJAX download search to be more accurate.
  • Fix: Earnings exports report now accounts for partially refunded orders.
  • Fix: Added validation to prevent duplicate order addresses from being inserted.
  • Fix: When saving a non-variable product, an empty post meta value was being saved.
  • Improvement – Blocks: Updating the wording for the Disable Redownload setting if the block is available.
  • Fix – Blocks: Added sanitization to the ‘additional classes’ block setting before rendering the block.

3.1.0.4, January 5, 2023

  • Improvement: The cart performance has been improved by disabling tax rate lookups when a customer address is supplied, but taxes are disabled.
  • Improvement: Reports now factor in order item adjustments like negative fees.
  • Improvement: The Downloads list table now loads faster on sites with a large number of download categories.
  • Improvement: The Sales REST API Endpoint was updated to respect the new order statuses in EDD 3.0.
  • Improvement: Improve semantic markup by not allowing two of the same ID attribute for redirect to checkout buttons.
  • Improvement: Discount code lookup performance has been improved when looking up a discount by the discount code.
  • Fix: Looking up payments with a Download ID that was a string or integer would return incorrect or no orders.
  • Fix: Reduced the number of HTTP calls that the notifications API can make per day.
  • Fix: Avoid the “Request-URI Too Long” error when performing multiple actions in a row on list tables.
  • Fix: Negative fee amounts are now properly considered when determining an item’s final price in the cart.
  • Fix: PayPal: Arabic characters in download names could cause an unexpected error during checkout.
  • Fix: PayPal: The backup IPN is not loaded if the PayPal integration is not connected.
  • Fix: PayPal: The payment_date field was assumed to be present when processing the backup IPN.
  • Fix: The edd_get_payment_amount function could improperly return an empty string instead of a float value.
  • Fix: Add to cart buttons were not using the token values to improve caching compatibility.
  • Fix: When many items were purchased at once, some order item download links were not working due to an improper status.
  • Fix: Hardened the search query for the AJAX endpoint for searching for downloads by title.

3.1.0.3, November 23, 2022

  • Improvement: The PayPal webhook connect/disconnect process has been improved to ensure proper webhook delivery.
  • Improvement: An IPN Backup has been added to the PayPal gateway, to avoid missing webhooks that may have been disconnected.
  • Fix: PayPal Buy Now functionality has been fixed for guest users.
  • Fix: Exporting orders was including orders with the Trash status.
  • Fix: Trashed orders were showing in the purchase history shortcode (templates updated: history-downloads.php and history-purchases.php).
  • Fix: The file downloads graph was formatting integers as currency.
  • Fix: Searching by download ID on the Orders list table was not working.
  • Fix: In some timezone settings, the reports could incorrectly display.
  • Fix: Determining if a product can be purchased was improved for performance.
  • Fix: Switching gateways when resuming an order was resulting in the wrong gateway value being added to the database.
  • Fix: The migration process can now identify custom discount meta for migration to the new adjustment meta table.
  • Fix: Non-Standard (but still supported by WordPress) directory structures could fail if the site_url and home_url were different.
  • Fix: Discount amount calculations were assuming that the discount has Price ID assignments.
  • Fix: Logging in from the {receipt_link} in emails now properly redirects the user to the receipt page.
  • Fix – Blocks: The checkout block could prevent purchases if a logged in user did not have a name already.
  • Fix – Blocks: The Order History block no longer shows Trashed orders.
  • Fix – Blocks: Incompatible combinations of settings on the Checkout block could produce a fatal error.

3.1.0.2, October 27, 2022

  • New – Blocks: The registration block now supports the WordPress password strength script.
  • Improvement: The products API now includes the product permalink.
  • Improvement: The user registration process and messaging has been updated to more closely match WordPress Core.
  • Improvement: Searching in the product dropdown is now restricted to titles only.
  • Improvement: The no-js/js class switcher has been prefixed and made more specific.
  • Improvement: Editing a bundled product has been updated to be more performant.
  • Improvement – Blocks: Fees in the cart/checkout blocks have been updated to more closely match cart items and other amounts.
  • Improvement – Blocks: Update block definitions so that icons show on the repository.
  • Improvement – Blocks: The order history block filter has been updated to not override filtered values.
  • Improvement – Blocks: A filter has been added to the Terms block to allow users to filter the query.
  • Fix: The 3.0 migration for customer addresses could create duplicate addresses.
  • Fix: A redundant database update for customer addresses was removed from the 3.0 migration.
  • Fix: The main checkout function now checks directly for the checkout block rather than relying on a filter.
  • Fix: The Tools screen could time out on a site with a large number of products.
  • Fix: The options for bundled products now show the general product in addition to each price option.
  • Fix: For some time zones, reports could show incorrect dates for a range such as “last quarter”.
  • Fix: The block editor was not showing the correct list of authors for a download.
  • Fix: Some settings for the legacy cart widget could not be disabled once saved.
  • Fix: Customer names with unexpected characters could be improperly interpreted by spreadsheet apps.
  • Fix – Blocks: The checkout helper function was incorrectly returning true.
  • Fix – Blocks: The cart block is now disabled in the block editor.
  • Fix – Blocks: The purchase link filter could incorrectly override previous adjustments to the button class.
  • Dev: The CLI order migration has been updated to allow partial order migrations.

3.1.0.1.1, October 21, 2022

This is a very minor point release, with a single change to try and correct an issue within the PayPal API that is causing 403 and 400 errors.
It is not intended to resolve the issue within PayPal’s API, but offer us some time to continue to work with PayPal to solve the issue long term without it impacting customer’s purchases.

  • IMPORTANT: If you have been experiencing issues with the PayPal webhooks, please update EDD and visit Downloads > Settings > Payments > PayPal and re-check your payment status and sync webhooks.
  • Fix: Attempts to create a specific user-agent to send to PayPal for webhook validation to avoid 403/400 errors.

3.1.0.1, October 8, 2022

  • Fix: With taxes enabled, updating the address fields in the shortcode would replace the cart with the cart block.
  • Fix: The dashboard widget was not using the order currency to display amounts for recent orders.
  • Fix: No JS fallback buttons were being improperly toggled by JavaScript changes.

3.1, October 6, 2022

  • New: Websites running WordPress 5.8 and above (and PHP 7.0 or greater) have access to ten new registered EDD blocks.
  • New: Store owners can receive weekly or monthly email summaries of their store’s performance.
  • New – Blocks: A new EDD Products block has been registered to display downloads.
  • New – Blocks: A new EDD Terms block has been registered to display download categories or tags.
  • New – Blocks: A new EDD Buy Button block has been registered to display a purchase button for any download.
  • New – Blocks: A new EDD Cart block has been registered to show either a mini or full cart anywhere on your site.
  • New – Blocks: A new EDD Order History block has been registered to show a customer’s order history.
  • New – Blocks: A new EDD Login block has been registered to render a login form which supports a full lost password recovery flow and reCAPTCHA support.
  • New – Blocks: A new EDD Registration block has been registered to render a registration form which includes reCAPTCHA support.
  • New – Blocks: A new EDD Receipt block has been registered to show a customer’s receipt. This receipt supports guest purchases.
  • New – Blocks: A new EDD Confirmation block has been registered to show some order details when successfully completing a purchase.
  • New – Blocks: A new EDD Checkout block has been registered to completely update the EDD checkout experience. This block is still considered to be in beta.
  • Improvement: Store owners can now require that a user be logged into their account to download files.
  • Improvement: The CLI migration to EDD 3.0 has been updated to improve memory usage for larger stores.
  • Improvement: The PayPal Commerce button is disabled until required fields have been completed.
  • Improvement: Relative date ranges are now compared against similar ranges in reports.
  • Improvement: Report line graphs with multiple scales now use unique y-axes to display data.
  • Improvement: Development asset files have been removed from the final build.
  • Improvement: Updating download calculations has been moved from the order completion process to a slightly delayed cron event.
  • Improvement: Dismissing the advanced filters on the order table has been improved.
  • Improvement: Filters have been added to prevent certain logs from being recorded.
  • Improvement: EDD registered pages now show in the pages list table.
  • Improvement: The order ID column in the orders table no longer has a constrained width.
  • Improvement: Store admins can now view the customer receipt from a link on the orders table.
  • Improvement – Blocks: A confirmation page/block has been registered to separate the order completion view from the receipt.
  • Improvement – Blocks: If the core EDD cart and terms widgets are not already in use on the site, they will not be displayed in the block editor as legacy widgets.
  • Improvement – Stripe: Session validation throughout Stripe actions has been updated to improve reliability.
  • Improvement – Stripe: Error messages have been updated to help customers with failed purchases know what action to take.
  • Improvement – Stripe: Supported payment methods are included in the gateway registration.
  • Improvement – Stripe: Optimized validation during checkout.
  • Improvement – Stripe: Optimized cleanup of logging.
  • Improvement – Stripe: Added better checkout session handling.
  • Fix: Resetting the store was incorrectly deleting discounts and tax rates.
  • Fix: The price option assignment for variably priced bundled product conditions could be incorrectly assigned.
  • Fix: Report graphs could be inaccurate when grouping by month due to time zone adjustments.
  • Fix: Querying the Stats API for a store using a UTC relative time zone would crash the site.
  • Fix: Calculations for report tiles have been updated for consistency.
  • Fix: The edd_load_gateway JavaScript hook is now triggered when only one gateway is active.
  • Fix: Adding an adjustment on a manual order could cause unexpected cursor behavior.
  • Fix: Using edd_insert_payment with incomplete data now creates an order if possible, or fails without errors if not.
  • Fix: Legacy log functions now query logs correctly.
  • Fix: Stores with more than 30 tax rates now can view all rates on the settings screen.
  • Fix: Deleting a customer now properly deletes their orders as well.
  • Fix: It is now possible to set a 0% tax rate for a region to exclude taxes from being collected for that region even if a country wide rate exists.
  • Fix: When selecting a gateway and refreshing the checkout screen, some browsers could fail to load the payment fields.
  • Fix: Searching the orders table for a discount code which does not exist now correctly returns no orders.
  • Fix: The customers API endpoint now uses the correct parameters to return data.
  • Fix: When registering a new user from an EDD form, spaces were incorrectly removed from user names.
  • Fix: When the browser timezone differed from that of the Store, line graphs could offset the points from the gridlines.
  • Fix: Users with the shop worker role were not able to create new downloads.
  • Fix: Upon activation, EDD could have thrown a PHP notice about the orders table not existing on new installs.
  • Fix – Stripe: Customers were not always automatically logged in with Auto Register’s successful purchase setting.
  • Fix – Stripe: When changing the store mode, the Stripe admin notice displayed incorrectly.
  • Dev: Legacy compatibility code has been removed from the downloads metabox.
  • Dev: A filter has been added to the customer row actions.
  • Dev: Drop-ins have been added to the system information file.
  • Dev: Templates which have been overridden now show in the system information file.
  • Dev: Test mode can now be activated by setting a constant and the setting will reflect this.

3.0.4, September 6, 2022

  • Fix: Stripe Pro license key detection was not working on older versions of the Stripe Pro gateway.
  • Fix: Hour by hour graphs that spanned more than one day would group all data into the first day.
  • Fix: Reports that span more than one year would group stats by month only.
  • Fix: Some of the report tiles were not accurately accounting for refunded orders.
  • Fix: The purchase receipt was limited to only showing 30 items.
  • Fix: When using persistent object caching, discount codes would not always update immediately.
  • Fix: When manually adding a new order, region based tax rates were not updating.
  • Fix: Improved migration of order address data when checking tax rates of previous orders.
  • Fix: The stats API endpoint data did not match the reports data. This improves the iOS app accuracy.
  • Fix: The template modification checks for 3.0 compatibility were checking for modifications too often.
  • Fix: Guest customers using an email address associated with an existing user were not always connected.
  • Fix: When editing an order’s address, it was not always saving changes.
  • Dev: Actions were added to the edd_add_customer and edd_update_customer functions.

3.0.3, August 16, 2022

  • New: Added support for Global Tax rates as a fallback with the new Tax Rates UI.
  • Fix: The old ‘fallback tax rate’ was not imported as a new tax rate.
  • Fix: Improved discount code validation with product restrictions and requirements.
  • Fix: Viewing a custom report with a date range over 2 days could throw an undefined variable notice.
  • Fix: Single priced downloads were showing incorrect stats in reports.
  • Fix: Adding a download to a new order would not let you manually set prices in Safari.
  • Fix: When an order with a discount code is deleted, the discount code’s usage count is decreased.
  • Fix: The total refund amount tile was incorrectly calculating the relative percentage.
  • Fix: The customer table upgrade assumed the table prefix hadn’t been changed after installation of EDD 2.x.
  • Fix: The 3.0 migration could incorrectly identify a price ID as invalid and set it to the default price ID.
  • Fix: The file download log could produce an notice if a file had been deleted from a product.

3.0.2.1, 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: When cancelling an order once at PayPal, the checkout page could produce a Javascript error.
  • 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 edd_has_user_purchased() function.
  • 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_get_, edd_add_, and edd_delete_ helper functions to access new database methods.
  • Dev: Introduced edd_maybe_add_customer_address to ensure that only unique physical addresses are added to a customer.
  • Dev: Introduced helper functions such as edd_get_admin_url, edd_is_dev_environment, and edd_redirect to 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 – JavaScript error when viewing a preapproved payment record.
  • Fix: Stripe – EDD 3.0: Incorrect tax amount being charged when customer uses a different country from the store’s base country.

2.11.4.1, 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_response filter 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 payment_stats property for EDD_Payment_Stats.
  • Dev: Improve performance of edd_get_settings_tabs.
  • Dev: FILTER_SANITIZE_STRING is deprecated in PHP 8.1.

2.11.3.1, 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.
  • Fix: _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_Updater to version 1.9.1.

2.11.2.1, 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: JavaScript error if the checkout button has been customized to not have an id attribute.
  • Fix: WP-CLI – price_id parameter not working with wp edd payments create command.
  • 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: PayPal Commerce – Rely on end-user locale when loading the PayPal Javascript SDK.
  • 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 excluded_products.
  • Improvement: The Hummingbird cache plugin is now detected in edd_is_caching_plugin_active().
  • 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 $currency parameter, 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.
  • New: Add link to Termageddon for Terms of Agreement and Privacy Policy fields within Easy Digital Downloads settings.

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: The Colorbox JavaScript resources are no longer needed, but were still being enqueued.
  • 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.