=== Payment Plugins for PayPal WooCommerce ===
Contributors: mr.clayton
Tags: paypal, paylater, venmo, credit cards
Requires at least: 4.7
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 2.0.14
Copyright: Payment Plugins
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

== Description ==
Developed exclusively between Payment Plugins and PayPal, PayPal for WooCommerce integrates with PayPal's newest API's.
To boost conversion rates, you can offer PayPal, Pay Later, Venmo, or credit cards on your site. There are many supported features so
merchants can configure the plugin to suit their business needs.

In order to process payments online, you will need a PayPal Business Account.

= Supports =
- Fastlane
- Advanced Credit and Debit Card Payments (ACDC)
- Apple Pay
- Google Pay
- WooCommerce Subscriptions
- WooCommerce Pre-Orders
- WooCommerce Blocks
- WooFunnels AeroCheckout and Upsell
- Integrates with [Payment Plugins for Stripe WooCommerce](https://wordpress.org/plugins/woo-stripe-payment/)
- [CheckoutWC](https://www.checkoutwc.com/payment-plugins-paypal-woocommerce/)

= Payment Plugins is an official PayPal Partner =

== Screenshots ==
1. Offer payment buttons and display Pay Later messaging on product pages
2. Offer payment buttons and display Pay Later messaging on the cart page
3. Customize the checkout page button location
4. Customize the checkout page button location
5. Express payment buttons on the checkout page
6. Easily connect your PayPal account to your WooCommerce store
7. Lots of options for customizing the Pay Later messaging

== Frequently Asked Questions ==
= How do I test the plugin? =
The plugin has a sandbox option, where you can test payments. Our documentation shows you how to setup a Sandbox account.
[Documentation](https://paymentplugins.com/documentation/paypal/testing/create-sandbox-accounts)

= How do I connect my PayPal account? =
Our documentation has a step-by-step guide on how to connect the plugin to your PayPal account. [Documentation](https://paymentplugins.com/documentation/paypal/getting-started/connect-account)

= Who is Payment Plugins =
Payment Plugins is the team behind several of the highest reviewed and installed Payment integrations for WooCommerce.

== Changelog ==
= 2.0.14 - 04/10/26 =
* Updated - WP 7.0
* Fixed - Added authorization check to the admin webhook registration REST endpoint per security best practices.
* Fixed - If billing agreements are being used instead of Vault option, billing agreement ID was not being saved on Funnelkit upsell page if a subscription product was part of the upsell.
= 2.0.13 - 03/30/26 =
* Updated - Improved logic for handling 3DS authentication if required during Funnelkit upsell
= 2.0.12 - 03/20/26 =
* Updated - Improved handling of Apple Pay redacted postal code for “GB” and “CA” country codes when shipping zones contain wildcards. Example - NR34*, ME12*, etc
* Updated - WooCommerce tested up to: 10.6
* Fixed - Fastlane was not active on the checkout page in some scenarios due to a mismatched domain
= 2.0.11 - 02/25/26 =
* Added - New payment method format options for Apple Pay and Google Pay
* Fixed - OR_BIBED_15 error triggered by Google Pay on Safari browser
* Fixed - PHP exception in WebhookEventReceiver which could be triggered during webhook
* Updated - Improved product add on integration when express payment methods enabled on the product page
= 2.0.10 - 02/05/26 =
* Updated - WooCommerce tested up to: 10.5
* Updated - Account for exchange rate when adding the PayPal fee and net amount to the WooCommerce order during capture of authorized payment
* Updated - Moved the OrderStatusController class into the PaymentPlugins\WooCommerce\PPCP\Orders namespace
* Added - If an order is authorized, the transaction link will point to the authorization in the PayPal dashboard.
* Added - Full list of shipping carriers supported by PayPal on the Add Tracking section.
* Fixed - In some cases the incorrect payment_method ID was passed to the shipping calculation due to 3rd party plugins resulting in a notice that said the shop did not ship to the selected address.
= 2.0.9 - 01/12/26 =
* Fixed - Issue with WooCommerce Subscriptions and the PayPal gateway if the "Stripe Express Buttons" option is enabled. This bug was introduced in version 2.0.6. [https://wordpress.org/support/topic/issue-with-subscription-renewals/](https://wordpress.org/support/topic/issue-with-subscription-renewals/)
= 2.0.8 - 01/08/26 =
* Fixed - [https://wordpress.org/support/topic/funnelkit-upsells-on-credit-card-gateway-not-working-after-2-0-6/](https://wordpress.org/support/topic/funnelkit-upsells-on-credit-card-gateway-not-working-after-2-0-6/)
* Added - Apple Pay and Google Pay support for Funnelkit's smart button express checkout section of checkout shortcode
* Added - Apple Pay enabled/disabled option on Edit Product page. This way Apple Pay can be enabled/disabled per product like Google Pay and PayPal.
= 2.0.7 - 12/30/25 =
* Fixed - Javascript error in the Mondial Relay integration
= 2.0.6 - 12/22/25 =
* Updated - When registering support for WooCommerce Subscriptions, don't rely on a filter. Some 3rd party plugins initialize the WooCommerce Payment Gateways before the "woocommerce_init" function which
is what we previously relied on to register support for WooCommerce Subscriptions. [https://wordpress.org/support/topic/serious-issue-with-woocommerce-subscriptions-after-update-to-2-0-5/](https://wordpress.org/support/topic/serious-issue-with-woocommerce-subscriptions-after-update-to-2-0-5/)
= 2.0.5 - 12/19/25 =
* Fixed - Express section on cart and checkout page was not showing if only PayPal enabled and using the legacy checkout
* Added - Improved the domain association file setting description. It now explains that the domain registration must be completed manually and links to the setup guide.
[https://wordpress.org/support/topic/apple-pay-validation-error-3/](https://wordpress.org/support/topic/apple-pay-validation-error-3/)
* Added - Improved error message text when Apple Pay validation fails because domain registration has not been completed.
* Added - When Google Pay payment is canceled on product page, make sure the item is removed from the cart. This is how Apple Pay and PayPal work.
= 2.0.4 - 12/18/25 =
* Added - Apple Pay integration
* Added - Apple Pay support for Funnelkit Upsells
* Added - Apple Pay upsell support for CheckoutWC
* Added - Apple Pay support for WooCommerce Subscriptions
= 2.0.3 - 12/05/25 =
* Added - Upsell supports for new CheckoutWC feature
* Added - Button height option for Google Pay
* Updated - WordPress tested up to 6.9
* Updated - Reduced payment processing time on checkout page
= 2.0.2 - 11/22/25 =
* Fixed - Button height slider was not working on PayPal Settings page for some sites
* Fixed - Make sure re-ordering of PayPal buttons enables the Save button on PayPal Settings page
* Fixed - PHP error triggered during subscription change payment method request
* Updated - Placeholder buttons are now displayed in the PayPal Settings preview for ineligible buttons (e.g., PayLater with geolocation restrictions), enabling administrators to reorder all buttons regardless of eligibility status.
[https://wordpress.org/support/topic/cannot-sort-pay-later-button/](https://wordpress.org/support/topic/cannot-sort-pay-later-button/)
* Added - Additional debugging when processing a subscription renewal payment
= 2.0.1 - 11/18/25 =
* Added - Using the checkout shortcode, PayPal or Google Pay can be enabled in the express checkout section and/or the payment method section. For example, if you only want to offer Google Pay as an express checkout option
you can now do that.
* Updated - Verify that terms and conditions checkbox is visible before validating. Some shops have hidden terms and conditions checkboxes. [https://wordpress.org/support/topic/proceeding-cannot-be-finished-checkbox-missing/](https://wordpress.org/support/topic/proceeding-cannot-be-finished-checkbox-missing/)
* Fixed - OR_BIBED_11 Google Pay error on cart and checkout block
* Fixed - Resolved "Expected an order id to be passed" error on product page when legacy scripts are enabled.
* Fixed - Validation message for Google Pay button was showing "Please click PayPal button before placing your order."
* Fixed - PayPal card button not showing on checkout page when enabled.
= 2.0.0 - 11/15/25 =
* Added - Google Pay integration. Settings are located via the "PayPal Google Pay Settings" page. /wp-admin/admin.php?page=wc-settings&tab=checkout&section=ppcp_googlepay
* Added - Option on WordPress Admin > Products page where product level PayPal options can be removed in bulk.
* Updated - Modified templates/checkout/credit-card.php. wc-ppcp-card-payment-method__container" renamed to wc-ppcp_card-payment-method__container"
* Updated - Javascript events like "foundVariation" converted to use camel case so "found_variation".
* Updated - JS event wc_ppcp_button_created renamed to wc_ppcp_payment_element_ready.
* Updated - Add validation for payment_method property in case invalid payment gateway ID is used. [https://wordpress.org/support/topic/fatal-errors-113/](https://wordpress.org/support/topic/fatal-errors-113/)
* Updated - Improvements to Elementor widgets and overall support for Elementor.
* Updated - Ensure order attribution data is captured when express payment buttons used on product and cart page.
* Updated - Reduced average Javascript file size by 40% for improved load performance
* Updated - Moved 3DS settings from Credit Card Settings page to Advanced Settings page.
= 1.1.15 - 11/04/25 =
* Updated - WooCommerce tested up to: 10.3
* Updated - When express payment is made on product and cart page, ensure attribution data is included in the request.
* Added - Action wc_ppcp_before_cart_payment_methods to the templates/cart/payment-methods.php file
* Added - Action wc_ppcp_before_product_payment_methods to the templates/product/payment-methods.php file
* Next Release - Support for Google Pay
= 1.1.14 - 10/01/25 =
* Added - [Immediate Payment Only](https://paymentplugins.com/documentation/paypal/paypal-settings/#immediate-payment-only) option which allows merchants to disable eChecks or any payment method that doesn't settle immediately.
* Updated - WooCommerce tested up to: 10.2
* Updated - Improved error handling when "Validate Checkout Fields" option is enabled. The "woocommerce-invalid" class is now added to invalid fields. [https://wordpress.org/support/topic/checkout-errors-scroll/](https://wordpress.org/support/topic/checkout-errors-scroll/)
= 1.1.13 - 09/13/25 =
* Fixed - Issue on cart and checkout block if "Vault" option was not enabled in the Advanced Settings page. This triggered a "rest_invalid_param" error for PayPal in express checkout.
= 1.1.12 - 09/09/25 =
* Updated - Improved how the plugin handles the PAYER_ACTION_REQUIRED status on PayPal orders.
* Updated - If a product amount is negative, move that to the discount. Some plugins treat discounts as a product and PayPal's API doesn't allow negative product amounts. [https://wordpress.org/support/topic/not-compatible-with-the-wpc-product-bundles-for-woocommerce-plugin/](https://wordpress.org/support/topic/not-compatible-with-the-wpc-product-bundles-for-woocommerce-plugin/)
* Updated - Improved compatability with Funnelkit upsell when payment is processed via redirect to PayPal payment page.
= 1.1.11 - 08/28/25 =
* Fixed - Incompatibility notice that was showing on block editor under certain conditions. The PayPal plugin has supported the cart and checkout block for several years.
* Updated - On checkout block, show a loading mask when the Fastlane Checkout button is clicked.
* Updated - Changed documentation url links so they point to the new documentation site: [PayPal Documentation](https://paymentplugins.com/documentation/paypal/)
* Updated - WooCommerce tested up to: 10.1
= 1.1.10 - 07/23/25 =
* Fixed - On checkout block, don't show description UI for PayPal express checkout button
* Updated - Changed how the validation logic works when "Validate Checkout Fields" is enabled. This change should make the plugin more
compatible with a larger number of plugins that rely on core WooCommerce checkout validation and the action "woocommerce_after_checkout_validation".
* Added - Merchants now have 3 options for the PayPal icon on the checkout page which renders next to the payment method title.
= 1.1.9 - 07/18/29 =
* Added - Option "Fastlane Icon Enabled" on the Credit Card Settings so merchants can turn on/off the Fastlane icon that renders below the email field on the checkout page.
* Added - The Cardholder Name field can now be set to optional or required.
* Added - Filter wc_ppcp_blocks_add_payment_method_data so data used by cart and checkout block can be customized
* Updated - WooCommerce tested up to: 10.0
= 1.1.8 - 07/04/25 =
* Updated - Added check for existence of recipient name for shipping address on legacy billing agreements due to bug in PayPal's API. [https://wordpress.org/support/topic/error-for-the-paypal-subscription/](https://wordpress.org/support/topic/error-for-the-paypal-subscription/)
* Added - Validation on checkout block if place order button is clicked before PayPal button
= 1.1.7 - 06/11/25 =
* Updated - Cast shipping rate cost to float to ensure there are no PHP operand errors with WooCommerce 9.3.3.
= 1.1.6 - 06/09/25 =
* Added - Order note when 3DS authentication fails. The note provides a human readable description for the admin.
* Fixed - Javascript error on API Settings page which interfered with Connect process. [https://wordpress.org/support/topic/re-connect-with-paypal-not-possible/](https://wordpress.org/support/topic/re-connect-with-paypal-not-possible/)
= 1.1.5 - 06/06/25 =
* Added - Merchants can now configure 3DS settings to automatically accept or reject payments based on liability shift, enrollment status, and authentication results.
* Added - Notice on the checkout page which displays if advanced card processing is unavailable.
= 1.1.4 - 05/14/25 =
* Updated - [https://wordpress.org/support/topic/refund-button-gone/](https://wordpress.org/support/topic/refund-button-gone/)
* Updated - When Locale Setting is set to Site Language, explicitly set the locale on the application context
* Fixed - When "Use place order button" enabled and billing agreement created, possible redirect loop
= 1.1.3 - 05/09/25 =
* Added - Credit Card gateway now supports FunnelKit Upsells. The FunnelKit team will be providing a necessary update in their next release which will make the Credit Card gateway available for upsells.
* Fixed - Some merchants reported the PayPal button was unresponsive when a subscription product was in the cart. This was due to some 3rd party plugins loading gateways before the WooCommerce filter "woocommerce_payment_gateways" is triggered. This change ensures the gateways are setup regardless of load sequence.
* Fixed - FunnelKit express checkout button issue resolved. Button was unresponsive if subscription product was in cart and an upsell funnel was triggered.
* Updated - Made improvements to credit card UX when CVV field is invalid
= 1.1.2 - 05/07/25 =
* Fixed - Issue with new credit card gateway where declined cards where being treated as a successful payment.
* Added - Compatibility between the cart and checkout block with the new Admin Only Mode option. This option allows admins to hide PayPal payment methods from customers so they can perform testing on a live site.
* Updated - Only show saved payment method for the environment that's enabled. For example, if sandbox mode is enabled, only show sandbox payment methods.
= 1.1.1 - 05/06/25 =
* Added - Option to enable Admin Only Mode so that PayPal is only visible to admin users on the frontend. This allows admins to test PayPal in sandbox mode on live sites and customers won't see PayPal as a payment option.
* Updated - Expire Fastlane client token if environment changed
* Updated - Add function_exists check when using function wcs_is_manual_renewal_required. The function exists check must be used because there are subscription plugins that exist
that are copies of the WooCommerce Subscriptions plugin, but those copies don't define all the same functions. [https://wordpress.org/support/topic/cart-page-fatal-error-since-version-1-1-0/](https://wordpress.org/support/topic/cart-page-fatal-error-since-version-1-1-0/)
* Updated - Improved utf-8 checks for product names to prevent json_encode errors
* Fixed - PayLater messaging not showing on product page. [https://wordpress.org/support/topic/paylater-messaging-no-longer-showing-after-latest-update/](https://wordpress.org/support/topic/paylater-messaging-no-longer-showing-after-latest-update/)
* Fixed - Card save checkbox on pay for order page was not working
* Fixed - Don't show the Fastlane signup link on Add Payment Method page
= 1.1.0 - 05/03/25 =
* Added - Advanced Credit and Debit Card Payments (ACDC) is now supported. Settings can be accessed via the PayPal Card Settings page within the PayPal plugin. If you encounter any permissions issues,
we recommend reconnecting via the API Settings page to ensure all permissions are applied to the PayPal account connection.
* Added - Fastlane By PayPal integration. It can be enabled on the new PayPal Card Settings page.
* Added - Manual renewals now supported for WooCommerce Subscriptions
* Added - The dispute created webhook is now optional and the order status assigned when a dispute is opened can be configured.
= 1.0.55 - 02/11/24 =
* Fixed - Tagline option not working for PayPal buttons on checkout block
* Fixed - PayLater messaging not showing on checkout block
* Added - action "wc_ppcp_cart_order_created". This action is triggered when a PayPal order is created by clicking the PayPal smartbutton.
= 1.0.54 - 12/31/24 =
* Added - Logging if the add to cart call fails on the product page
* Added - Improved error message if add to cart fails on product page
* Updated - Do not create a refund object if an authorized payment is voided. [https://wordpress.org/support/topic/marking-refunds-for-canceled-orders/](https://wordpress.org/support/topic/marking-refunds-for-canceled-orders/)
= 1.0.53 - 11/02/24 =
* Fixed - German translation of text "Below checkout button"
* Updated - Cast cart quantities to float since some plugins modify cart quantity to support decimal values
* Updated - Normalize province values to their two character abbreviation. Example: Salamanca = SA
= 1.0.52 - 09/10/24 =
* Added - If product variation is not in stock, disable the PayPal buttons on the product page.
= 1.0.51 - 08/07/24 =
* Fixed - Error on support page caused by deprecated WooCommerce API.
= 1.0.50 - 07/16/24 =
* Added - WordPress 6.6 compatibility
= 1.0.49 - 07/10/24 =
* Fixed - PayPal button still showing if side-cart emptied. [https://wordpress.org/support/topic/paypal-button-in-empty-minicart/](https://wordpress.org/support/topic/paypal-button-in-empty-minicart/)
= 1.0.48 - 06/08/24 =
* Added - ca_CA and fr_FR translation files added
* Fixed - Notice "Your order can't be shipped to this address." when paying as a guest with card and address hadn't been fully filled out. Notice will only show once address has been
completely filled out by the customer and the store doesn't ship to that location.
* Added - VAULT permission to connection process. If you have switched to this plugin from a PayPal plugin that used VAULT, you can disconnect and re-connect and that permission will be added. That
allows this plugin to make API requests to PayPal's vault API.
= 1.0.47 - 04/30/24 =
* Added - Integration with [Advanced Product Fields (Product Addons) for WooCommerce](https://wordpress.org/plugins/advanced-product-fields-for-woocommerce/)
= 1.0.46 - 03/18/24 =
* Fixed - Order status not being updated to processing/completed when PayPal sends payment.capture.completed event
for payments under review. [https://wordpress.org/support/topic/status-never-changed-from-on-hold-to-processing/](https://wordpress.org/support/topic/status-never-changed-from-on-hold-to-processing/)
* Added - Additional shipping address validations
= 1.0.45 - 02/29/24 =
* Updated - PHP 8.2 notice showing if debug log enabled
* Added - Improvements to Checkout Block UI integration
= 1.0.44 - 02/16/24 =
* Updated - In WebhookReceiver, for event PAYMENT.CAPTURE.COMPLETED, don't rely on WC_Order::is_paid() function. Instead, check for existence of transaction ID.
= 1.0.43 - 02/05/24 =
* Updated - On checkout block, don't override email address if it's already populated and express checkout isn't being used
* Fixed - If PayPal button was configured to render in payment method section, and PayLater messaging enabled with "Above PayPal button" set, button was not rendering
= 1.0.42 - 01/11/24 =
* Updated - references to Woofunnels changed to Funnelkit
* Fixed - PayLater message color option fixed for checkout page
= 1.0.41 - 12/19/23 =
* Added - Filter "wc_ppcp_refund_factory_from_order_refund" so refund object can be customized before its processed by PayPal API.
* Added - Debug options so merchants can control the level of debugging that's enabled
* Updated - Replaced deprecated filters used in Checkout and Cart block
= 1.0.40 - 11/23/23 =
* Added - German translation file added. [Support thread](https://wordpress.org/support/topic/german-translation-168/)
* Updated - Performance improvements on checkout page when processing a payment.
* Fixed - Prevent duplicate Pay Later message on checkout page.
* Fixed - Unsupported regular expression for older versions of Safari.
* Fixed - FunnelKit upsell order issue introduced in recent version of FunnelKit
= 1.0.39 - 10/3/23 =
* Added - When validate required fields option is enabled, validate Germanized checkboxes.
* Added - Ensure PayPal button is disabled on product page if variation isn't selected.
* Added - Support for [WooCommerce Product Add-ons](https://woocommerce.com/products/product-add-ons/) plugin. Product addons are now accounted for on the product page when using PayPal as an express payment option.
= 1.0.38 - 9/17/23 =
* Added - New feature where the Place Order button on checkout page can be used for PayPal rather than the PayPal buttons. This is a good option
for those that want the best page load speed or for German based merchants that have requirements around button location and text.
* Added - Support for automatic tracking updates in PayPal via WooCommerce - ShipStation Integration plugin. When Shipstation
updates the tracking number on the order, the PayPal plugin will send that info to PayPal.
* Fixed - Add company field to list of validated fields when Validate Checkout Fields option is enabled
* Updated - Improved support for formal locales like de_DE_formal etc
* Updated - If address validation is enabled in Advanced Settings page, display all required fields that failed validation on checkout page rather than the first failed validation.
= 1.0.37 - 8/30/23 =
* Added - Advanced Settings option where merchants can enable/disable the PayPal change shipping address option. If enabled, the customer cannot change
the shipping address in the PayPal popup.
* Updated - Improved logic for rendering express buttons on product pages rendered by the product_page shortcode
= 1.0.36 - 8/4/23 =
* Added - Filter wc_ppcp_checkout_field_validation_label so the validation text can be modified
* Added - Filter wc_ppcp_is_product_section_disabled so display of payment buttons on product page can be conditionally controlled.
* Added - Filter wc_ppcp_get_shipping_carriers
= 1.0.35 - 7/20/23 =
* Added - Scope TRACKING_SHIPMENT_READWRITE to connection parameters so tracking API can be used. Merchants will need to re-connect via the API settings page if they want this feature.
* Added - Support for WooCommerce Extra Product Options plugin. Extra product options are now accounted for on the product page when using PayPal as an express payment option.
= 1.0.34 - 6/22/23 =
* Fixed - Show correct error message when PayPal account doesn't have reference transactions enabled.
* Updated - Handle scenario where payment already captured.
= 1.0.33 - 6/6/23 =
* Updated - Germanized plugin no longer triggers change event when terms checkbox is changed. Had to adjust code to account for this scenario
and any other plugins that alter the standard WooCommerce checkbox behavior.
= 1.0.32 - 6/2/23 =
* Updated - Added margin-top to PayPal button in FunnelKit Cart
* Fixed - Null exception when processing a subscription with a free trial.
* Fixed - Don't update customer address info on cart page if PayPal button clicked to ensure the shipping option remains the same
= 1.0.31 - 5/23/23 =
* Fixed - Handle case where the order requires additional approval before it can be processed
* Fixed - Add Billing Agreement and Payer ID to subscriptions created via FunnelKit Upsell
* Added - action wc_ppcp_validate_checkout_fields so 3rd party code can add custom validations when the PayPal button is clicked on the checkout page
* Added - Support for the FunnelKit Cart plugin
= 1.0.30 - 4/19/23 =
* Fixed - PayLater Elementor widget triggering Elementor editor error under certain conditions
* Updated - Improved checkout page validation logic
* Updated - Prevent "undefined" value being assigned to order address fields that have been removed using via filter woocommerce_checkout_fields
= 1.0.29 - 4/14/23 =
* Fixed - throw Exception statement which needed to be changed for PHP version less than 7.5
= 1.0.28 - 4/14/23 =
* Added - Elementor Payment buttons widget
* Added - Elementor PayLater messaging widget
* Added - Shortcodes ppcp_product_buttons, ppcp_cart_buttons, ppcp_product_message, & ppcp_cart_message which can be used to render the PayPal payment buttons and PayLater messaging
* Added - Advanced Setting option where merchants can enable/disable checkout page field validation when the PayPal button is clicked
= 1.0.27 - 4/4/23 =
* Added - Option to control the Pay Later messaging location on product pages
* Added - PAYMENT.CAPTURE.DENIED event added
* Updated - If capture status is pending due to review or eCheck, set order status to on-hold
= 1.0.26 - 3/20/23 =
* Updated - Added additional validations for the address country code property
* Fixed - JS error in paypal-express-checkout.js under certain conditions
* Fixed - WooCommerce Blocks change which affected billing and shipping address field population
= 1.0.25 - 3/10/23 =
* Fixed - FunnelKit upsell error if upsell quantity greater than one
* Added - Added events when PayPal button is clicked or payment popup is closed/cancelled. This allows 3rd party plugins
to listen for these events
= 1.0.24 - 3/3/23 =
* Fixed - Bulk actions on order status correctly captures payments for all selected orders
* Added - Ability to add tracking info to the PayPal transaction via the order details page
= 1.0.23 - 2/20/23 =
* Added - Limit SKU number to 127 characters
* Added - Product descriptions to PayPal line items
* Fixed - Error triggered when fee added to PayPal line items
* Updated - Removed GuzzleHttp dependency. Lots of 3rd party plugins have Guzzle as a dependency and it's usually outdated so removed Guzzle to prevent any version conflicts
= 1.0.22 - 2/18/23 =
* Fixed - If refund on cancel option enabled, perform the refund for captured payments and a void for authorized payments
* Added - Include product SKU in line items so they appear on shipping label
= 1.0.21 - 2/3/23 =
* Fixed - Payment method format always using the default option
* Fixed - Don't render Pay Later html container on shop page if disabled
* Fixed - Only enqueue paylater-message-checkout.js if enabled
= 1.0.20 - 1/27/23 =
* Added - Optimized classmap which improves plugin performance
* Added - Improved logic for rendering PayPal buttons with non-standard themes
* Fixed - JS error on product page if only PayPal and Card funding options are enabled
= 1.0.19 - 1/10/23 =
* Added - Option to show Pay Later messaging on the shop/product category page
* Added - Option for hiding or displaying the popup icon that appears in the payment method section of the checkout page.
* Added - WooCommerce Checkout Block validation notice if customer clicks Place Order button before clicking PayPal button.
* Fixed - WooCommerce Blocks error when local pickup shipping selected
= 1.0.18 - 12/24/22 =
* Added - PayPal fee to FunnelKit Upsell orders
* Added - Error message for invalid currency
* Updated - If billing name or email is populated on checkout page, don't override those values when using a billing agreement.
= 1.0.17 - 12/9/22 =
* Added - Improved compatibility with Mondial Relay
* Added - Show error message if incorrect client ID has been entered in API Settings page
* Fixed - If Stripe Express section is enabled, ensure PayPal buttons have necessary css classes added
= 1.0.16 - 11/23/22 =
* Fixed - Inaccurate coupon calculation if option "Display prices in the shop" set to including tax.
* Fixed - Update queries that include transaction property to be compatible across all WooCommerce versions
* Fixed - Prevent item total mismatch error if items total exceeds breakdown item total due to PayPal decimal limitation
= 1.0.15 - 11/18/22 =
* Fixed - Patch entire purchase unit rather than individual properties. This ensures certain tax calculations and shipping configurations are always accurate.
= 1.0.14 - 11/17/22 =
* Updated - Include Purchase Unit amount in patch request made during checkout.
* Added - Reference transactions are now optional with FunnelKit/WooFunnels Upsells.
= 1.0.13 - 11/11/22 =
* Added - Dispute created and resolved webhooks.
* Added - Site locale option in the Advanced Settings tab. The plugin can use the site's locale or default to PayPal's auto detection.
* Added - Factory filters so PayPal order and purchase units can be modified
= 1.0.12 - 10.12.22 =
* Updated - Improved messaging when reference transactions aren't enabled on the Merchant PayPal business account
* Updated - Improved Express Checkout buttons compatibility with currency plugins
* Added - Support for the new WooCommerce custom order tables (HPOS)
* Added - Capture On Status option which allows merchants to capture an authorized order on either the processing or completed status. Setting can be set to manual as well
* Fixed - Don't override shipping label first and last name with billing name
= 1.0.11 - 10.1.22 =
* Fixed - WooFunnels Upsell refund not processing
* Fixed - WooFunnels Upsell amount not always accurate
* Fixed - For currencies with no decimal points, adjust rounding to prevent decimals
= 1.0.10 - 9/23/22 =
* Updated - Use refund ID instead of order ID when processing refund.
* Updated - Don't override the shipping address first, last name if already populated on checkout page
* Fixed - WooFunnels One Click upsell, upsell not being triggered
= 1.0.9 - 9/14/22 =
* Fixed - Restrict item name length to 127 characters to prevent invalid schema error
* Updated - WC tested up to: 6.9
* Updated - Improved WooCommerce Blocks UI
= 1.0.8 - 9/12/22 =
* Updated - Improved billing address validations
* Updated - Only fill the billing email address field with the paypal email address if the field is blank
* Fixed - Compatibility with WooCommerce PayPal Payments recurring payments
* Added - Option to disable the credit card button tagline
= 1.0.7 - 8/29/22 =
* Updated - Improved Payer address validation for digital products
= 1.0.6 - 8/8/22 =
* Updated - WC tested up to: 6.8
* Added - Better compatability with the WooCommerce Checkout Add-Ons plugin
* Added - Better compatability with the WooCommerce Advanced Shipping Packages plugin
= 1.0.5 =
* Added - Compatibility with the [WooCommerce PayPal Checkout Gateway](https://wordpress.org/plugins/woocommerce-gateway-paypal-express-checkout/)
 plugin to ensure subscriptions process automatically and seamlessly when merchants switch.
* Added - Compatibility with the WooCommerce PayPal AngellEYE plugin to ensure subscriptions process automatically and seamlessly when merchants switch
= 1.0.4 - 7/21/22 =
* Fixed - CheckoutWC discounted order bump error
* Updated - WC tested up to: 6.7
* Added - Populate shipping_phone value if it exists and PayPal provides customer's phone number
= 1.0.3 - 6/27/22 =
* Fixed - PayLater messaging if option "Display prices in the shop" is enabled.
* Added - PayPal option in the CheckoutBlock payment gateways section and in the Express section
* Updated - Improved autofill logic for billing and shipping address
* Updated - WC tested up to: 6.6
= 1.0.2 - 5/20/22 =
* Fixed - Malformed request error during order creation if Payer's billing address is not valid
= 1.0.1 - 5/11/22 =
* Updated - Deactivation modal on Admin plugins page
* Updated - Improved error handling for PayPal script params.
= 1.0.0 - 5/4/22 =
* Initial release