=== Easy Digital Downloads – eCommerce Payments and Subscriptions made easy ===
Author URI: https://easydigitaldownloads.com
Plugin URI: https://easydigitaldownloads.com
Contributors: easydigitaldownloads, am, cklosows, littlerchicken, achchu93, smub, chriscct7, sumobi, johnjamesjacoby
Tags: ecommerce, payments, sell, digital store, stripe
Requires at least: 6.2
Tested up to: 6.8
Requires PHP: 7.4
Stable Tag: 3.5.0
License: GPLv2 or later

The #1 eCommerce plugin to sell digital products & subscriptions. Accept credit card payments with Stripe & PayPal and start your store today.

== Description ==

= eCommerce without limits =

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

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

Within minutes of starting the Setup Wizard, you'll have access to all the features you need to start selling your digital products today, including an integrated shopping cart, flexible payments (like credit cards, PayPal, Apple Pay, and Google Pay), a clean and optimized checkout, customer management, detailed ecommerce reports, secure file storage, discount codes, and more.

> <strong>Easy Digital Downloads Pro</strong><br />
> This plugin is the lite version of the Easy Digital Downloads Pro plugin that comes with all the ecommerce features you will ever need, including subscriptions, custom payment forms, email marketing tools, additional payment processors, and more. [Purchase the best premium WordPress ecommerce solution now!](https://easydigitaldownloads.com/?utm_source=extensions&utm_medium=description_tab&utm_content=extensions&utm_campaign=readme)

[youtube https://www.youtube.com/watch?v=kUEdc8sB3uQ]

= Secure payments with a checkout form =

With 1-Click connections to the most popular payment processors, you'll be selling within minutes, allowing your customers to checkout with ease with the ability to choose from the most popular payment methods in their region of the world. With Stripe and PayPal, your ecommerce store is ready for global payments.

Unlike some eCommerce solutions, all of our official payment integrations securely process payments directly between your store and the payment processor.

> What can I say? Stripe is my go-to payment processor, and without [EDD] I don't know what I would do. Connect EDD to your Stripe account in seconds, and you're done!
> Matt Whiteley - Whiteley Designs

Easy Digital Downloads is a verified member of the [Stripe](https://stripe.com/partners/directory/easy-digital-downloads), PayPal and Square partner programs, so you can process payments with confidence, knowing that EDD meets their strict quality standards.

Support payments globally with the following payment methods, immediately available:

* Credit Card Payments (via Stripe and Square)
* Apple Pay
* Google Pay
* WeChat Pay
* AliPay
* Amazon Pay
* GrabPay
* Bancontact
* EPS
* giropay
* iDEAL
* Przelewy24
* PayPal
* PayPal Credit
* CashApp
* Link by Stripe
* Venmo
* Sofort
* and more!

With our smart payment method integrations, you get access to most of the latest payment methods as soon as they are available, without any code changes or updates.

= Make decisions with powerful reporting =
Unlock the full potential of your digital store with Easy Digital Downloads — the best WordPress ecommerce solution renowned for its powerful reporting features. Dive deep into the heart of your digital business with tools designed not just to give you insights into what is happening in your business now, but also to help you make decisions that will help you grow your business.

With the included date comparison tools, you can monitor trends in your sales, revenue, customers, and other data from one period to another, giving you the insights to make informed decisions and accelerate your growth. Some of the data points you get access to include:

* Customer growth
* Revenue and Sales
* Filtering by product
* Detailed tax reports
* Detailed category and tag reports
* Revenue and Sales by Country
* Revenue and Sales by Payment Method
* Recurring Revenue Reports (Requires Pro)

= Full Easy Digital Downloads Feature List =

* Responsive Checkout Form - With the included Checkout Block, you get a responsive and customizable checkout form that is sure to convert.
* Digital Product Management - Create as many digital products as you want, with no added costs. Create single products, product variations, and product bundles.
* Discount Codes - Run sales and promotions with the built-in discount code management. Set start and expiration dates, product limitations, price limitations, and reward your best customers with custom discount codes.
* eCommerce Reports - Easy Digital Downloads provides the best reporting available in WordPress ecommerce with the included reporting features. You'll get access to valuable insights into the growth of your ecommerce business.
* 1-Click Payments - Go from Install to Selling in a matter of minutes with our official integrations with Stripe, Square, and PayPal.
* Flexible Payment Methods - With the included integrations for Stripe, Square, and PayPal, it's even easier for you to collect payments and sell access to your digital products.
* File Downloads Protection - Your downloadable products are safe with Easy Digital Downloads. When a user purchases your product, we generate a secure and unique link that allows only your customers to download your files from your ecommerce site.
* Email Receipts - The included email receipts are fully customizable to ensure that your brand is represented in your receipts.
* Customer Management - Track your customer lifetime value and purchase history with the included Customer Management system. Quickly access a customer's entire purchase history, add notes, and link to WordPress users.
* Refund and Dispute Handling - With our automated order management tools, EDD ensures that your records are accurate and customers only have access to files when they should.
* Customer Profile Editor - Give your users to their purchase history and profile management with the included blocks.

Extensible, adaptable, and open source -- Easy Digital Downloads is created with designers and developers in mind. With our extensive list of integrations as well as the included hooks and filters, the possibilities are endless.

We've made it even easier, with [1-Click installation of code snippets via WPCode](https://library.wpcode.com/profile/easydigitaldownloads/).

> 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

= Grow revenue by going Pro =

With our Pro plans 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:

* EU VAT Compliance - Easily manage EU VAT compliance. Get automatic rate updates, collect and verify customer VAT numbers, export EU VAT data for compliance, and more.
* Invoices - Create and send beautiful invoices to your customers.
* [Subscriptions](https://easydigitaldownloads.com/downloads/recurring-payments/?utm_source=extension&utm_medium=description_tab&utm_content=recurring-payments&utm_campaign=readme) - Build a sustainable ecommerce business and add recurring revenue to your store by selling subscriptions.
* [Reviews](https://easydigitaldownloads.com/downloads/product-reviews/?utm_source=extension&utm_medium=description_tab&utm_content=reviews&utm_campaign=readme) - What better way promote your digital products than by having your happy customers do it for you! Schedule automatic review requests, show average ratings and rating breakdowns.
* [Content Restriction](https://easydigitaldownloads.com/downloads/content-restriction/?utm_source=extension&utm_medium=description_tab&utm_content=content-restriction&utm_campaign=readme) - Restrict content on your site and only share it with customers who have purchased specific products. Content Restriction is great for membership sites and customer-only information.
* [Software Licenses](https://easydigitaldownloads.com/downloads/software-licensing/?utm_source=extension&utm_medium=description_tab&utm_content=software-licensing&utm_campaign=readme) - Sell activatable license keys for software products, including WordPress Themes/Plugins, desktop software, SaaS solutions, and more.
* [Frontend Submissions](https://easydigitaldownloads.com/downloads/frontend-submissions/?utm_source=extension&utm_medium=description_tab&utm_content=frontend-submissions&utm_campaign=readme) - Build a full-featured vendor marketplace and grow a community of creators.
* [Commissions](https://easydigitaldownloads.com/downloads/commissions/?utm_source=extension&utm_medium=description_tab&utm_content=commissions&utm_campaign=readme) - Pay your vendors with percentage or flat rate commissions when their products are purchased.
* [Free Downloads](https://easydigitaldownloads.com/downloads/free-downloads/?utm_source=extension&utm_medium=description_tab&utm_content=free-downloads&utm_campaign=readme) - Use free products as lead magnets to grow your email list.
* [Recommended Products](https://easydigitaldownloads.com/downloads/recommended-products/?utm_source=extension&utm_medium=description_tab&utm_content=recommended-products&utm_campaign=readme) - Add automatically generated recommendations to your products and checkout experience.

> <strong>&hellip;We've got over 70+ premium features and integrations!</strong>
> These are just a few of the features available to help you optimize your digital store and sell more digital products. View our full list of [premium ecommerce features](https://easydigitaldownloads.com/lite-upgrade/?utm_source=extension&utm_medium=description_tab&utm_content=view-full&utm_campaign=readme).

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

= Looking to change e-Commerce solutions? =

Easy Digital Downloads is the perfect digital e-Commerce alternative to Etsy, Gumroad, WooCommerce, Shopfiy, SureCart, 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](https://wpsimplepay.com/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_content=something-else&utm_term=description), the #1 Stripe Payments Plugin for WordPress.

== Installation ==

1. Activate the plugin
2. Complete the Onboarding Wizard
3. Start selling your first product!
4. For more detailed setup instructions, visit 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.

= What type of products 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.

Easy Digital Downloads also supports selling access to software, services, memberships, and content when you [upgrade to Pro](https://easydigitaldownloads.com/pricing/?utm_source=pricing&utm_medium=faq_tab&utm_content=upgrade-to-pro&utm_campaign=readme).

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

The security of you and your customers' data is very important, so we strongly recommend you have an SSL certificate for your store. [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 you can use the sample-products-import.xml file located in wp-content/plugins/easy-digital-downloads/assets/. 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.

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

== Notes ==

**A Message from our President**

Since 2012, I've been helping build Easy Digital Downloads and making it the best eCommerce solution for digital creators. Now, as the President of the company, my commitment continues to be making Easy Digital Downloads the most effortless way to manage your ecommerce store, handle billing, protect your files, integrate with payment processors, and sell your digital products and services.

I'm proud of what we've built and our world-class customer support team that is here to help you succeed. I hope you enjoy using Easy Digital Downloads.

Thank You,
Chris Klosowski

**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)

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

== Screenshots ==

1. Detailed Reports and Analytics
2. Manage Easy Digital Download Customers
3. History of Payments
4. View and Manage Payment Details
5. Product Grid - Vendd
6. Checkout Form Block - Vendd
7. Product Grid - Default Theme
8. Checkout Form Block - Default Theme

== Changelog ==
= 3.5.0 =
* NEW: Customize the message displayed on checkout when the cart is empty.
* Admin: Improved styles when multiple admin notices are displayed on EDD Settings pages.
* Admin: Improved the performance of detecting if the current admin page is an EDD Admin page.
* Downloads: Improved the reliability of the files drop-down for variable price products.
* Orders: Bypass the order refund window when an order refund is initialized from the gateway.
* Dev: Improved the extensibility of the export classes.
* Dev: Improved the extensibility of the Stats class.
* Dev: Many classes that were namespaced were relocated to take advantage of auto-loading.
* Dev: Registered tax rates were moved out of the adjustments database table into their own tax rates database table.

View the full changelog at [https://easydigitaldownloads.com/changelogs/plugin/easy-digital-downloads/](https://easydigitaldownloads.com/changelogs/plugin/easy-digital-downloads/?utm_medium=readme&utm_source=wporg&utm_campaign=edd-plugin&utm_term=description)

= 3.4.0 =
* NEW! Add Square to supported gateways for one-time payments.
* Downloads: Prevent bundle configurations from breaking the Prices metabox display.
* Emails: Deprecated new user email message filter and moved the email send process to a scheduled cron event.
* i18n: Update terminology to use "Postal/ZIP Code" consistently.
* Reports: Fixed an issue where excluding taxes would result in $0 earnings being displayed.
* Stripe: Allow subscription payment methods to be updated using Payment Elements.
* Templates: Add $args parameter to edd_get_template_part.

= 3.3.9 =
* Blocks: Add support for inner blocks to certain blocks.
* Blocks: Add a hook to the registration block above the submit button.
* Blocks: Update login block behavior for logged in users.
* Checkout: Add `edd_purchase_form_after_email` hook to the Checkout block.
* Dev: Deprecate and update comments filters.
* Dev: Refactor gateway registration logic.
* Dev: Update "Add New" admin button text for WordPress Core consistency.
* Dev: Update wp-scripts version.
* Dev: Register a loader/mini event manager.
* Emails: Register phone tag for use in emails.
* Utilities: Ensure get_date_string() supports seconds.
* Shortcodes: Improve email change handling from the user profile shortcode.
* Payments: Refactor tax rate addition process to use modal interface.
* Payments: Update discount add/edit screens for improved UI.
* Reports: Prevent fatal error when requesting non-existent order IDs through the Sales API.
* Shortcodes: Improved error handling for `edd_receipt` shortcode.
* Stripe: Allow error logging for gateway-related JS errors when using Payment Elements.
* Stripe: Remove non-functional subscription handling from webhook events.
* Stripe: Prevent checkout errors in Card Elements flow.
* Users: Add "Lost password" option to the login form on the Checkout Block.

= 3.3.8.1 =
* Checkout: Compatibility updated for Checkout Fields Manager.
* Dev: Empty legacy files have been replaced for plugins which may manually be loading them in error.

= 3.3.8 =
* Customers: Improved messaging when trying to assign a user's email to their customer account.
* Compatibility: Added EDD's Checkout URI to the list of excluded speculative URLs for WordPress 6.8.
* Downloads: Fixed issue where download details metabox didn't honor store currency.
* Downloads: Price assignment for bundles now correctly displays without requiring a product update.
* Downloads: Resolved issue where Chosen field did not initialize when Bundle is selected for the product type.
* Downloads: Improved handling of download URLs to support the order item object.
* Emails: Fixed a fatal error in sending purchase receipt after store reset.
* PayPal: 100% discount codes now function properly with PayPal.
* Reports: Improved batch export functionality.
* Reports: Updated order export to allow different values and correct formatting.
* Reports: Stats class now avoids ambiguous column queries.
* Settings: Created product grid page automatically on fresh install.
* Stripe: Added logging for Stripe confirmation process.
* Stripe: Corrected issue where dispute ID stored was actually the payment ID.
* Stripe: Improved the loading behavior of the Stripe Connect settings screen.
* Stripe: Fixed issue where test mode warning wasn't showing in the gateways settings screen.
* Stripe: Improved reliability when retrieving connected country in Stripe Connect.
* Stripe: Update the object reference when completing a Stripe order.
* Dev: Rolled back changes to the included EDD Updater to ensure compatibility by unexpected uses.
* Dev: Deprecated functionality impacting namespaced class usage in `EDD_Batch_Export`.

= 3.3.7 =
* Blocks: Fixed undefined index error in checkout block preview.
* Checkout: Improved existing email check for logged-in users during checkout.
* Compatibility: Improved handling of upgrade pages.
* Currency: Fixed Money_Formatter unformat method ensuring `original_amount` is not null before processing.
* Customers: Improve performance of viewing customers in the admin.
* Downloads: Improved file protection handling in some edge case configurations.
* Downloads: Supports feature now listens on 'change' instead of 'click'.
* Downloads: Improved variable price handling.
* Downloads: Improved download title validation before returning via AJAX.
* Emails: Fixed email summary dates not adjusting for the local time zone.
* Emails: Store admins can now search/filter emails and email logs.
* Fees: Order adjustments with titles longer than 100 characters now correctly record fees.
* HTML: `EDD\HTML\Number` input now allows a `0` minimum value.
* i18n: Fixed multiple translation warnings in the new metabox implementation.
* Orders: Orders - Deferred Actions now unschedule or gracefully fail on deleted orders.
* PayPal: Ensure that `straight to gateway` is only enabled for supported PayPal gateways.
* PayPal: Removed PayPal Commerce IE 11 Polyfills by default, now requiring opt-in.
* Reports: Improved price assignment selection when adding new price variations.
* Settings: Improved admin settings notices.
* Settings: Improved styling for input fields.
* Stripe: Fixed issue where Stripe variables were added to the DOM twice.
* Taxes: Fix an issue preventing saving a global tax rate.
* Dev: Counting with `fields` set fails in Berlin.
* Dev: Generating orders via CLI no longer adds unnecessary order meta.
* Dev: Fixed CLI order handling triggering new deprecation notices.
* Dev: Unit tests updated to remove older versions.
* Dev: Resending a receipt no longer throws a deprecation notice.

= 3.3.6.1 =
* Fixes a formatting issue for stores using European style decimal separators.

= 3.3.6 =
* **Important:** This release requires **WordPress 6.2 or higher**.
* Admin: Prevent UI shifting in the EDD admin pages.
* Blocks: Improved the UI of the Checkout block registration settings.
* Checkout: Improved reliability of guest checkout process.
* Checkout: Improved the detection of existing customer email addresses.
* Customers: Switched to using `Order` objects instead of `EDD_Payment` objects.
* Dev: Added the `edd_empty_cart_message` to the Checkout block.
* Dev: Fixed an issue that could cause hooking into `edd_purchase_form_user_info_fields` to result in a fatal error.
* Dev: Introduced the `edd_order_receipt_before` hook to the receipt block.
* Discounts: Fixed an issue that would prevent min/max values on discounts from being changed to empty values.
* Discounts: Improved the logic of discount code validation to ensure that required products are allowed even if in a prevented category.
* Downloads: Added the ability to copy the block, shortcode, or add to cart links to the clipboard from the Download Edit screen.
* Downloads: Improved the registration and rendering of metaboxes.
* Downloads: Improved the variable pricing UI for the Download Edit screen.
* Downloads: Refreshed and combined Download metaboxes for improved download management.
* Emails: Fixed an issue that could result in the password reset email from the Auto Register extension not being sent.
* HTML: All HTML element classes now run `get_data_elements` to ensure that the data elements are available.
* HTML: Improved search results for Chosen select fields.
* HTML: Introduced the `Number` input field.
* i18n: Fixed an issue resulting in an undefined variable notice in translations.
* Logs: Updated the date column of the Logs to reflect the store timezone (instead of UTC) and improved the formatting.
* Orders: Corrected an issue resulting in the order total being incorrect when combining fees and taxes.
* Pages: Fixed an issue that resulted in 'noindex nofollow' tags being added when no checkout page is set.
* PayPal: Ensure that the merchant status check accounts for all exceptions.
* Reports: Added support for filtering by order status on the Payment Gateways reports.
* Reports: Current Period reports no longer show 'Hour by Hour' when less than two days of the period have passed.
* Reports: Improved the tooltip handling for reports to be more consistent.
* Reports: Separated many charts into individual charts to improve usability and flexibility.
* Reports: The Payment Gateways list table report now filters reports by the selected gateways, instead of linking to a list of orders for the gateway.
* Sessions: Prevent an undefined variable notice.
* Stripe: Added support for TWINT, and Revolut Pay.
* Stripe: Always get mandates for India-based customers/stores.
* Stripe: Fixed an issue that could cause a gateway error if the Payment Method Configuration cannot be retrieved.
* Stripe: Improved compatibility with Zero Decimal Currencies.
* Stripe: Improved performance by switching to using `Order` objects instead of `EDD_Payment` objects.

= 3.3.5.2 =
* Checkout: Fixed a user's first/last name not saving to their WordPress account when registering during checkout.
* Checkout: Fixed purchase data being sent to some gateways which process credit cards from form data.

= 3.3.5.1 =
* Stripe: Fixed issues with displaying and saving Stripe settings.

= 3.3.5 =
* NEW! Added Support for more Stripe Payment Methods, including more wallets, mobile payment methods, and some bank redirects.
* Stripe: Improved accessibility of the checkout form.
* Stripe: Improved compatibility with Stripe with customized checkouts missing form attributes.
* Stripe: Properly handle error messages when trying to create webhooks without HTTPS.
* Stripe: Updated the Stripe PHP library.
* PayPal: Fixed an issue preventing PayPal from fully connecting in test mode.
* PayPal: Improved the messaging around the PayPal settings screen.
* PayPal: Fixed an issue with the date_created on some PayPal Commerce orders.
* WP-REST: Improved integration with the WP-REST API media endpoint.
* Receipt: Improved hash validation when viewing a receipt as a guest.
* Emails: Fixed a possible fatal error with the WP Mail SMTP plugin.
* Emails: The Banned Email list filter is now accessible even when the list is empty.
* Checkout: Improved handling of guest customers.
* Checkout: Prevent an edge case where a warning could be thrown during checkout.
* HTTP: Introduced a standard HTTP Request utility to make consistent HTTP requests.
* Discounts: Prevent a JavaScript error when editing a discount.
* Administration: Vertical navigation elements now support the Back/Forward browser navigation.

= 3.3.4 =
* NEW! Stripe: When connecting EDD to Stripe, the necessary webhooks are registered.
* Cart: Enhanced cookie handling when emptying and re-adding items to cart.
* Checkout: Resolved undefined variable issue when using block registration form.
* Downloads: Improved response header handling to prevent invalid content-length headers.
* Downloads: Resolved inconsistency in author availability for new vs existing downloads.
* Emails: Improved email tag loading for more efficient processing.
* Emails: Removed image insertion capability from password reset email editor.
* Emails: Corrected filter name in new user email for proper functionality.
* Emails: Fixed a fatal error in password reset due to missing parameters.
* Emails: Fixed empty {password_link} email tag for first-time users.
* File System: Consolidate filesystem interactions by normalizing file paths.
* Orders: Improve order total calculations for orders with multiple adjustments.
* Orders: Fixed an issue with resumed orders and date_created values.
* Orders: Deleting an order now deletes the related transactions entry.
* Orders: Implemented safeguard to prevent negative order totals.
* Reports: Fixed PHP notices occurring in certain time zones.
* Sessions: Added new filters for more flexible cookie management.
* Sessions: Added built-in support for Pantheon cookie exclusions.
* Sessions: Added built-in support for WP Engine cookie exclusions.
* Stripe: Improve legacy card elements session compatibility.
* Users: Added a tool to help fix corrupted capabilities that prevent access to EDD settings screens.

= 3.3.3 =
* Reports: Refund tiles for fully refunded items could include partial refunds.
* Sessions: Improve session handling during checkout when logging in a user at the same time.
* Admin: Fixed a display issue when searching for EDD items in list views.
* Emails: Prevent a PHP error related to the Email Summary settings.
* Emails: Improved the Email Summaries reliability.
* Blocks: Fixed an issue on the Checkout block for existing customers without a last name.
* Downloads: Improved the handling of the cart widget markup when adding an item to the cart.
* Downloads: Improved the detection and handling of local files when they are downloaded.
* Settings: Refactored the process of saving settings for consistency.

= 3.3.2 =
* Checkout: Improved session handling with Stripe payments.
* Settings: Improved pass validation that could cause deactivation on certain server configurations.
* Admin: Improve responsiveness of EDD admin menus.
* Sessions: Set default session handling to database on new installs.
* i18n: Ensure that some block strings are able to be translated.

= 3.3.1 =
* Settings: Fixed a PHP warning related to a store's region when managing settings.
* Settings: Ensure that the selected currency option is a registered currency.
* Orders: Fixed an issue resulting in searching for orders not always working.
* Emails: Ensure that email subjects do not contain HTML tags.
* Emails: The Admin Sale Notification wasn't sending to multiple recipients.
* Checkout: Improved checkout page detection compatibility for extensions.
* Onboarding: Improved the onboarding wizard styles and content.

= 3.3.0 =
* Important: This release requires WordPress 6.0 or higher.
* Emails: **NEW** Managing emails is now easier than ever with the new Email Editor. All emails are now visible and managed from Downloads > Emails.
* Emails: **NEW** You can now easily toggle the status of most emails to enable or disable them.
* Emails: **NEW** Email tags have been improved to be more widely available to extensions and are now context aware by email type and recipient.
* Emails: **NEW** You can now send an email to the customer when an order is marked as refunded.
* Emails: **NEW** Added email tags for the refund amount and refund ID.
* Emails: **NEW** You can now see a log of emails sent to customers by EDD in Downloads > Emails > Logs.
* Emails: **NEW** Added a new email tag for the order fees.
* Emails: **NEW** Added the ability to email store owners about the Stripe "Early Fraud Warning" webhook.
* Emails: **NEW** You can now easily restore the default email templates from the editor.
* Emails: More emails are now able to be previewed and tested.
* Emails: Added the ability to edit the New User, Password Reset, and User Verification emails.
* Emails: Email settings have been moved to Downloads > Emails > Settings.
* Sessions: **NEW** The session handling has been rewritten from the ground up to be more reliable and improve performance.
* Sessions: The session storage method can now be changed via a setting in Downloads > Settings > Misc.
* Sessions: Added a custom database table for session storage, when using the database storage method.
* Sessions: Improved the performance and reliability of the session cleanup Cron event.
* Sessions: Improved session handling to only start when necessary, allowing more pages to be cached for guests.
* Extensions: The Disable Purchase Receipts extension is now marked as legacy and will be deactivated, as the functionality is now built into EDD.
* Extensions: The Auto Register extension is now marked as legacy and will be deactivated, as the functionality is now built into EDD.
* Stripe: Improved the handling when a Stripe customer cannot be found.
* Stripe: Added a disconnect button to the Stripe settings if the Stripe account that is connected has been closed.
* Stripe: Improved and implemented fallbacks to reduce failures when processing Stripe payments.
* PayPal: Improved the onboarding process for PayPal to avoid a possible fatal error.
* HTML: The Product Dropdown element has been improved for reliability, search, and performance.
* Migration: Improved the reliability of the EDD 3.0+ migration routine.
* Reports: When the percentage difference was calculated, it was possible for a positive change to show as a negative percentage.
* Cart: In some cases, the Add to Cart button was not redirecting logged-in users to the checkout page.
* Checkout: Improved the handling of the purchase form when showing the login form.
* Checkout: Improved the handling of the address fields when using the Stripe Payment Element.
* Checkout: Improved purchase validation during the checkout process.
* Exports: The Orders Export could sometimes use the product ID as the User ID.
* WPCron: We've refactored how EDD uses WPCron to improve performance and reliability.
* Customers: Improved the validation when removing email addresses from a customer.
* Admin: Many of our 'checkbox' settings have been updated to use the new 'toggle' setting type.
* Admin: Improved the consistency of the EDD Admin Pages.
* i18n: Updated the list of regions for the UK.
* i18n: Added Regions for Benin.
* i18n: We reviewed, updated, and improved a large number of translations with translator comments and context.
* Performance: Improved integration with the Heartbeat API to reduce the number of requests.
* Refunds: Improved the reliability and performance of generating a refund number.

= 3.2.12 =
* Compatibility: Fixed a conflict between Setup Wizard and the Multi Currency extension.
* Stripe: Improved the handling of refunding charges via the Stripe Dashboard.
* Exports: Improved performance, management, and protection of export files generated by EDD.
* Emails: Improved the validation before installing the Recapture integration.

= 3.2.11 =
* Order Management: When searching orders, a Product ID was being erroneously added to the filter arguments when it should not have been.

= 3.2.10 =
* Downloads: Improved performance when creating and managing download directories.
* Discounts: Start and End dates are properly handling the timezone.
* Discounts: Improved the accuracy of the check for if a store has active discounts.
* Discounts: A background upgrade process will be run to ensure all discounts have valid start and end dates.
* Dev: Debug log is now being managed within EDD's upload directory.
* Payments: Improved the detection and handling of purchase sessions when displaying the Receipt and Confirmation pages.
* Performance: Optimized the amount of data stored in the options table related to changelogs.
* HTML: The Product Dropdown could be forced to include items that were not products.
* HTML: The Product Dropdown has had its placeholder value improved.
* HTML: The Product Dropdown could have an unexpected empty option in the list of options.
* HTML: The Textarea HTML field could add empty content to the value.
* Checkout: The Privacy Policy checkbox may not always show when expected.
* Blocks: Improved loading of Easy Digital Downloads blocks.
* Blocks: Improved the handling of Easy Digital Downloads blocks when using a classic theme.
* Orders: Manually creating orders in the admin could fail to save the order due to a capability check.
* Migration: Improved the reliability of the EDD 3.0+ migration routine for possibly corrupt serialized data.
* Migration: Improved PHP 8.0+ compatibility for the EDD 3.0+ migration routine.

= 3.2.9 =
* Stripe: Resending the purchase receipt could fail if including the Stripe statement descriptor in the email template.
* Settings: Improved the reliability of determining the timezone settings in WordPress.
* Reports: When using custom dates for reporting, some timezone settings could make the dates show incorrectly.
* Emails: Adjusted when the deprecation notices will be shown for the legacy email hooks.

= 3.2.8 =
* Stripe: Resolved an issue that could cause card payments to fail when providing a Bank statement description with the `statement_descriptor` parameter.
* Stripe: IMPORTANT! The Statement Description settings in the Stripe gateway settings are no longer editable. The description is now automatically pulled from the Stripe account settings.
* Stripe: Buy Now buttons could throw a PHP deprecation notice.
* API: Added an option to enable logging public API queries (API Requests without a key & token) for the EDD API.
* Downloads: Improved the reliability of the download file access checks.
* Downloads: Searching downloads via the dropdown could return incorrect results.
* PayPal: Improved the reliability of the PayPal Merchant Account Connection process.
* Taxes: Improved the reliability of the tax calculations for orders with multiple items.
* Checkout: The Legend for checkout form elements could display incorrectly in Safari.
* HTML: Introduced a new Toggle Checkbox Class.
* Reports: A fatal error could occur if you supplied an invalid Download ID to the reports URL.
* System: Prevent a fatal error and improve the gathering of site system information.
* Compatibility: Improved checkout compatibility with Wordfence.

= 3.2.7 =
* Admin: Improved validation of saving some settings.
* API: Improved API Key management for admins, including showing the last time a key was used.
* Customers: Prevent updating a customer to have no email address.
* Downloads: Improved the consistency of the results of setting and getting a price option name.
* Downloads: Searching the downloads dropdown was not working correctly for international characters.
* Downloads: Improved download access validation.
* Fees: Improved the reliability of the fees and tax calculations.
* Orders: The Order Status Badge API now includes the order as a parameter on filters.
* Reports: Download Taxonomy reports have been improved for large data sets.
* Reports: Some timezones and date calculations were getting incorrect date ranges.
* Stripe: Improved mixed cart messaging.

= 3.2.6 =
* Checkout: Improved checkout block field handling for guest customers.
* Checkout: Login fields on checkout were incorrectly trying to process the checkout when hitting the 'Enter' key.
* Admin: Better compatibility when loading EDD footer and documentation links for non-store admin pages.
* Admin: Custom EDD admin pages could throw an error if incorrectly filtered.
* Downloads: Improved handling of detecting download variable prices.
* Downloads: Custom product dropdown could incorrectly exclude the download being edited.
* Reports: The store dashboard widget revenue and sales stats sometimes parsed dates with an incorrect offset.
* Reports: Pie charts for revenue currency values were not correctly applying the currency symbol.
* Reports: Improve Export Product Sales accuracy.
* Compatibility: Further improve PHP 8.0+ support.
* Shortcodes: Some shortcode attributes were hardened before being output.
* Orders: Better handling of refunding orders.
* Stripe: Better error messages when some cart contents are not compatible with the Stripe gateway.
* Discounts: Ensure store discounts recorded for orders are unique.

= 3.2.5 =
* Compatibility: Improved compatibility with servers not configured with mbstring.
* PayPal: Improved detection of PayPal order session handling and processing.

= 3.2.4 =
* Compatibility: Adds support for PHP 8.2.
* PayPal: Improve error handling of PayPal API responses.
* REST API: Download terms now have the featured images in the JSON response.
* Checkout: Improved the checkout block login and registration handling.
* Checkout: The legacy shortcode properly handles required fields.
* Emails: Improved sample data for the purchase confirmation preview.
* Refunds: Improved refund status handling and validation.
* Downloads: Bulk editing no longer clears prices.
* Downloads: Improved the ability to filter the ‘supports buy now’ for a download.
* Downloads: Reliability of the file download limits was improved.
* Store: Encourage store owners to set a country to help prepare for upcoming features.
* Privacy: Enhanced the integration with the WordPress Privacy tools.
* Reports: Improved chart sizing to prevent overlap and overflow.
* Dates: Added a polyfill for servers without `mbstring`.
* Support: Made links to support and documentation more accessible.
* Taxes: Corrected an issue with subscription updates when taxes are enabled.
* Registration: Fixed an issue with Recaptcha on the registration form.

= 3.2.3 =
* Blocks: The user registration forms and lost password feature have been updated to allow customization via hooks.
* Stripe: Refunded payments initiated within the Stripe Dashboard now create a refund order in EDD.
* Cart: Improved product validation when adding an item to the cart.
* Emails: Admin payment & order notifications have been updated to allow further customization.
* Block Editor: Improved compatibility with themes and page builders.
* Payments: Ensure that tax rates are accurately stored when using legacy payment creation processes.
* Customers: Improved the performance and accuracy of checking if a user has previously made purchases.

= 3.2.2 =
* PayPal: The IPN Backup for PayPal was fixed to prevent a fatal error.
* PayPal: Improved the Buy Now with PayPal payments to bypass Checkout only when Buy Now is fully supported.
* PayPal: Improved the reliability of the PayPal IPN listener.
* Stripe: Improved the Buy Now with Stripe payments to bypass Checkout only when Buy Now is fully supported by the product.
* Stripe: The State/Region ensures that it is updated when the Country field is changed.
* Emails: Further improved the reliability of payment emails and admin payment notifications.
* Customers: Migrating the customer data from EDD 2.x to EDD 3.x is now more reliable.
* Customers: Existing guest customers can now use the EDD Registration form to create a user.
* Customers: Improved the customer email address detection and reliability.
* Payments: Updated the customer recent payments list to use the correct date format.
* Blocks: Improved the reliability of checkout when EDD Blocks or Gutenberg are disabled.

= 3.2.1 =
* Stripe: We’ve improved the error handling and informational messaging related to the Stripe Payments integration.
* PayPal: When new features are added to the PayPal integration, a background process attempts to register new payment endpoints automatically.
* API: Accessing the file download logs via the EDD API now supports querying by both customer ID and customer email address.

= 3.2.0 =
* Important: This release requires PHP 7.4 or higher and WordPress 5.8 or higher.
* Important: Amazon Pay has been formally deprecated and is no longer available for new installs. Existing stores using Amazon Pay are encouraged to explore other options.
* New: PHP 8.1 is now fully supported.
* New: Discount codes can now be applied to specific price variations.
* New: A discount code can now be set to include or exclude specific download categories.
* New: Store owners can now archive discount codes, to make managing their promotions simpler.
* New: The discount list now has improved visibility for the status and usage of discounts.
* New: A new ‘Service’ product type was added to the Product Type dropdown, to allow for non-downloadable products.
* New: Disputed payments in PayPal and Stripe set the order to a new ‘On Hold’ status, and restrict access to downloads.
* New: When a payment is disputed with PayPal or Stripe, a link to the dispute is added to the view order details in the admin along with order notes.
* New: The date that the completed order actions were run is now stored as part of the order itself, not as metadata, and will be displayed more clearly on the order details screens. Existing meta will be migrated in the background; notifications will be updated to keep store owners advised of progress.
* Improvement: Purchase receipts are now sent using deferred actions, to improve the performance of the payment processing.
* Improvement: The bundle product metabox has been improved for performance on sites with many products.
* Improvement: The query for non-bundled products has been updated to be more performant, specifically when editing a download product.
* Improvement: Improved performance of checkout and customer lookups by conditionally running legacy hooks and filters that contained payment objects.
* Improvement: Site Health and telemetry now check the health of the REST API via a test endpoint.
* Improvement: The application fee for Stripe payments is removed for pass holders who have access to the Stripe Pro extension even if they do not have Stripe Pro installed.
* Improvement: Easy Digital Downloads’ block styles have been updated for non block themes to load only when the block is rendered.
* Improvement: The EDD Products block now allows products to be filtered by author.
* Fix: Stripe Payment Elements no longer supported a theme of ‘none’, and ‘stripe’ has been defaulted.
* Fix: Added hardening around viewing the adjustments list table.
* Fix: To avoid conflicts with other plugins, critical vendor libraries have been moved to the EDD namespace.
* Fix: Regional support for Stripe now checks the Stripe account country before checking the store country.
* Fix: PayPal Commerce orders where not always being completed when using the confirmation page.
* Fix: The Stripe Payment Element now uses the browser’s locale for localization.
* Fix: Using the Import tool could produce a fatal error.
* Fix: Discount codes resulting in a 100% discount could restrict the cart from allowing the user to complete the purchase.
* Fix: Saved carts were not correctly saving for some users.
* Fix: When saving a cart with Stripe as the active gateway, the message stating the cart was saved was removed prematurely.
* Fix: Recalculating a customer’s stats was not always being scheduled correctly.
* Fix: Malformed add to cart URLs could result in a PHP warning being thrown.
* Fix: Flat discount can result in an incorrect rounding total depending on the cart conditions.
* Fix: Viewing the order details of a migrated order that had its discount deleted looked incomplete.
* Fix: It was possible for sites with incompatible MySQL versions to not see the appropriate warnings.
* Fix: Attempting to activate a pass with an empty license key could appear to be stuck.
* Fix: The Stripe JavaScript has been improved to be more efficient, remove only error messages, and only run when the Stripe gateway is selected.
* Fix: Stripe could attempt to update a property that is not supported by the Stripe API.
* Fix: New PayPal Commerce subscriptions might not be correctly marked as complete.
* Fix: EDD Blocks placeholder styles could interfere with WordPress Core placeholders.
* Fix: Additional, not officially supported fee data is now stored as order adjustment metadata.
* Dev: Many filters and hooks that passed EDD_Payment objects now have a complementary hook or filter that uses EDD\Orders\Order objects.
* Dev: Easy Digital Downloads is no longer registering the edd_payment and edd_discount post types.
* Dev: Easy Digital Downloads – Core now holds the Stripe base code, and Stripe Pro 3.0.0 only contains pro features.
* Dev: Code for old, unsupported versions of PHP has been removed.
* Dev: A new edd_after_order_actions hook has been introduced to manage all events which should happen when an order is created. This uses the order object for improved performance and any usage of edd_after_payment_actions should be updated accordingly.
* i18n: 141 Additions, 199 Removals/Location Changes, 17 Differences (counts are approximate).

== Upgrade Notice ==
IMPORTANT: Upgrading from Easy Digital Downloads 2.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.

Easy Digital Downloads 3.0+ was a substantial change to the way that EDD stores data and builds reporting. If you've created any custom integrations for payment processors, file downloads, billing changes, subscriptions, or custom reporting you will want to ensure you test these changes on a staging copy of your site before running the upgrade.
