=== Easy Digital Downloads - Simple eCommerce for Selling Digital Files ===
Author URI: https://easydigitaldownloads.com
Plugin URI: https://easydigitaldownloads.com
Contributors: easydigitaldownloads, am, cklosows, littlerchicken, smub, mordauk, sunnyratilal, chriscct7, section214, sumobi, sdavis2702, mindctrl, sksmatt, SpencerFinnell, johnstonphilip, brashrebel, drewapicture, johnjamesjacoby, nosegraze, lisacee, zkawesome
Tags: ecommerce, payments, sell, digital store, stripe
Requires at least: 5.4
Tested up to: 6.2
Requires PHP: 7.1
Stable Tag: 3.1.1.4.2
License: GNU Version 2 or Any Later Version

Sell your digital products with the #1 eCommerce plugin written for digital creators by digital creators.

== Description ==

= eCommerce without limits =
We believe that _your passion_ for creating shouldn't be restricted by your choice of ecommerce software. **Easy Digital Downloads** gives you unlimited products with no hidden listing fees, unlimited products, unlimited transactions, and provides unlimited possibilities.

Too often, digital creators must choose between powerful and cheap. Not with Easy Digital Downloads. It's easy to start with limitless possibilities, which is why some of the most popular digital ecommerce businesses trust Easy Digital Downloads with their store.

= Sell effortlessly =

Whether it is selling [software like WordPress plugins or themes](https://easydigitaldownloads.com/blog/selling-software/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [documents](https://easydigitaldownloads.com/blog/selling-documents/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description) and [spreadsheets](https://easydigitaldownloads.com/blog/sell-excel-or-google-spreadsheets/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [photography](https://easydigitaldownloads.com/blog/selling-photographs/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [ebooks](https://easydigitaldownloads.com/blog/selling-ebooks/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [music](https://easydigitaldownloads.com/blog/selling-audio-and-music/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [graphics or digital artwork](https://easydigitaldownloads.com/blog/selling-graphics-and-digital-artwork/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), [videos](https://easydigitaldownloads.com/blog/selling-videos/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description), 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

Within minutes of starting the Setup Wizard, you'll have access to the base features you'll need to start selling:

- **Complete shopping cart** - Customers can browse your products, add items to their cart, and checkout when ready. Or they can bypass the cart using Buy Now buttons from your product page.
- **Flexible payment methods** - Your customers can pay by card, PayPal, PayPal Credit, Apple Pay, Google Pay, and Link by Stripe.
- **Highly customizable and clean checkout** - Buyers can easily complete their purchase, directly on your site's checkout page with the included WordPress Block.
- **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, average order value, and more.
- **Secure file protection** - Prevent unauthorized visitors from accessing your product files without paying.
- **Discount codes** - Boost conversions by offering potential customers a coupon or discount code 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](https://easydigitaldownloads.com/edd-features/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=much-more&utm_term=description)!

= 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](https://easydigitaldownloads.com/docs/easy-digital-downloads-in-your-own-language/?utm_source=docs&utm_medium=description_tab&utm_content=languages&utm_campaign=readme).

> 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

= 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.

Offer multiple payment methods, and start selling today:

* Credit Cards/Bank Cards - Via Stripe
* Apple Pay
* Google Pay
* Link by Stripe
* PayPal
* PayPal Credit

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)

> 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

Easy Digital Downloads is a verified member of the [Stripe partner program](https://stripe.com/partners/directory/easy-digital-downloads). 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 thier business is secure.

= Take your store further with a Pass =

With our Passes you can get access to [additional features](https://easydigitaldownloads.com/downloads/?utm_source=extensions&utm_medium=description_tab&utm_content=extensions&utm_campaign=readme) and super-charge your ecommerce business. Some of our most popular features in Pro are:

* [Stripe Pro](https://easydigitaldownloads.com/downloads/stripe-gateway/?utm_source=extension&utm_medium=description_tab&utm_content=stripe-pro&utm_campaign=readme) 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](https://easydigitaldownloads.com/downloads/paypal-commerce-pro/?utm_source=extension&utm_medium=description_tab&utm_content=paypal-commerce-pro&utm_campaign=readme) 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](https://easydigitaldownloads.com/downloads/software-licensing/?utm_source=extension&utm_medium=description_tab&utm_content=software-licensing&utm_campaign=readme) 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](https://easydigitaldownloads.com/downloads/recurring-payments/?utm_source=extension&utm_medium=description_tab&utm_content=recurring-payments&utm_campaign=readme) allows store owners to sell recurring subscriptions for digital products using payment gateways like Stripe and PayPal.
* [Frontend Submissions](https://easydigitaldownloads.com/downloads/frontend-submissions/?utm_source=extension&utm_medium=description_tab&utm_content=frontend-submissions&utm_campaign=readme) transforms your store into a full-featured multi-vendor marketplace.
* [Commissions](https://easydigitaldownloads.com/downloads/commissions/?utm_source=extension&utm_medium=description_tab&utm_content=commissions&utm_campaign=readme) enables store owners to easily track earnings for product vendors.
* [Free Downloads](https://easydigitaldownloads.com/downloads/free-downloads/?utm_source=extension&utm_medium=description_tab&utm_content=free-downloads&utm_campaign=readme) allows you to give free products away as lead magnets.
* [Reviews](https://easydigitaldownloads.com/downloads/product-reviews/?utm_source=extension&utm_medium=description_tab&utm_content=reviews&utm_campaign=readme) allows customers to leave reviews and feedback on the products they have purchased.
* [Recommended Products](https://easydigitaldownloads.com/downloads/recommended-products/?utm_source=extension&utm_medium=description_tab&utm_content=recommended-products&utm_campaign=readme) increases revenue by showing customers recommendations on additional products to purchase based on real sales data.
* [Content Restriction](https://easydigitaldownloads.com/downloads/content-restriction/?utm_source=extension&utm_medium=description_tab&utm_content=content-restriction&utm_campaign=readme) allows site owners to restrict access to page content to paying customers.
* [Mailchimp](https://easydigitaldownloads.com/downloads/mailchimp/?utm_source=extension&utm_medium=description_tab&utm_content=mailchimp&utm_campaign=readme) connects your store to your Mailchimp account so you can easily subscribe customers to email lists based on which products they purchase.

These are just a few of the features available to help you optimize your digital store and increase revenue. See our [complete list of extensions](https://easydigitaldownloads.com/downloads/?utm_source=extensions&utm_medium=description_tab&utm_content=extensions&utm_campaign=readme) for more.

= 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](https://easydigitaldownloads.com/categories/docs/developer-docs/?utm_source=wporg&utm_medium=readme&utm_content=documentation&utm_campaign=dev-docs) 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 world-class technical support from our globally distributed full-time support team. We also have an [extensive documentation site available](https://easydigitaldownloads.com/docs/?utm_medium=readme&utm_source=wporg&utm_campaign=lite-plugin&utm_content=docs&utm_term=description). If you're looking for faster support via email, we encourage you to [purchase an Easy Digital Downloads pass](https://easydigitaldownloads.com/pricing/?utm_medium=readme&utm_source=wporg&utm_campaign=lite-plugin&utm_content=upgrade&utm_term=description).

> 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](https://easydigitaldownloads.com/blog/the-12-most-popular-digital-products-you-can-sell-online/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description)
- [How to Add Lead Magnets in WordPress to Grow Your Email List](https://easydigitaldownloads.com/blog/how-to-add-lead-magnets-in-wordpress-to-grow-your-email-list/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=lead-magnets&utm_term=description)
- [How to Successfully Launch Your Digital Product](https://easydigitaldownloads.com/blog/how-to-successfully-launch-your-digital-product/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=launch&utm_term=description)
- [How to Sell Canva Templates with WordPress](https://easydigitaldownloads.com/blog/how-to-sell-canva-templates-with-wordpress/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=canva&utm_term=description)
- [The Astonishing Benefits of Selling Digital Products](https://easydigitaldownloads.com/blog/top-10-benefits-selling-digital-products/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=benefits&utm_term=description)

**[Subscribe to our newsletter](https://easydigitaldownloads.com/subscribe/?utm_medium=readme&utm_source=wporg&utm_campaign=lite-plugin&utm_content=subscribe&utm_term=description)** to get posts like these in your inbox as soon as they're published.

= 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, and create unlimited products, and never pay a listing fee.

If Easy Digital Downloads doesn't quite fit your needs, we suggest you try WP Simple Pay.

[WP Simple Pay](https://wpsimplepay.com/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=something-else&utm_term=description) is the #1 Stripe Payments Plugin for WordPress.

= Branding guideline =
Easy Digital Downloads is a product by Sandhills Development, LLC. When writing about the digital eCommerce plugin by Easy Digital Downloads, please make sure to always reference us by full name before you use our short name of EDD.

Easy Digital Downloads (correct)
EDD (correct)
easy digital downloads (incorrect)
Edd (incorrect, this is our mascot's name!)
edd (incorrect)

== Installation ==

1. Activate the plugin
2. Complete the Onboarding Wizard
3. Start selling your first product!
4. For more detailed setup instructions, vist the official [Documentation](https://easydigitaldownloads.com/docs/quickstart-guide/?utm_source=docs&utm_medium=installation_tab&utm_content=documentation&utm_campaign=readme) page.

== Frequently Asked Questions ==

= 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](https://easydigitaldownloads.com/docs/?utm_source=docs&utm_medium=faq_tab&utm_content=documentation&utm_campaign=readme)

= Where can I ask for help with my digital e-Commerce store? =

You can submit a support ticket via the [support forum](https://wordpress.org/support/plugin/easy-digital-downloads/) 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.

= How can I increase conversions? =

Due to its popularity, many ecommerce tools have built direct integrations with Easy Digital Downloads, such as [OptinMonster](https://optinmonster.com). With the direct EDD integration, you can optimize your sales funnel using OptinMonster's display rules based on the customer's EDD cart contents and conditions.

= 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](https://easydigitaldownloads.com/docs/do-i-need-an-ssl-certificate/?994-how-to-set-up-ssl?utm_source=docs&utm_medium=faq_tab&utm_content=documentation&utm_campaign=readme)

= What themes work with Easy Digital Downloads? =

While nearly any theme will work with Easy Digital Downloads, we've worked with industry-leading theme developers to curate a [list of themes that are specifically written for Easy Digital Downloads](https://easydigitaldownloads.com/themes/?utm_source=docs&utm_medium=faq_tab&utm_term=import_addon&utm_content=faqs&utm_campaign=readme).

= 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](https://easydigitaldownloads.com/docs/importing-exporting-products/?utm_source=docs&utm_medium=faq_tab&utm_term=import_addon&utm_content=faqs&utm_campaign=readme) that imports a CSV file, so if you can get your data into the appropriate format then we can import it.

= How do I migrate from Gumroad? =

Check out our guide on [migrating to Easy Digital Downloads from Gumroad](https://easydigitaldownloads.com/docs/migrating-to-easy-digital-downloads-from-gumroad/?utm_source=docs&utm_medium=faq_tab&utm_term=import_addon&utm_content=faqs&utm_campaign=readme).

= How do I show the user's purchase history? =

You can display your customer's purchase history with the EDD Order History Block or if you prefer, you can show users a list of their available downloads with the EDD User Downloads block. Check out our documentation for more information about [Easy Digital Download's Blocks](https://easydigitaldownloads.com/docs/easy-digital-downloads-blocks/?utm_source=docs&utm_medium=faq_tab&utm_content=faqs&utm_campaign=readme).

= How do I display my digital products? =

Easy Digital Downloads comes with a [customizable WordPress Block](https://easydigitaldownloads.com/docs/easy-digital-downloads-blocks/?utm_source=docs&utm_medium=faq_tab&utm_content=faqs&utm_campaign=readme), giving you the ability to display your products your way.

= 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](https://affiliatewp.com?utm_source=edd_readme&utm_medium=faq_tab&utm_content=home&utm_campaign=readme)

= Can I give my customers downloadable PDF Invoices? =

Yes, with a Personal Pass, you can provide beautiful and downloadable invoices to your customers with the [Invoices](https://easydigitaldownloads.com/downloads/edd-invoices/?utm_source=edd-invoices&utm_medium=faq_tab&utm_content=pdf-invoices&utm_campaign=readme) extension.

= Are recurring payments (subscriptions) supported? =

Yes, with an Extended Pass you get access to [Recurring Payments](https://easydigitaldownloads.com/downloads/recurring-payments/?utm_source=docs&utm_medium=faq_tab&utm_term=recurring_addon&utm_content=faqs&utm_campaign=readme). [Full documentation here](https://easydigitaldownloads.com/docs/recurring-payments-setup-overview/?utm_source=docs&utm_medium=faq_tab&utm_term=recurring_addon&utm_content=faqs&utm_campaign=readme). 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.

== Screenshots ==

1. Detailed and actional reports
2. Customer Management
3. Order History
4. Order Details
5. Product Grid - Vendd
6. Checkout - Vendd
7. Product Grid - Default Theme
8. Checkout - Default Theme

== Changelog ==
= 3.1.1.4.2, May 1, 2023 =
* Security: Improved validation for edd hooks.

= 3.1.1.4.1, April 21, 2023 =
* Fix - Blocks: Harden blocks loader to verify files exist before requiring them.

= 3.1.1.4, April 20, 2023 =
* Improvement: Removed a possible unsupported PHP configuration from the email summaries.
* Improvement: The edd_get_users_purchases function has been updated to account for customer email address changes.
* Improvement: Reports have been updated to more accurately account for timezones and date ranges.
* Improvement: The onboarding wizard loading was not allowing a close and exit after the first step.
* Improvement: License key handling for 3rd party extensions has been accounted for.
* Improvement: When using sequential order numbers, searching has been updated to account for order number.
* Improvement - Stripe: The Payment Element has been improved to handle failed 3DS challenges.
* Improvement - Stripe: Failed payment attempts are now more reliably accounted for.
* Improvement - Stripe: The Payment Element billing fields can now be filtered.
* Improvement - Stripe: The Payment Element now supports mandates, improving multi-regional payments.
* Improvement - Stripe: The 'Card Name' field is re-introduced for regions that require it.
* Improvement - Blocks: Better support for custom fields with the Checkout Block.
* Improvement - Blocks: Developers can now register custom columns for the User Downloads block.
* Improvement - Blocks: The Buy Now button can now have its behavior defined as Add to Cart or Buy Now.
* Fix: Discounts with high value amounts were not saving correctly.
* Fix: Bulk Editing prices was not working with WordPress 6.1+.
* Fix: Exporting product sales was not always respecting the date range filters.
* Fix: Exports with date queries were not always accounting for timezones accurately.
* Fix - Blocks: Cart section headings were not always displayed when reloading the section via AJAX.
* Dev: New custom hooks in database row transitions have been added.


= 3.1.1.3, March 23, 2023 =
* Improvement: The orders list table in the admin now sorts orders by date as the default.
* Improvement: Removed unnecessary options in the onboarding wizard.
* Improvement - Stripe: Store owners can now [control which payment methods to accept within their Stripe account](https://easydigitaldownloads.com/docs/stripe/#how-to-manage-payment-methods).
* Improvement - Stripe: We've added a better explanation for the Restrict Stripe Assets setting.
* Change: Translations are now always managed by WordPress.org.
* Fix: Existing tables might not have been updated correctly.
* Fix: Attempting to update the default email address from the profile editor could fail in some circumstances.

= 3.1.1.2, March 17, 2023 =
* Improvement: The order details screen in the admin has been updated to use the Currency class to be consistent with customer receipts.
* Improvement: Determining whether a plugin is a core extension for telemetry data has been improved.
* Fix: Enabling/disabling the sequential order numbers setting no longer prompts an upgrade notice, since that setting does not affect past orders.
* Fix: When exiting the onboarding wizard, the double overlay has been removed.
* Fix: The typos in the pro eligibility pointer notice have been corrected.
* Fix: The user verification email could cause a fatal error with some translations.
* Fix - Stripe: Improve custom Payment Element rules to merge with existing.
* Fix - Stripe: Single price products purchased through "Buy Now" no longer have a price ID assigned in the order items table.
* Dev: Using `get_page_by_title` has been deprecated in WordPress 6.2; our importer has been updated accordingly.
* Dev - Stripe: Unneeded source files are no longer included in the release.

= 3.1.1.1, March 14, 2023 =
* Fix: Ensure that Stripe only tries to verify the domain for Apple Pay when Stripe is connected.
* Fix: PHP 7.1 Compatibility with Stripe.
* Improvement: Avoid a race condition when updating where a function might not be available for a moment.

= 3.1.1 =
* New: New installations will be directed to an onboarding wizard to help set up key features and get new stores up and running more quickly.
* New: Users with an active pass can manage extensions with one license key and easily upgrade to Easy Digital Downloads (Pro).
* New - Stripe: Our Stripe integration now uses the Universal Payment Elements and Link support. Legacy users are encouraged to opt in.
* New - Blocks: A new EDD User Downloads block has been registered to show users the files they can download.
* Improvement: Trashed orders can now be deleted in bulk.
* Improvement: EDD's metaboxes have been moved up in priority when editing a download.
* Improvement: Reports styling has been updated to account for different graph types.
* Improvement: The Product Sales export tool has been added back to the Reports > Export screen.
* Improvement: EDD telemetry tracking has been completely rewritten to anonymize data collection.
* Improvement: The extensions licensing screen has been updated to improve messaging and the license management experience.
* Improvement: Querying for a customer by email address has been improved to include all email addresses.
* Improvement: The PayPal Commerce connection error messaging has been updated to give users more information to help troubleshoot before contacting support.
* Improvement: Improved performance when using order related functions which have been updated to accept the order object directly.
* Improvement: EDD admin screens now show only EDD notices.
* Improvement - Blocks: New installs will automatically use the checkout block instead of the legacy shortcode.
* Improvement - Blocks: The Login Page and Login Redirect Page settings have been reordered.
* Improvement - Blocks: When adding the EDD Buy Button to a download, the current download is set as the default.
* Improvement - Blocks: Additional security has been added to the checkout, login, and register blocks.
* Fix: Report charts could group orders by date incorrectly when dates spanned a change in Daylight Savings.
* Fix: In some cases, the customer database table was not getting the updates needed.
* Fix: An additional security check has been added to the system info file download form.
* Fix: The ajax spinner could be duplicated on the checkout screen for stores which collect taxes.
* Fix: Stores with quantities enabled could experience unexpected behavior on checkout.
* Fix - Stripe: Support links have been updated.
* Fix - Blocks: Some themes/plugins caused the checkout forms script to not be enqueued.
* Dev: The new minimum WordPress version is 5.4.
* Dev: The new minimum PHP version is 7.1.
* Dev: The `edd_sanitize_amount` function has been updated for PHP8 compatibility.
* Dev: Notifications are now registered as an EDD component.
* Dev: Notifications can now be registered locally.
* Dev: Additional debugging has been added if a legacy payment cannot be migrated due to invalid payment metadata.
* Dev: The discounts HTML is now always filterable, even if there are no discounts applied.
* Dev: Code for the legacy WordPress media loader has been removed.

= 3.1.0.6, February 9, 2023 =
* Improvement: The PayPal Backup IPN now sends the payment date when handling a renewal from Recurring Payments.
* Improvement: Further improve the AJAX download search.
* Fix: Improved reliability with the PayPal API.
* Fix: Some plugins could conflict with the login URL filter to customize the login page.
* Fix: It is now possible to deselect a page in the settings after it's been set.
* Fix: All documentation links have been updated to use the new locations.
* Fix: Some passwords could not be validated when using the login form on the checkout page.
* Fix: The orders export did not allow only orders with a specific status to be exported.

= 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.

== Upgrade Notice ==
IMPORTANT: Upgrading from Easy Digital Downloads 2.9.x to 3.0+ is a major release that includes many improvements and changes. You will be asked to perform database maintenance once installed. Please ensure you make a backup of your site prior to upgrading. Your site should remain functional during this maintenance, but as with all updates, it is best to make a backup of your site prior to updating.
