*** Changelog ***

2026-06-08 - version 10.8.0
* Fix - Add an order note and call action 'wc_stripe_unexpected_charge_detected' when a Stripe charge is captured for an order that was already paid via a different gateway
* Fix - Add empty state mapping for Morocco in express checkout
* Add - Default Optimized Checkout Suite and Adaptive Pricing on for all eligible stores, with in-app notices announcing the change
* Fix - Prevent saved Link, Cash App Pay, SEPA, Amazon Pay and Bacs Direct Debit payment methods from being duplicated when viewing My Account → Payment methods
* Fix - Ensure the save-payment-method checkbox is unchecked when a non-reusable payment method is selected in Optimized Checkout
* Tweak - Drop redundant "Test mode:" label from test payment instructions on Blocks checkout, which already shows a Test Mode badge
* Fix - Resolve console errors shown when editing the Blocks checkout page
* Fix - Ensure the bank statement descriptor is included when creating payment intents for alternative payment methods
* Fix - Prevent Stripe from rendering an unexpected "Address Line 2" field inside the Payment Element
* Update - Ensure payment method restrictions based on account and shopper countries are up to date
* Fix - Store transaction IDs for orders when we get charges to ensure we can refund correctly
* Fix - Recover a missing Stripe charge ID from the order's payment intent so affected orders stay refundable
* Fix - Don't auto-cancel Stripe orders that have already been paid, preventing paid orders left at pending (e.g. by a checkout/webhook race) from being cancelled as unpaid
* Fix - Add an order note when a paid-but-pending Stripe order is kept from being auto-cancelled, so stores can review and reconcile the stuck status
* Fix - Send Klarna's preferred locale in the confirmation token (Optimized Checkout) flow so cross-border customers can complete identity verification
* Fix - Preserve saved card branding when the same card is later used via a wallet, and render multi-word brands (e.g. Cartes Bancaires) correctly
* Add - Show Apple Pay / Google Pay branding on saved card tokens in My Account → Payment Methods and at checkout
* Add - Add a setting to control whether Express Checkout is shown on the WooCommerce Subscriptions change payment method page
* Add - Allow shoppers to change a subscription payment method using Express Checkout (Apple Pay, Google Pay, Link)
* Fix - Prevent Stripe API calls from failing due to DNS resolution issues
* Fix - Improve handling of skipped products and in-flight syncs in Agentic Commerce sync dashboard
* Fix - Make the "Update now" link in the account status tooltip clickable and improve its contrast against the tooltip background
* Dev - Add Jurassic Ninja preview link for PRs to enable one-click browser testing
* Remove - Remove giropay from new checkouts (deprecated by Stripe on 2024-06-30); legacy refund and past-order rendering preserved
* Dev - Exclude AGENTS.md and CLAUDE.md contributor-instruction files from the built plugin zip
* Add - Append a "what's new" changelog link to the Updated! message after manually updating the plugin from the Plugins page
* Fix - Dismissible subscription detached admin notices
* Dev - Skip Agentic Commerce catalog upload when content is unchanged
* Dev - Align Agentic Commerce sync status UI with the WordPress design system
* Add - Add a "Release notes" link to the WooCommerce Stripe row on the Plugins page that opens the changelog modal
* Fix - Add guards against invalid values for webhook state timestamps
* Dev - Refactor docker setup to be worktree friendly
* Fix - Show better message when express checkout preview is not available
* Add - Implement wc_stripe_logger_can_log filter to allow for targeted logging on busy sites
* Dev - Remove redundant `get_retrievable_type()` overrides from payment methods
* Dev - Add Claude Code skills and review rules under .claude/ to capture repo-specific contributor guidance
* Dev - Move some independent classes into autoloader
* Dev - Require explicit visibility for class constants
* Dev - Add payment token classes to autoloader
* Remove - Remove deprecated code up to version 10.2.0
* Dev - Add Jest tests for ECE payment flow
* Fix - Respect the iDEAL/Wero and Bancontact save toggle when Optimized Checkout is enabled
* Fix - Use a placeholder billing last name for single-name express checkout payments
* Dev - Use explicit method calls for upgrade checks and tools
* Update - Improve express checkout load times by preloading the resources
* Tweak - Reduce JS bundle sizes by using native browser features instead of polyfills
* Dev - Memoize the Express Checkout button visibility check within a request
* Fix - Don't default Adaptive Pricing on when first connecting a Stripe account that is ineligible for Adaptive Pricing
* Fix - Fix admin banner dismissal and display logic
* Add - Detect Stripe API outages (network failures, timeouts, 5xx responses) and surface a wp-admin notice instead of crashing or showing misleading "couldn't connect" messages
* Fix - Require a connected account for the target mode before switching between test and live
* Tweak - Move UPE-only appearance helpers out of the shared stripe-utils module
* Dev - Add wc_stripe_agentic_commerce_should_sync_product filter so adapters can exclude products from the Agentic Commerce catalog, inventory, and archive syncs
* Dev - Move additional classes to autoloader, including email and migration classes
* Add - Register Stripe gateway capabilities with the WordPress Abilities API for agent access (default off; opt in via the `wc_stripe_abilities_enabled` filter)
* Fix - Incorrect payment method title on the order confirmation page when Optimized Checkout is enabled
* Tweak - Remove the confirmation dialog when disabling a payment method in settings
* Dev - Add e2e tests for subscriptions and Optimized Checkout Suite and support stricter payment confirmation checks
* Fix - Restore "Refund via Gateway" button and Stripe dashboard transaction link for Amazon Pay orders by keeping Amazon Pay registered in the gateway list on order edit and refund pages
* Fix - Correct Amazon Pay button preview rendering in the Full Site Editor block cart and checkout pages
* Fix - Update the order description and metadata on the payment intent after an Adaptive Pricing payment completes

2026-05-12 - version 10.7.0
* Fix - Hide the "move Stripe to the top" Optimized Checkout notice when all payment methods above Stripe are disabled
* Add - Filter wc_stripe_optimized_checkout_title to override the Optimized Checkout payment method title at checkout
* Fix - Fix compatibility with WooCommerce 10.8 payment handling, where created-via is required for orders
* Update - Enable Optimized Checkout Suite by default for new installs
* Update - Enable Adaptive Pricing by default for new installs
* Fix - Use SKU as the Agentic Commerce catalog identifier so checkout.session.completed line items resolve correctly; keep the product-ID fallback for SKU-less products and catalogs synced under the legacy contract
* Fix - Stop Agentic Commerce checkout.session.completed orders from failing on null WC sessions or shipping rates that don't match any configured WC method
* Add - Display a bank authorization notice for Pre-Authorized Debit (ACSS) payments on checkout
* Fix - Detect Agentic Commerce sessions via payment_intent.agent_details so their checkout.session.completed webhooks aren't skipped
* Add - Add Agentic Commerce settings UI with feature introduction, onboarding guide, enable/disable toggle, and webhook secret management
* Fix - Surface PHP Throwables from the Agentic Commerce checkout.session.completed flow so fatals are logged, the order rollback runs, and Action Scheduler marks the job failed
* Fix - Look up products by SKU in Agentic Commerce manual approval and tax calculation flows
* Dev - Rename payment request references to express checkout
* Add - Add Agentic Commerce admin dashboard for monitoring product feed sync status, history, errors, and triggering manual syncs
* Fix - Store Stripe Terminal IPP channel metadata on orders so WooCommerce can identify POS payments and suppress standard transactional emails
* Fix - Cancel pending WC Subscriptions retry when Stripe Radar blocks a renewal payment so further automatic retries do not re-trigger the same Radar block
* Fix - Stale saved-card metadata after updating a card's expiry or CVC
* Dev - Reduce PR PHP test matrix from 30 to 12 jobs (PHP 7.4, 8.2, 8.5; WC/WP at L and L-2) for faster CI feedback
* Dev - Bump transitive minimatch dev dependency to resolve ReDoS CVE-2026-27903 (GHSA-7r86-cg39-jmmj)
* Fix - Prevent fatal error in wp-admin from overly narrow argument type
* Update - Remove deprecated backend methods that called wc_deprecated_function
* Add - Allow Stripe developer widget to be enabled in test mode via wc_stripe_show_stripe_developer_widget filter
* Add - Show Stripe's account sync status in the Account details card
* Update - Improve the behaviour for the Optimized Checkout Suite and Adaptive Pricing settings
* Fix - Guard against multiple WC_Stripe instances before plugin is fully initialized

2026-04-23 - version 10.6.1
* Fix - Fix Optimized Checkout Suite bugs that could result in duplicate subscription charges and generic payment methods names

2026-04-20 - version 10.6.0
* Remove - Remove EU adaptive pricing disclosure component from classic and Blocks checkout as it is shown natively within the Stripe currency selector element
* Dev - Add paratest for parallel PHP unit test execution
* Dev - Use paratest in CI workflow for faster PHP test execution
* Fix - Accept regional language names for Spanish provinces (e.g., Basque "Gipuzkoa") in Apple Pay and express checkout address validation
* Fix - Restore missing saved payment tokens when Optimized Checkout Suite is enabled
* Add - Add exit survey to capture merchant feedback on plugin deactivation and gateway disablement
* Update - Defer checkout sessions webhook processing via Action Scheduler to prevent race conditions when webhook events arrive before order metadata is stored
* Fix - Hide duplicate store-level save checkbox when Stripe Link is enabled on checkout
* Update - Show "Payment Options" as the Optimized Checkout title on classic checkout and "Payment Methods" on Blocks checkout instead of "Stripe"
* Dev - Separate Agentic Commerce merchant-controlled is_enabled setting from the developer feature flag
* Fix - Move test mode instructions above the Adaptive Pricing currency selector in classic checkout
* Fix - Render the Adaptive Pricing currency selector immediately above the payment element in classic checkout
* Update - Show Express Checkout on block checkout when Adaptive Pricing is enabled
* Fix - Fix checkout session creation for guest users
* Add - Allow payment methods for other currencies to be enabled when Adaptive Pricing is enabled
* Fix - Re-compute Stripe PE appearance after web fonts load to prevent fallback font rendering
* Fix - Better background color detection for block themes and allow fonts from fonts.bunny.net
* Update - Shorten test mode messaging, add Test Mode badge on Blocks checkout, and add copy-to-clipboard for test card numbers
* Fix - Prevent brief display of wrong title on classic checkout when Optimized Checkout is enabled
* Fix - Update Stripe Fee and Stripe Payout values correctly after partial capture by replacing authorization-phase values instead of adding to them
* Fix - Add defensive checks before running renewal meta cleanup when renewal/subscription objects are missing or invalid
* Dev - Add metadata accessor methods for subscription objects to WC_Stripe_Order_Helper, centralizing subscription-specific metadata handling
* Add - Include specific information on converted currency for adaptive pricing in order confirmation emails
* Fix - Use the order currency instead of the global store currency when creating a payment intent, resolving incorrect charges in multicurrency setups
* Dev - Rename and move the new Checkout Sessions ajax handler class to be autoloaded
* Dev - Autoload all Agentic Commerce classes via Composer classmap, removing manual require_once calls
* Add - Process payment with adaptive pricing in the classic checkout
* Dev - Add WC_Stripe_Country_Code constants class and replace hardcoded country code strings
* Dev - Update WC_Stripe_Currency_Code constants class with zero-decimal and three-decimal currency lists and replace legacy no_decimal_currencies() usage
* Fix - Resolve intermittent "Missing required customer field: address->line1" error during checkout with auto-account creation
* Update - Add deprecation notices to methods and properties that were deprecated without them in older versions
* Add - Include specific information on converted currency for adaptive pricing in the order received page and order details page
* Add - Support express checkout for free trial subscription products that require shipping
* Fix - Normalize express checkout button spacing on the block cart page in Safari
* Fix - Re-block UI during express checkout post-modal processing so shoppers see a loading state while the checkout API call completes
* Dev - Rename PHPUnit test files and directories to match the WordPress kebab-case naming convention used in includes/
* Add - Process payment with adaptive pricing in the blocks checkout
* Update - Express Checkout button logging will only occur when verbose debug mode is enabled
* Update - Disable the Optimized Checkout Suite in the "Add Payment Method" and "Change Subscription Payment Method" screens
* Dev - Remove unused frontend code: legacy blocks payment request API helpers, related normalize utilities, and unused Stripe icon component
* Add - Allow additional font domains to be included in Stripe fonts
* Dev - Skip registering Stripe email classes when WooCommerce email class is not loaded
* Fix - Add order and payment method validation to prevent errors
* Tweak - Hide pay and cancel actions for pending orders processed via Checkout Session in order received page and My Account orders list
* Fix - Improve default layout when Optimized Checkout is disabled
* Fix - Improve performance of CSS style lookups
* Fix - Wrap express checkout add-to-cart in try/catch to prevent errors
* Add - Initial implementation of always-expanded Optimized Checkout Suite in shortcode checkout
* Dev - Add incremental inventory sync for Agentic Commerce: tracks stock changes via WooCommerce hooks and uploads a minimal inventory_feed CSV to Stripe one minute after the first change
* Dev - Add Agentic Commerce admin dashboard for monitoring product feed sync status, history, errors, and triggering manual syncs
* Update - Move Agentic Commerce settings from a separate tab to an inline section in the Settings tab, use sentence case, and integrate save into the global Save changes button
* Dev - Add product deletion tracking to Agentic Commerce inventory sync: product deletes and trash events are batched and uploaded to Stripe as a product_catalog_feed with delete:true
* Dev - Collapse PHPUnit tests using data providers to reduce duplication and improve test isolation
* Fix - Fix UPE style transition keys for font smoothing properties
* Fix - Only collect and send payer phone in Checkout Sessions when the WooCommerce phone field is required
* Dev - Remove @woocommerce/currency dev dependency to resolve locutus CVE-2026-32304 (GHSA-vh9h-29pq-r5m8)
* Add - Handle Checkout Session failure webhook events for expired and async failed payments
* Add - Process Checkout Session async payment success webhooks
* Dev - Hide Stripe's testing assistant on checkout page
* Dev - Treat misaligned statements as errors in PHPCS ruleset
* Fix - Put subscription on hold when Stripe Radar blocks a renewal payment to prevent WC Subscriptions from scheduling further retry attempts
* Dev - Remove checkout sessions feature flag and make the feature available by default
* Fix - Treat customer-initiated Klarna (and other redirect BNPL) cancellations as recoverable so the order stays retryable and shoppers can complete checkout with another payment method
* Fix - Prevent TypeError when processing deferred webhooks using Action Scheduler
* Update - Hide Adaptive Pricing option for Stripe accounts based in India and European Economic Area countries
* Fix - Prevent JavaScript error in `elements.update` when using checkout sessions with adaptive pricing
* Fix - Keep adaptive pricing amount in sync on classic checkout after order total changes
* Fix - Keep adaptive pricing amount in sync on block checkout after order total changes
* Fix - Use a single Checkout Session line item priced at the full payable cart total so adaptive pricing sessions match checkout totals
* Add - Add Ajax endpoint to update line items in a checkout session
* Tweak - Hide the Adaptive Pricing currency selector from classic checkout when a saved payment method is selected
* Add - Allow customers to save payment methods during checkout with adaptive pricing
* Fix - Restrict Checkout Session saved payment method options to logged-in customers so guest checkout session creation succeeds
* Add - Add an admin notice and one-click action to move Stripe payment methods to the top of WooCommerce payment gateway order for Optimized Checkout
* Update - Allow Adaptive Pricing for merchant accounts based in EEA countries
* Add - Show ECB interbank rate conversion fee notice to EEA-based shoppers on the order received page and in customer order confirmation emails
* Fix - Confirm checkout session with user data in classic checkout for guest user
* Add - Handle redirect payment flow in classic checkout for Checkout Sessions
* Dev - Add automatic changelog entry suggestions to bin/changelog.js
* Fix - Improve UX for the "Stripe first method" notice for Optimized Checkout
* Fix - Change Checkout Sessions (Adaptive Pricing) redirect-based flow to match the existing PaymentIntent flow (redirect to checkout page)
* Fix - Ensure currency selector appears after saved payment methods in classic checkout

2026-03-19 - version 10.5.3
* Fix - Restore default layout when Optimized Checkout is disabled
* Fix - Prevent incorrect re-enablement of express checkout methods during upgrades

2026-03-13 - version 10.5.2
* Fix - Ensure that we enqueue all needed scripts on payment pages
* Fix - Use floating labels and correct field spacing on Blocks checkout to match WooPayments

2026-03-11 - version 10.5.1
* Fix - Reinstate custom appearance logic
* Fix - Refactor some Amazon Pay helpers to prevent an infinite loop
* Fix - Clear customer cache after saving a new payment method so the Stripe payment method list has correct data

2026-03-09 - version 10.5.0
* Update - Add missing metadata to checkout session objects when processing webhook events
* Fix - Update deprecated WooCommerce block checkout hook from `onCheckoutAfterProcessingWithSuccess` to `onCheckoutSuccess` in the saved token handler
* Add - Display adaptive pricing currency selector on blocks checkout page
* Dev - Remove unit tests that no longer make sense after recent file removals
* Update - Include additional customer information when creating checkout sessions
* Fix - Allow subscription edits when mandates are present, except for mandates from India
* Update - Remove the deferred intent flag (`wc-stripe-is-deferred-intent`) and the non-deferred intent code path
* Dev - Deprecate old unused feature flag backend methods and remove related code from the frontend
* Dev - Remove unused frontend code related to block checkout
* Update - Move class instantiations from their definition files to the plugin initialization code
* Update - Deprecate unused non-deferred intent methods in WC_Stripe_UPE_Payment_Gateway
* Dev - Remove unused frontend code related to UPE
* Tweak - Update PHPDoc in admin REST controllers and related code
* Tweak - Improve PHPDoc for migration and notes; minor notes refactor
* Tweak - Update PHPDoc for express checkout classes, block support class, and intent controller
* Tweak - Update PHPDoc for UPE payment method classes
* Add - Display adaptive pricing currency selector on classic checkout page
* Dev - Fix WC beta version resolution in tests
* Update - Update Stripe API to 2025-09-30.clover and dynamic Javascript to Clover
* Tweak - Update PHPDoc and fix minor issues for subscriptions and pre-order compatibility
* Add - Add method to check if adaptive pricing is supported and pass the flag to checkout page
* Dev - Upgrade @stripe/react-stripe-js to ^5.4.1 and @stripe/stripe-js to ^8.6.0 in JavaScript dependencies
* Dev - Fix becs e2e tests
* Add - Add the base CSV feed for agentic commerce
* Update - Reconfigure webhooks to include Checkout Session events when Adaptive Pricing is enabled via settings
* Dev - Upgrade @types/react to ^18.3.7 in JavaScript dependencies
* Dev - Add CodeRabbit configuration with Stripe-focused review guidance
* Dev - Expand AI agent guidance with directory-level AGENTS and CLAUDE context files
* Fix - Prevent fatal error when order ID in webhook references a refund
* Tweak - Refactor order helper class to use constants for lock meta keys and reduce code duplication in meta getters
* Dev - Update dependencies for building translations
* Fix - Hide all payment methods on Add Payment Method page when saved payment methods are disabled
* Add - Backend support for processing payments with Checkout Session when using Adaptive Pricing
* Fix - Fix currency formatting issue with ISK for express checkouts
* Dev - Extract shared banner styled components and dismissNotice utility to eliminate frontend duplication
* Tweak - Add missing JSDoc comments to client-side utility, API, and payment-flow functions
* Update - Use iDEAL | Wero co-branding to comply with branding changes
* Dev - Use PaymentGatewayFeature constants instead of raw strings for payment gateway feature declarations in UPE payment method classes and traits
* Fix - Only load Stripe JS (not the full UPE bundle) on product and cart pages when express checkout is disabled
* Fix - Fix script dependencies and script cache versioning for classic checkout
* Fix - Remove transient style caching in favor of a simple in-memory frontend cache
* Fix - Improve Stripe element appearance on non-checkout pages
* Fix - Remove WooCommerce session creation on product page load to improve cacheability

2026-02-09 - version 10.4.0
* Add - Introduce an endpoint to create Checkout Sessions tokens
* Add - New setting to control Adaptive Pricing
* Add - Map Norwegian nb-NO to generic no-NO locale
* Update - Redirect merchants to the Stripe settings screen upon plugin activation
* Fix - Fix Stripe client API calls with wrong amount when rendering the express checkout buttons in block
* Fix - Validate product exists before accessing product methods in express checkout to prevent fatal errors
* Update - Ensure the `customer_name` metadata sent to Stripe does not have leading or trailing spaces
* Update - Move all logic from WC_Gateway_Stripe to WC_Stripe_UPE_Payment_Gateway as part of deprecation
* Update - Remove the main Payment Request Buttons backend class, WC_Stripe_Payment_Request, which was deprecated in 10.2.0
* Dev - Replace deprecated logger method calls with severity specific methods
* Dev - Ensure PHPStan runs when pushing changes
* Dev - Add PHPStan stub for WC_Subscription class
* Dev - Remove the deprecated WC_Stripe_Apple_Pay class
* Fix - Prevent Optimized Checkout from showing unsupported payment methods
* Dev - Unit tests to cover address normalization
* Fix - Add order validation in Multibanco email instructions to prevent fatal error when order is invalid
* Fix - Add validation to prevent fatal error when setting default payment token if token doesn't exist
* Fix - Validate order object before accessing methods in my account orders actions to prevent fatal errors
* Dev - Use WC_STRIPE_PLUGIN_PATH constant instead of __DIR__ for more reliable file path resolution
* Dev - Automate release note creation PR
* Fix - Resolve false incompatibility warnings for Block Editor payment methods
* Dev - Introduce a feature flag for the Stripe checkout sessions feature
* Dev - Improve the pre-push hook
* Fix - Prevent credit card input fields from being cleared in the Optimized Checkout Suite (OCS) when the "Save payment method" checkbox is selected on classic checkout
* Fix - Better error handling when token creation fails
* Tweak - Improve PHPDoc for payment token code
* Tweak - Update PHPDoc for email notification classes
* Add - Admin notice for merchants potentially affected by the express checkout button location issue in versions 10.1.0 to 10.2.x
* Add - Support Amazon Pay as an express checkout method
* Add - Enable Amazon Pay for eligible new installs
* Update - Stop auto-enabling Optimized Checkout Suite for new installs

2026-01-15 - version 10.3.1
* Fix - Fatal error when using express payment method with certain addresses

2026-01-13 - version 10.3.0
* Update - Increase Afterpay/Clearpay maximum transaction amount to 4,000 AUD and 4,000 NZD
* Dev - Require milestones to be set on pull requests
* Update - Remove legacy checkout payment method classes
* Dev - Rename the express checkout frontend main setting key
* Update - Deprecate and replace Payment Request Button classes with Express Checkout equivalents
* Dev - Rename the express checkout customization route
* Dev - Rename all express checkout related frontend hooks
* Dev - Remove deprecated legacy checkout settings retrieval methods
* Dev - Remove all references to the UPE-enabled feature flag
* Dev - Remove deprecated promotional banners (related to legacy checkout)
* Fix - Error when using Puerto Rico addresses with express checkouts
* Tweak - Improve error messages when Stripe API requests fail to better distinguish between request and retrieval errors
* Fix - Resolve Level3 data validation error caused by rounding precision when shipping rates have 3+ decimal places
* Tweak - Change BLIK confirmation webhook processing from deferred to immediate
* Fix - Preserve express checkout button location settings when upgrading from older plugin versions
* Fix - Fix some initialization bugs for reconnections
* Fix - Update Ukraine state mapping list
* Fix - Use same default locations for Amazon Pay express checkout
* Dev - Add configuration and workflow for PHPStan
* Fix - Calculate subtotal correctly in express checkout
* Dev - Improve PHPStan handling of plugin constants
* Fix - Ensure that 'Link' and 'Stripe Link' are not translated
* Fix - Fix situation where Stripe errors were not translated
* Dev - Ensure multiple subdirectories are not exposed via Docker container
* Dev - Fix ACH E2E tests for updated Stripe test flow
* Tweak - Simplify logic for default settings and wc_stripe_settings filter
* Tweak - Update PHPDoc for WC_Stripe_Payment_Gateway->get_intent_from_order()
* Tweak - Fix return type for WC_Stripe_Order_Helper::get_instance()
* Fix - Ensure express checkout is enabled in current context before registering the express checkout script
* Fix - Prevent warnings for Amazon Pay in Express Checkout block

2025-12-08 - version 10.2.0
* Dev - Refactor display logic for payment method issue pills
* Update - Improves the error log for SSL connection missing when trying to render the express checkout buttons
* Update - Better notices and interactions for disabled express checkout methods
* Update - Enable the Optimized Checkout Suite feature for all new installations
* Dev - Deprecates all the legacy checkout payment method classes
* Dev - Deprecates all the LPM class constants
* Dev - Remove all references to the UPE-enabled feature flag
* Dev - Removing all usages of the `is_stripe_ece_enabled` feature flag method
* Dev - Expands the Stripe Order Helper class to handle mandate ID, Multibanco data, refund status, card brand, charge captured flag, status final flag, and the refund failure reason
* Dev - Remove the merchant email address from the System Status Report
* Dev - Replace the constant reference for the legacy SEPA payment method
* Update - Changes the list of payment methods shown in the Stripe account connection modal
* Update - Changes labels related to saved payment methods from "cards" to "payment methods"
* Fix - Ensure Amazon Pay, Apple Pay, and Google Pay display settings are managed correctly
* Dev - Add logging with DNS resolution diagnostics for URL validation issues when calling Stripe API
* Fix - Allow payment methods to be disabled when they are not available
* Fix - Ensure state and postal code are optional in express checkout for Gulf countries (UAE, Bahrain, Kuwait, Oman, Qatar)
* Dev - Removes the `_wcstripe_feature_upe` feature flag and the related method from the `WC_Stripe_Feature_Flags` class
* Dev - Fixes some incorrect subscriptions support implementations for payment methods
* Add - New promotional banner to highlight the Stripe Tax extension for OCS-enabled merchants
* Fix - Ensure correct express checkout prices in block cart and checkout with non-default decimal configuration
* Fix - Disable express checkout when Amazon Pay is disabled and the only method
* Fix - Don't allow WP-Cron jobs to detach payment methods on staging sites
* Update - Add minimum transaction amounts for BRL, INR, NZD, THB, CZK, HUF, AED, MYR, PLN, RON
* Dev - Add additional context data to the OAuth connect flow verbose debug logging mode
* Fix - Make token detachment checks use shared logic for detaching payment methods
* Fix - Ensure express payment methods are processed correctly when Optimized Checkout is enabled
* Update - Include customer data in wc_stripe_create_customer_required_fields filter
* Fix - Fix error handling when processing subscription renewals
* Fix - Use the built-in Database Cache for the Connect flow data
* Add - Implement cache prefetch for account data
* Tweak - Hide Amazon Pay from the standard payments in Optimized Checkout
* Fix - Always use the current payment method configuration in Optimized Checkout
* Fix - Fix revoked secret_key error during the OAuth account connection flow
* Add - Add wc_stripe_express_checkout_normalize_address filter for express checkout address normalization
* Update - Expand Amazon Pay support for all permitted currencies and countries
* Add - Allow cache prefetch window to be adjusted via the wc_stripe_database_cache_prefetch_window filter
* Fix - Respect button.radius value of 0 in Express Checkout Element appearance settings
* Fix - Prefill customer billing information on the Pay for Order and Change Payment Method pages
* Fix - Exclude order parameter from customer request data
* Fix - Generate OAuth URLs on-demand when connecting to Stripe instead of pre-generating them on page load

2025-11-11 - version 10.1.0
* Dev - Remove unused `shouldShowPaymentRequestButton` parameter and calculations from backend
* Fix - Improves the error message shown in checkout when a saved payment method is no longer valid
* Fix - Fix fatal error when trying to allow the `display` CSS property using the `safe_style_css` filter
* Fix - Remove `redirect_url` parameter from Express Checkout payment flow
* Fix - Adjust UI spacing of help text on express checkout theme settings page
* Update - Renames and migrates all Payment Request Buttons settings to Express Checkout
* Dev - Upgrades `@automattic/interpolate-components` to 1.2.1 to remove the `node-fetch` dependency
* Add - Includes a notice to inform merchants about methods that are automatically enabled upon account connection
* Dev - Upgrades the `nock` NPM package to version `^13.5.6` to remove the lodash.set dependency
* Add - Add a new filter allowing third-party plugins to hook captcha solutions when creating and confirming setup intents
* Dev - Add track events when clicking the "Reconnect to Stripe" button (both in the settings page and the admin notice)
* Update - Removes unnecessary legacy checkout gateway instantiations and UPE disablement code
* Dev - Renames previous Order Helper class methods to use the `_id` suffix
* Dev - Expands the Stripe Order Helper class to handle customer ID, card ID, UPE payment type, and UPE redirect status metas
* Fix - Remove redundant secret management logic when configuring webhooks
* Dev - Improve Payment Method Configuration error logging
* Dev - Add Stripe's request-id to API response logs
* Fix - Increase limit when listing available payment method configurations from the Stripe API
* Fix - Klarna not processing recurring payments
* Fix - Fix Express Checkout error with free trial subscription on blocks cart/checkout
* Fix - Improve Express Checkout compatibility with One Page Checkout
* Fix - Allow express checkout to complete successfully for addresses without postal codes in countries where it's not required (eg: Israel)
* Fix - Prevent retrying requests that errored out due to declined payment methods
* Fix - GooglePay/ApplePay fail when there are more than 9 shipping options
* Fix - Detect WooCommerce Subscriptions staging sites when checking if payments can be detached
* Fix - Fix saved ACH payment methods sending unsupported capture_method parameter causing checkout failures
* Dev - Add Stripe's masked API key to API request/response logs
* Add - Add wc_stripe_is_amazon_pay_available filter to override Amazon Pay feature flag
* Dev - Add verbose debug logging mode to the OAuth connect flow
* Fix - Disable Amazon Pay when taxes are based on billing address and add notices with details
* Fix - Fix express checkout error for a Saudi Arabian address without state and postal code
* Fix - Ensure we have a fallback for shipping rate names in classic checkout

2025-10-15 - version 10.0.1
* Fix - Remove persistent reconnection notices

2025-10-14 - version 10.0.0
* Update - Removes frontend code related to Payment Request Buttons in the checkout page
* Update - Disable Payment Request Buttons and ensure Express Checkout is used when express checkout buttons are enabled
* Dev - Expands the Stripe Order Helper class to handle source ID, refund ID, intent ID, and setup intent ID metas
* Update - Removing the `wc_stripe_is_upe_checkout_enabled` filter, as Legacy Checkout is no longer supported
* Dev - Upgrades `jest` to version 29.7.0, `@wordpress/scripts` to 26.19.0, and adds `axios`(version 1.12.2) to the JavaScript development dependencies
* Update - Shows the Stripe account connection modal in settings when the merchant did not connect via OAuth along with a new notice
* Update - The usage of SEPA Direct Debit as a saved payment method for iDEAL and Bancontact is now disabled by default
* Dev - Introduces a new helper class to handle Stripe orders
* Dev - Fixes a warning thrown when running Klarna payment token PHP Unit tests
* Dev - Fixes some possible warnings shown in the browser console when the Optimized Checkout payment element is instantiated with invalid parameters
* Dev - Renaming the Klarna payment token class to WC_Stripe_Klarna_Payment_Token
* Fix - Minor fixes and code improvements for the saved payment methods comparison logic
* Dev - Upgrades Node to v20
* Add - Allow the purchase of free trials using the Express Payment methods when the product does not require shipping
* Update - Changes the documentation page URL for the Optimized Checkout feature to https://woocommerce.com/document/stripe/admin-experience/optimized-checkout-suite/
* Update - Changes the background color and spacing for the Woo logo shown in the account modal
* Dev - Fix live reload issue with Webpack 5
* Update - Splits the "Enable SEPA for other methods" setting into two separate settings for Bancontact and iDEAL
* Dev - Upgrades the Webpack-related packages
* Dev - Upgrade the cross-env and rimraf NPM packages; remove chromedriver NPM dependency
* Dev - Removes three unused NPM script commands: `test`, `test:grep`, and `test:single`
* Dev - Upgrades the Babel-related packages
* Dev - Consolidate component used for unavailable payment methods
* Dev - Update webhook unit tests to be compatible with WooCommerce 10.2
* Add - Implement cache prefetch for payment method configuration
* Dev - Update the @woocommerce/navigation dependency
* Update - Reduce settings Javascript file size by using smaller image
* Dev - Update @wordpress/scripts to 30.24.0 and @wordpress/base-styles to 6.7.0
* Fix - Prevent fatal error when third-party plugins check for non-existent methods in payment method classes
* Add - Introduce wc_stripe_preselect_payment_method_configuration filter for manual payment method configuration selection
* Fix - Ensure Klarna payment tokens can be deleted and handled correctly
* Tweak - Update PMC cache expiration time from 10 minutes to 20 minutes

2025-09-29 - version 9.9.2
* Fix - BACS instruction text appears twice on the Order Confirmation page
* Update - Allow more situations to enable settings synchronization with Stripe
* Update - Ensure that we check for settings sync eligibility after every upgrade

2025-09-16 - version 9.9.1
* Add - Allow Klarna to be used for recurring payments and subscriptions
* Add - Adds support for the Romanian Leu (RON) currency when paying with Klarna
* Update - Reduces the minimum transaction amount for Affirm to 35 USD
* Fix - Fatal error caused by type mismatch when processing webhooks
* Fix - Avoid instantiating WC_Payment_Gateways too early when checking for Klarna and Affirm plugins
* Fix - Fix subscription renewal error caused by passing both mandate ID and mandate data
* Fix - Prevent type collisions for saved payment methods
* Fix - Validate order when verifying payment intent
* Dev - Renaming the Klarna payment token class to WC_Stripe_Klarna_Payment_Token

2025-09-08 - version 9.9.0
* Dev - Adds PMC setting information to the Payment Intent object metadata
* Dev - Adds debug information to the Payment Intent object metadata
* Fix - Use the item name as fallback when normalizing line items for the express checkout
* Update - Upgrade React to v18 and related dependencies
* Dev - Simplifies the way test payment instructions are built when the Optimized Checkout is enabled
* Dev - Upgrades the ESLint packages and their related libraries
* Dev - Upgrade the Prettier package and related libraries, and apply updated formatting rules
* Dev - Extracts Optimized Checkout logic from card payment method into new WC_Stripe_UPE_Payment_Method_OC class
* Fix - The availability of the Link payment method when the Optimized Checkout is enabled
* Dev - Update Javascript unit tests for compatibility with Node 20
* Dev - Replaces some payment method instantiation logic for the Optimized Checkout with calls to the `get_payment_method_instance` method
* Dev - Multiple lint fixes in preparation for the Node 20 upgrade
* Dev - Introduces a new helper method to identify Stripe orders
* Add - Setting to allow merchants to control the layout of the Optimized Checkout payment element on the checkout page
* Fix - Removes the credit card payment method requirement for the Optimized Checkout feature
* Fix - Payment method test instructions not showing up for the Optimized Checkout payment element
* Add - Includes a new notice to highlight the Optimized Checkout feature above the payment methods list in the Stripe settings page
* Update - Increases the default font size for the Optimized Checkout payment element to match the rest of the checkout form
* Fix - Checks for the subscription payment method (if it is Stripe) when verifying for the payment method detachment
* Dev - Implements WooCommerce constants for the tax statuses
* Fix - Ensure all Javascript strings use the correct text domain for translation
* Tweak - Use more specific selector in express checkout e2e tests
* Tweak - Small improvements to e2e tests
* Fix - Fix unnecessary Stripe API calls when rendering subscription details
* Add - Adds a new action (`wc_stripe_webhook_received`) to allow additional actions to be taken for webhook notifications from Stripe
* Fix - Allow checkout for logged-in users without an email in their account when a billing email is provided
* Update - Show all available payment methods before unavailable payment methods
* Tweak - Use smaller image for Optimized Checkout banner
* Dev - Update WooCommerce Subscriptions e2e tests after 7.8.0 release
* Fix - Display only Apple Pay and Google Pay buttons in the Customize page preview
* Update - Add nightly task and WooCommerce tool to remove stale entries from our database cache
* Dev - Make 'Add to cart' more robust in e2e tests
* Dev - Ensure e2e tests enable or disable Optimized Checkout during setup
* Fix - Fix some PHP warnings
* Dev - Normalize intent metadata to yes/no/null values

2025-08-15 - version 9.8.1
* Fix - Remove connection type requirement from PMC sync migration attempt
* Fix - Relax customer validation that was preventing payments from the pay for order page
* Fix - Prevent the PMC migration to run when the plugin is not connected to Stripe
* Fix - Fixes a fatal error in the OC inbox note when the new checkout is disabled

2025-08-11 - version 9.8.0
* Add - Adds the current setting value for the Optimized Checkout to the Stripe System Status Report data
* Add - A new pill to the payment methods page to indicate the credit card requirement when the Optimized Checkout feature is enabled
* Add - Tracks the toggle of the Optimized Checkout feature in the promotional banner
* Fix - Force the card payment method to be enabled when the Optimized Checkout is enabled in the merchant's Payment Method Configuration
* Update - Deactivates Affirm or Klarna when other official plugins are active in merchant's Payment Method Configuration
* Fix - Fixes issues related to booking multiple slots with express checkout payment methods enabled
* Fix - Update the Optimized Checkout promotional inbox note to link to the relevant section in the Stripe settings page
* Add - Makes the Optimized Checkout feature available for all merchants by default
* Add - Adds a new bulk action option to the subscriptions listing screen to check for detached payment methods
* Dev - Use product type constants that were added in WooCommerce 9.7
* Dev - Removes the inclusion of the deprecated WC_Stripe_Order class
* Add - Introduces a new banner to promote the Optimized Checkout feature in the Stripe settings page for versions 9.8 and above
* Add - Introduces a new inbox note to promote the Optimized Checkout feature on version 9.8 and later
* Tweak - Use wp_ajax prefix for its built-in security for Add Payment Method action
* Update - Improve Stripe API connector logging to include request/response context
* Fix - Prevent Stripe API calls after several consecutive 401 (Unauthorized) responses
* Fix - 3DS authentication modal not shown when using Google Pay
* Update - Improve Stripe API connector logging to include request/response context
* Fix - Require credit cards to be enabled before Apple Pay and Google Pay can be enabled in PMC
* Fix - Free trial subscription orders with payment methods that require redirection (eg: iDeal, Bancontact)
* Tweak - Update checkout error message for invalid API key to be more generic and user-friendly
* Tweak - Disable Amazon Pay in the merchant's Payment Method Configuration object if it is still behind a feature flag
* Fix - Only clear customer cache when an action has been performed
* Fix - Remove validation error check from classic checkout before payment method creation
* Dev - Clean up LPM (Local Payment Method) feature flags and related code
* Dev - Move some testing and compiler node dependencies to devDependencies
* Dev - Minor CSS change to comply with a SASS rule deprecation
* Dev - Update SCSS to replace @import with @use and @forward
* Update - Copy for the Optimized Checkout settings and notices
* Update - Removes the ability to change the title for the Optimized Checkout payment element, as it is now set to "Stripe" by default
* Fix - Handle missing customer when calling payment_methods API
* Fix - Reduce number of calls to Stripe payment_methods API
* Fix - Add `get_icon_url()` to Payment Method base class

2025-07-28 - version 9.7.1
* Add - Add state mapping for Lithuania in express checkout
* Tweak - Check for checkout validation error before creating a payment method in Stripe
* Fix - Prevent multiple save appearance AJAX calls on Block Checkout
* Fix - Fix required field error message and PHP warning for custom checkout fields that don't have a label
* Fix - Fix fatal when processing setup intents for free subscriptions via webhooks
* Dev - Fix WooCommerce version fetching in GitHub workflows
* Dev - Fix failing test cases associated with WooCommerce 10.0.x

2025-07-21 - version 9.7.0
* Update - Removes BNPL payment methods (Klarna and Affirm) when other official plugins are active
* Fix - Moves the existing order lock functionality earlier in the order processing flow to prevent duplicate processing requests
* Add - Adds two new safety filters to the subscriptions detached debug tool: `wc_stripe_detached_subscriptions_maximum_time` and `wc_stripe_detached_subscriptions_maximum_count`
* Add - Show a notice when editing an active subscription that has no payment method attached
* Fix - Fixes a possible fatal error when trying to generate the order signature for a `WC_Order_Refund` object
* Add - New WooCommerce Debug Tool to list subscriptions without a payment method attached
* Fix - Fixes a possible error notice when the `payment_request` Stripe setting key is not defined
* Fix - Prevent irrelevant payment method update requests to Stripe during checkout
* Add - A notice to take user back to WC onboarding flow after connecting the Stripe account
* Tweak - Deprecate wc_connect_* filters
* Fix - Prevent text field reset while editing Optimized Checkout title
* Update - Improvements to custom checkout fields support for express checkout
* Tweak - Use the Database Cache for the Stripe Account Data
* Update - Update filter names to use the wc_stripe_* prefix
* Add - Show payment methods sync status on the UI
* Fix - No such customer error when creating a payment method with a new Stripe account
* Fix - Validate create customer payload against required billing fields before sending to Stripe
* Update - Enhanced logging system with support for all log levels and improved context handling
* Fix - Fixes wrong price formatting in express checkout
* Fix - Require email address only for Stripe customer validation when request is from the Add Payment Method page
* Fix - Set default values for custom field options
* Fix - Enforce rate limiter for failed add payment method attempts
* Update - Add the number of pending webhooks to the Account status section
* Fix - Prevent "Undefined array key charges_enabled" PHP warning when determining live‑mode status
* Update - Deprecate `wc_gateway_stripe_process_payment`, `wc_gateway_stripe_process_redirect_payment` and `wc_gateway_stripe_process_webhook_payment` actions in favour of `wc_gateway_stripe_process_payment_charge`

2025-07-07 - version 9.6.0
* Fix - Register Express Checkout script before use to restore buttons on “order-pay” pages
* Dev - Re-include the deprecated WC_Stripe_Order class to avoid breaking changes for merchants using it
* Update - Removes the change display order feature from the settings page when the Optimized Checkout is enabled
* Update - Removes the customization of individual payment method titles and descriptions
* Fix - Fixes some inconsistencies related to the Optimized Checkout feature and improves its unit tests
* Add - Introduces a new marketing note to promote BNPLs (Buy Now Pay Later) payment methods (Klarna and Affirm) on WooCommerce admin home page
* Fix - Throws a specific exception on an edge case where a saved payment method could not be found when processing an order in the new checkout experience
* Fix - Checks if the store has other BNPL extensions installed before displaying the promotional banner
* Fix - Correctly notifies customers and merchants of a failed refund and reverts the refunded status
* Update - Legacy checkout experience has been deprecated, new checkout experience is now the default for all sites
* Fix - Fixes an edge case where the express payment method buttons would not be displayed on the checkout if taxes used to be enabled
* Add - Voucher payment methods (Boleto, Multibanco, and Oxxo) can now be used when purchasing subscriptions if manual renewals are enabled or required
* Add - Adds a new filter (`wc_stripe_is_optimized_checkout_available`) to allow merchants to test the Optimized Checkout feature earlier
* Fix - Restricts the BNPLs promotional banner to only be displayed after version 9.7.0
* Add - Adds a new promotional banner to promote the BNPL payment methods (Klarna, Afterpay, and Affirm) on the settings page.
* Dev - Deprecates the WC_Stripe_Order class and removes its inclusion call.
* Fix - Fixes the availability of the saving payment method checkbox in the classic checkout when the Optimized Checkout is enabled and signup is disabled during checkout.
* Dev - Implements the PSR-4 autoloading standard for the plugin unit tests (PHP).
* Fix - Sends missing information to Stripe when completing transactions with WeChat Pay, Blik and Klarna, using the Optimized Checkout.
* Dev - Moves the main Stripe class to a new file.
* Dev - Renames all PHP Unit test files to follow the PSR-4.
* Dev - Dynamically retrieves versions of WooCommerce and WordPress to use in the PHP code coverage GitHub Actions Workflow.
* Fix - Makes payment methods dynamically available on the shortcode checkout when the Optimized Checkout is enabled depending on the saving method checkbox value.
* Fix - Fixes a fatal error when the fingerprint property is not available for a card payment method.
* Add - Show an icon beside the payment methods that support automatic recurring payments.
* Fix - Fixes the payment method title when using the classic checkout with the Optimized Checkout enabled.
* Update - Remove BACS from the unsupported 'change payment method for subscription' page.
* Fix - Fix payment method title display when new payment settings experience is enabled
* Fix - Prevent styles from non-checkout pages affecting the appearance of Stripe element.
* Dev - Add e2e tests for BLIK
* Dev - Add e2e tests for BECS
* Fix - Send correct attribute when setting the default payment method.
* Dev - Build dynamic WordPress and WooCommerce dependencies for unit tests.
* Fix - Void intent when cancelling an uncaptured order
* Fix - Hide future payments message from payment element when manual renewal is required
* Tweak - Fix a rare warning when searching customers with missing name
* Fix - Apply shipping country restrictions to Express Checkout
* Dev - Prevent changelog entries with trailing periods
* Fix - Fix legacy deprecation notice displayed on new plugin installs
* Update - Remove verification steps for Apple Pay domain registration, as this is no longer required by Stripe
* Fix - When the user is deleted via WP CLI, take into account the environment type before detaching their payment methods
* Tweak - Add prefix to the custom database cache keys
* Update - Support block checkout custom fields when using express payment methods like Apple Pay and Google Pay
* Dev - Fix failing optimized checkout e2e test due to incorrect order of operations
* Tweak - Remove Payment Method Configurations fallback cache
* Dev - Add Klarna e2e tests
* Tweak - Update deprecation notice message to specify that legacy checkout experience has been deprecated since version 9.6.0
* Update - Remove legacy checkout checkbox from settings
* Add - Introduced `wc_stripe_force_save_payment_method` filter
* Update - Express Checkout: introduce new WP actions for supporting custom checkout fields for classic, shortcode-based checkout
* Fix - Fixes page crash when Klarna payment method is not supported in the merchant's country by returning an empty array instead of throwing an error
* Fix - Fix payment processing for $0 subscription with recurring coupon
* Dev - Add e2e tests to cover Affirm purchase flow
* Dev - Improve e2e tests of some of the LPMs
* Fix - Add safety check when checking error object
* Fix - Correctly handle countries without states when using the express payment methods
* Update - Include extension data from block checkout when submitting an express checkout order
* Fix - Add order locking when processing payment redirects, to mitigate cases of double status updates
* Fix - Register Express Checkout script before use to restore buttons on “order-pay” pages

2025-06-23 - version 9.5.3
* Fix - Reimplement mapping of Express Checkout state values to align with WooCommerce's expected state formats
* Fix - Adds an exception to be thrown when the order item quantity is zero, during the retrieval of level 3 data from an order.
* Tweak - Track charge completed via webhooks in order notes
* Fix - Ensure that we migrate payment_request_button_size=medium on upgrade
* Fix - Show correct price in express checkout for zero decimal currencies
* Fix - Fixes a possible fatal error with Multibanco purchases when generating the email instructions.
* Fix - Fix buggy unsaved changes warning in settings page
* Fix - Use the platform's payment method configuration id constant when rendering the Optimized Checkout
* Update - Improve checks in voucher purchase flow

2025-05-22 - version 9.5.2
* Add - Implement custom database cache for persistent caching with in-memory optimization.
* Update - Remove feature that flags 401s and proactively blocks subsequent API calls until the store has reauthenticated.
* Fix - Disable payment settings sync when we receive unsupported payment method configurations.
* Fix - Ensure that we use current Stripe API keys after settings updates
* Fix - Fix initial enabled payment methods migration to the Stripe Payment Methods Configuration API

2025-05-17 - version 9.5.1
* Fix - Add a fetch cooldown to the payment method configuration retrieval endpoint to prevent excessive requests.
* Fix - Prevent further Stripe API calls if API keys are invalid (401 response).
* Fix - Stop checking for detached subscriptions for admin users, as it was slowing down wp-admin.
* Fix - Fix fatal error when checking for a payment method availability using a specific order ID.

2025-05-13 - version 9.5.0
* Fix - Fixes the listing of payment methods on the classic checkout when the Optimized Checkout is enabled.
* Fix - Fixes the availability of WeChat Pay when the Optimized Checkout is enabled on the block checkout. Removes it from the classic/shortcode checkout to avoid issues.
* Dev - Renames all references to "Smart Checkout" and "Single Payment Element" (and "SPE") to "Optimized Checkout" (and "OC"), following the feature rebranding.
* Tweak - Updates the "Smart Checkout" setting name to "Optimized Checkout", and the description accordingly.
* Fix - Checks for the existence of the WC_Stripe_Feature_Flags class before including it during extension initialization.
* Dev - Splits the code coverage GitHub Actions Workflow into two separate actions.
* Fix - Fixes the listing of payment methods in the Stripe settings page when the Smart Checkout is enabled.
* Tweak - Passes the correct parent payment method configuration ID (retrieved from the backend) to the Smart Checkout payment element.
* Tweak - Removes the Stripe icon beside the Smart Checkout payment element from the checkout pages.
* Add - New setting to allow merchants to set their preferred title for the Smart Checkout payment element. Defaults to "Stripe".
* Dev - Updates the Code Sniffer package to version 1.0.0.
* Update - Add ECE support for One Page Checkout and other dynamic cart update scenarios
* Fix - Show error notice when 'Add payment method' fails on My Account page in block-based themes.
* Add - Add WordPress Action for processing payments with delayed charge attempts due to pre-debit notification period.
* Fix - Add caching for the Stripe Payment Method Configuration API
* Fix - Prevent deletion of webhooks for other tools
* Dev - Improve SPE e2e tests to reduce flakiness
* Fix - Prevents fatal errors for cases where we fail to load product details
* Fix - Address an edge case with webhook URL comparisons
* Add - Only show payment methods in Stripe settings that are available for the connected Stripe account.
* Fix - Show correct gateway name in non payments settings pages.
* Update - Add support for customer order notes and express checkout
* Dev - Minor fix to e2e setup code
* Dev - Make PHP error log from Docker container available in docker/logs/php/error.log
* Fix - Fix invalid IP address error encountered during mandate data creation.

2025-04-17 - version 9.4.1
* Dev - Forces rollback of version 9.4.0.

2025-04-16 - version 9.4.0
* Add - New filter to allow merchants to bypass the default visibility of the express payment method buttons when taxes are based on customer's billing address (`wc_stripe_should_hide_express_checkout_button_based_on_tax_setup`).
* Dev - Improves Smart Checkout code with shared and new methods, on both front and backend.
* Fix - Fixes the saving of payment methods when Smart Checkout is enabled.
* Tweak - Correctly handles the display of payment method instructions when Smart Checkout is enabled.
* Dev - Do not generate filenames with underscores.
* Fix - Fixes the Stripe checkout container visuals when Smart Checkout is disabled.
* Dev - Replaces references to order status values with their respective constants from the WooCommerce plugin.
* Tweak - Updates the Smart Checkout (classic/shortcode checkout version) to make all the payment methods look as similar as possible to any other WooCommerce payment method.
* Tweak - Updates the Smart Checkout (block checkout version) to make all the payment methods look as similar as possible to any other WooCommerce payment method.
* Fix - Improves the subscriptions detached admin notice, making it less intrusive and limiting the querying to 5 subscriptions (avoiding slow loading times).
* Dev - Introduces new payment method constants for the express methods: Google Pay, Apple Pay, Link, and Amazon Pay (backend version).
* Dev - Introduces a new Stripe Order class to wrap Stripe-specific logic and data on the backend.
* Dev - Improves how we handle express payment method titles by introducing new constants and methods to replace duplicate code.
* Fix - Fixes an issue where the order signature retrieval method could throw a fatal error when the received order parameter is actually an OrderRefund object (instead of a WC_Order).
* Fix - Fixes a possible fatal error when a product added to the cart cannot be found (with Payment Request Buttons).
* Add - Add Amazon Pay payment method class.
* Add - Implements the Single Payment Element feature for the new checkout experience on the classic/shortcode checkout page.
* Tweak - Record a Tracks event when enabling/disabling SPE
* Tweak - Updates the Single Payment Element setting copy. Now it is labeled "Smart Checkout".
* Update - Enable/disable Amazon Pay by adding/removing it from the enabled payment methods list.
* Add - Add ACSS payment tokenization.
* Add - Add BLIK payment method.
* Fix - Prevent reuse of payment intents when order total doesn't match intent amount.
* Update - Update payment method type for Amazon Pay orders.
* Fix - Compatibility with email preview in the Auth Requested email
* Update - Update Alipay and bank debit icons.
* Tweak - Update payment method type check for charge.succeeded webhook.
* Fix - Fixed subscription features not being properly registered when hooks were already attached.
* Add - Disable unsupported payment methods in Stripe settings
* Update - Update handling of PR as a country in the terminal locations endpoint.
* Fix - Hide Amazon Pay in settings when legacy checkout is enabled.
* Fix - Fix subscription renewal issues for Amazon Pay.
* Fix - Fix ECE button width in shortcode cart page.
* Tweak - SPE: Remove radio buttons
* Add - Add Klarna support for some additional countries in EEA
* Update - Hide express checkout buttons when no product variation is selected.
* Fix - Translation warning when initializing the status page information.
* Add - Add ACSS support for WC Subscriptions.
* Fix - ECE checkout error when using extensions that reduce total cart amount (eg: Gift Cards)
* Add - Add WooCommerce Pre-Orders support to ACSS.
* Update - Remove unused express checkout button tracking.
* Add - Add BLIK support for WooCommerce Pre-Orders
* Add - Test mode instructions for BLIK.
* Tweak - Add save payment method parameter to update intent call for non-deferred intent payment methods.
* Fix - Checkout page focus loss
* Fix - Updated payment method radio button selector to correctly find the selected payment method in different themes.
* Fix - Add `wc_stripe_generate_create_intent_request` filter to support mandate information in setup intent creation.
* Add - Support for BECS Direct Debit as a new payment method for Australian accounts.
* Update - Back button on the settings pages.
* Update - Use individual product tax status instead of storewide tax setup when determining express checkout availability.
* Update - Credit and Bank (BECS and ACSS) icons on the Block checkout page.
* Fix - Fix BLIK visibility based on account and billing countries.
* Add - Use Stripe Configuration API to manage payment methods enabled/disabled states.
* Dev - Add track events when enabling/disabling payment methods.
* Fix - Prepare mandate data from subscription object on change payment method page.

2025-04-10 - version 9.3.2
* Fix - Fix express checkout for block cart and block checkout for WooCommerce 9.8.0+.

2025-03-14 - version 9.3.1
* Fix - Temporarily disables the subscriptions detached notice feature due to long loading times on stores with many subscriptions.
* Fix - Update ACH capability check key
* Fix - Update legacy checkout documentation links and deprecation notice display logic
* Fix - Fixes an issue where the order signature retrieval method could throw a fatal error when the received order parameter is actually an OrderRefund object (instead of a WC_Order).
* Fix - Fixes an error with the `filter_thankyou_order_received_text` filter when it does not receive a valid WC_Order instance.

2025-03-13 - version 9.3.0
* Dev - Adds a new README.md file to the plugin with specific development-focused instructions.
* Add - Implements the Single Payment Element feature for the new checkout experience on the block checkout page.
* Dev - Additional replacements for payment method constant values on the backend.
* Fix - Improves the checking for existing customer attribute when retrieving a payment method that may be detached from a subscription.
* Fix - Reverts the default value for the `capture_method` property to avoid breaking Amazon Pay when creating a payment intent.
* Add - Adds a new feature flag to handle the Single Payment Element feature.
* Dev - Moves the method to check if the subscriptions extension is enabled to a new helper class.
* Dev - Moves and refactor some of the UPE-related code to make Single Payment Element development easier.
* Add - Add logging of IP address issues when setting up mandate data.
* Fix - Fixes a fatal error that might happen when a payment method ID cannot be retrieved during the processing of an order (new checkout experience).
* Dev - Generates a code coverage report for PHP Unit tests as a comment on PRs.
* Add - Adds Stripe specific information to the System Status Report data.
* Fix - Fixes a fatal error that might happen during extension install due to missing Amazon Pay default settings data, when registering the settings route.
* Dev - Adds the payment method constants to the payment methods map file (frontend side).
* Add - Adds a new notice for store admins when there are subscriptions without a payment method attached.
* Fix - Hides "pay" and "cancel" buttons on the order received page when an Amazon Pay order is pending, since it may take a while to be confirmed.
* Fix - Prepare the redirect URL at the end of 'process_payment' method.
* Fix - Fix uncaught error in block editor when the new checkout experience is enabled.
* Fix - Fix error when processing a subscription via Amazon Pay.
* Fix - Make Amazon Pay compatible with upfront pre-orders.
* Add - Include minimum amounts in the capture_terminal_payment endpoint when a capture fails.
* Dev - Fix changelog action
* Tweak - Map feature flags into a standard array for easier maintenance.
* Dev - Fix QIT Tests GitHub workflow.
* Fix - Fix issue where payment methods do not refresh after address changes.
* Add - Bacs: Process Payment with Saved Bank Details
* Tweak - Update payment method logos on the checkout page.
* Update - Refactor unsupported deferred intent in the blocks checkout.
* Add - Use idempotency keys when creating payment intents, to help prevent duplicate charges for a single order.
* Fix - Allow to save card during checkout with account creation.
* Add - Add BLIK LPM feature flag.
* Fix - Skip unnecessary save step when already using a saved payment method for legacy checkout.
* Fix - Avoid duplicate payment method element for classic checkout.
* Fix - ACSS: Handle errors and edge cases.
* Add - Add subscriptions support to Bacs.
* Update - Add tracks events for payment method settings updates.
* Fix - Fix issue where Legacy Checkout settings get overwritten with old value.
* Add - Add WooCommerce Pre-Orders support to Bacs.
* Tweak - Fix background in express checkout settings.
* Fix - Prevent potential duplicate renewal charges by ensuring subscription integration hooks are only attached once per Gateway ID
* Update - Update Amazon Pay icon to use image from WooCommerce Design Library.
* Add - Show upcoming legacy checkout experience deprecation notice.
* Fix - Fix variable dump in ACH customer error message when retrying a payment.

2025-02-13 - version 9.2.0
* Fix - Fix missing product_id parameter for the express checkout add-to-cart operation.
* Fix - Fix the quantity parameter for the express checkout add-to-cart API call.
* Dev - Replaces part of the StoreAPI call code for the cart endpoints to use the newly introduced filter.
* Fix - Clear cart first when using express checkout inside the product page.
* Fix - Avoid Stripe timeouts for the express checkout click event.
* Fix - Switch booking products back to using non-StoreAPI add-to-cart methods.
* Dev - Add new E2E tests for Link express checkout.
* Add - Add Amazon Pay to block cart and block checkout.
* Fix - Remove intentional delay when displaying tax-related notice for express checkout, causing click event to time out.
* Fix - Fixes an issue when saving Bancontact and iDEAL methods with SEPA Direct Debit disabled.
* Dev - Introduces new payment method constants for the express methods: Google Pay, Apple Pay, Link, and Amazon Pay.
* Fix - Prevent an express checkout element's load errors from affecting other express checkout elements.
* Tweak - Process ECE cart requests using the Blocks (Store) API.
* Add - Adds a new setting to toggle saving of Bancontact and iDEAL methods as SEPA Debit.
* Add - Wrap Amazon Pay in feature flag.
* Fix - Allow the saving of Bancontact tokens when SEPA is disabled.
* Tweak - Use WC Core's rate limiter on "Add payment method" page.
* Add - New Amazon Pay payment method in the Stripe Express Checkout Element for the classic, shortcode (classic) checkout, product, and cart pages.
* Dev - Introduces new payment intent status constants for the frontend.
* Fix - Fix Stripe customer creation when using the Blocks API for express checkout.
* Add - Add new payment processing flow using confirmation tokens.
* Dev - Adds new logs to identify why express payment methods are not being displayed.
* Fix - Fixes a fatal error when editing the shortcode checkout page with an empty cart on PHP 8.4.
* Fix - Fixes processing of orders through the Pay for Order page when using ECE with Blocks (Store) API.
* Add - Enables the use of Blocks API for Express Checkout Element orders by default.
* Add - Adds a new filter to allow changing the user attributed to an order when paying for it through the Order Pay page.
* Fix - Fixes an error with the fingerprint property setting when using the legacy checkout.
* Fix - Fixes order attribution data for the Express Checkout Element when using the Blocks API to process.
* Tweak - Process ECE orders using the Blocks API.
* Fix - Fixes incorrect error message for card failures due insufficient funds on the shortcode checkout page (legacy).
* Fix - Fixes deprecation warnings related to nullable method parameters when using PHP 8.4, and increases the minimum PHP version Code Sniffer considers to 7.4.
* Fix - Adds support for the Reunion country when checking out using the new checkout experience.
* Add - Support zero-amount refunds.
* Fix - A potential fix to prevent duplicate charges.
* Fix - Prevent empty settings screen when cancelling changes to the payment methods display order.
* Fix - Improve product page caching when Express Payment buttons are not enabled.
* Fix - Allow editing uncaptured orders but show a warning about the possible failure scenario.
* Fix - Fetch the payment intent status on order edit page only for unpaid orders if manual capture is enabled.
* Fix - Error when changing subscription payment method to a 3D Secure card while using a custom checkout endpoint.
* Fix - Fixes the webhook order retrieval by intent charges by adding an array check.
* Add - Add total tax amount to metadata.
* Update - Update the translation for payment requests settings section notice.
* Add - Add Amazon Pay to settings express checkout section.
* Add - Add Amazon Pay customize express checkout page.
* Fix - Improve the appearance of Stripe elements in checkout pages to match the store theme.
* Fix - Hide ECE button for synced subscription variations.
* Fix - Use the original shipping address for Amazon Pay pay for orders.
* Tweak - Improve slow query for legacy SEPA subscriptions on WC status tools page by caching the data.
* Tweak - Improve settings page load by delaying oauth URL generation.
* Tweak - Update the Woo logo in the Configure connection modal
* Add - Add currency restriction pill on Amazon Pay.
* Tweak - Improve settings page load by avoid account cache clearing on every page load.
* Fix - Express checkout methods dependency.

2025-01-10 - version 9.1.1
* Fix - Fixes the webhook order retrieval by intent charges. The processed event is an object, not an array.
* Fix - Payment request button fails to display when the legacy checkout experience is enabled.
* Fix - Resolves the payment element loading issue in the legacy checkout experience.

2025-01-09 - version 9.1.0
* Fix - Fixes the new checkout experience not being enabled by default due to conflict with a migration.
* Fix - Prevents duplicated credit cards to be added to the customer's account through the My Account page, the shortcode checkout and the block checkout.
* Fix - Return to the correct page when redirect-based payment method fails.
* Fix - Show default recipient for Payment Authentication Requested email.
* Fix - Correctly handles IPP failed payments webhook calls by extracting the order ID from the payment intent metadata.
* Dev - Fix lint issues raised by WordPress code standards.
* Fix - Fix ECE crash in classic cart and checkout pages for non-English language sites.
* Fix - Correctly handles UK postcodes redacted by Apple Pay.
* Tweak - Avoid re-sending Processing Order customer email when merchant wins dispute.
* Fix - Allow the saving of iDEAL tokens when SEPA is disabled.
* Fix - Fixes the incompatibility notice in editor due missing style property when instantiating Stripe payment methods.
* Dev - Updates the GitHub caching action (`actions/cache`) to v4 due deprecation.
* Fix - Don't update canceled order status to on-hold when a dispute is opened.
* Fix - Correctly sets the dispute opened note when a dispute does not require any further action.
* Add - Display Multibanco payment instruction details in Order Received page and Order Confirmation email.
* Tweak - Add the transaction limit information to the Afterpay/Clearpay method when listing payment methods.
* Tweak - Add transaction threshold information to Affirm when listing payment methods.
* Fix - Handles additional fields when checking out using ECE on the block checkout.
* Dev - Introduces new payment method name constants for the frontend.
* Dev - Improves the missing intent params error log by appending the payment information array.
* Tweak - Improve error message displayed when payment method creation fails in classic checkout.
* Tweak - Display email address for Link saved payment methods.
* Fix - Only update order status for a Radar review closed event when the order was already captured.
* Dev - Introduces a new class with payment intent statuses constants.
* Add - Correctly handles charge expired webhook events, setting the order status to failed and adding a note.
* Fix - Allow account creation on checkout, if enabled, when purchasing subscriptions using ECE.
* Tweak - Add empty check for cart when checking for allowed products for express checkout.
* Tweak - Improve webhook status related messages on the settings page.
* Update - Prevent editing of orders awaiting payment capture.
* Add - Introduce locking and unlocking in refund flow to prevent double refund due to race condition.
* Dev - Add a GitHub Action workflow to run QIT E2E Integrations tests.
* Fix - Check billing interval and period to set in mandate options.
* Fix - Check order currency on pay for order page to display supported payment methods.
* Update - Migrate payment request settings data to express checkout settings data.
* Update - Make the new Stripe Express Checkout Element enabled by default in all accounts.
* Fix - Duplicate emails when enabling the gateway.
* Fix - Prevent empty settings screen when cancelling changes to the payment methods display order.

2024-12-12 - version 9.0.0
* Fix - Fix 404 that happens when using ECE and 3D Secure auth is triggered.
* Fix - Set correct payment method when using Link and a card that is 3D Secure authenticated.
* Fix - Fix total calculation for custom product types when using the Payment Request Button.
* Fix - Fix order attribution metadata not included in PRBs or Express Checkout Element.
* Add - Pre-fill user email and phone number for Link in the Payment Element.
* Remove - Remove Link autofill modal feature.
* Update - Improve accuracy of webhook status information displayed in settings page.
* Tweak - Standardize ECE Express payment buttons on Pay for Order page to match cart and checkout itemization behavior.
* Tweak - Remove duplicate notice about the new checkout experience.
* Tweak - Include page URL information in the SSL-required log for the Stripe Express Checkout Element.
* Fix - Fix ECE modal not loading on pay for order page when coupon is applied.
* Fix - Do not load express payment buttons on switch subscription page.
* Fix - Resolve a fatal error by casting product price and subscription sign up fee to 'float' while adding them.
* Fix - Return 'is_live' as true in account summary response when test mode is disabled in gateway settings and charge is enabled in Stripe account.
* Fix - Prevents notices being displayed on WordPress 6.7 due to loading translations too early (only shown on stores with WP_DEBUG enabled).
* Fix - Prevent showing the shipping options on express checkout modal for virtual product variations.
* Fix - Do not assume payment is using a saved card when retrying a failed payment.
* Tweak - Update links to plugin documentation and Stripe documentation.

2024-11-14 - version 8.9.0
* Update - Enhance webhook processing to enable retrieving orders using payment_intent metadata.
* Dev - Minor updates to the webhook handler class related to payment method names constants.
* Tweak - Improve error message displayed when payment method creation fails in classic checkout.
* Dev - Replace two occurrences of payment method names with their constant equivalents.
* Fix - Hide express checkout when credit card payments are not enabled.
* Fix - Fix issues when detaching payment methods on staging sites (with the new checkout experience enabled).
* Fix - Display a notice if taxes vary by customer's billing address when checking out using the Stripe Express Checkout Element.
* Tweak - Makes the new Stripe Express Checkout Element enabled by default in new accounts.
* Dev - Add multiple unit tests for the Stripe Express Checkout Element implementation (for both frontend and backend).
* Fix - Check if taxes are enabled when applying ECE tax compatibility check.
* Fix - Fix ECE error when initial address on load is not defined as a shipping zone.
* Fix - Corrected card brand capitalization on the My Account → Subscription page.
* Fix - Displays a specific message when an authentication error occurs during checkout for 3DS cards (shortcode version).
* Fix - Show 'Use a New Payment Method' radio button for logged in users only when card saving is enabled.
* Fix - Fix the display and usage of the Link payment method on the shortcode checkout page with the Stripe Express Checkout Element.
* Fix - Fix payment methods count on settings page.
* Update - Improve Express Payment button previews on the edit Block Checkout and Cart pages for Google Pay and Apple Pay.
* Tweak - Add error logging in ECE critical Ajax requests.
* Add - Add support for Stripe Link payments via the new Stripe Checkout Element on the block cart and block checkout pages.
* Add - Add support for Stripe Link payments via the new Stripe Checkout Element on the product, cart, checkout and pay for order pages.
* Tweak - Do not load ECE button if the total amount is 0.
* Add - Show ECE button preview on settings page.
* Tweak - Remove the subscription order notes added each time a source wasn't migrated.
* Tweak - Update ECE default button type.
* Fix - Fix position of ECE button on shortcode cart page.
* Fix - Call ECE specific 'paymentFailed' function only when payment request fails.
* Fix - Fix issue in purchasing subscriptions when the store has no shipping options.

2024-11-07 - version 8.8.2
* Fix - Prevent marking renewal orders as processing/completed multiple times due to handling the Stripe webhook in parallel.
* Dev - Refactor lock_order_payment() to use order meta instead of transients.
* Update - Process successful payment intent webhooks asynchronously.

2024-10-28 - version 8.8.1
* Tweak - Disables APMs when using the legacy checkout experience due Stripe deprecation by October 29, 2024.
* Fix - Prevent marking orders on-hold with order note "Process order to take payment" when the payment has failed.
* Fix - Prevent subscriptions from being marked as "Pending" when a customer attempts to change their payment method to a declining card.
* Fix - Delay updating the subscription's payment method until after the intent is confirmed when using the new checkout experience.
* Fix - Display a success notice to customers after successfully changing their subscription payment method to a card that required 3DS authentication.

2024-10-17 - version 8.8.0
* Fix - Update URL and path constants to support use of symlinked plugin.
* Tweak - Disable ECE when cart has virtual products and tax is based on customer billing or shipping address.
* Fix - Fix the usage of coupons and the total shipping amount when using the Express Checkout Element on the shortcode checkout.
* Fix - Fixes some JS console errors when making a purchase with the Stripe Express Checkout Element on the shortcode checkout.
* Fix - Updates the display logic for the OAuth re-connect promotional surface to follow the latest changes made to the connection settings object.
* Fix - Remove unexpected HTML in error message for shortcode checkout.
* Fix - Ensure ordering for Stripe payment methods is saved even when setting up from scratch.
* Add - Implemented the "Update all subscriptions payment methods" checkbox on My Account → Payment methods for UPE payment methods.
* Add - Add support for the new Stripe Express Checkout Element on the block cart and checkout page.
* Add - Add support for the new Stripe Express Checkout Element on the shortcode checkout page.
* Add - Add support for the new Stripe Express Checkout Element on the shortcode cart page.
* Add - Add support for the new Stripe Express Checkout Element on the pay for order page.
* Add - Add support for the new Stripe Checkout Element on the product page.
* Dev - Introduces a new class with payment methods constants.
* Dev - Introduces a new class with currency codes constants.
* Dev - Improves the readability of the redirect URL generation code (UPE).
* Fix - Fix mandate creation for subscriptions and saved payment methods.
* Fix - Fix Google Pay address fields mapping for UAE addresses.
* Tweak - Render the Klarna payment page in the store locale.
* Tweak - Update the Apple Pay domain registration flow to use the new Stripe API endpoint.
* Fix - Fix empty error message for Express Payments when order creation fails.
* Fix - Fix multiple issues related to the reuse of Cash App Pay tokens (as a saved payment method) when subscribing.
* Fix - Move charge related code to separate try-catch to prevent renewal failure.
* Fix - Corrected translation text domain in UPE checkout integration.
* Fix - Resolve an issue where Stripe Payment Method API calls passed the token's database ID instead of the Stripe ID.
* Fix - Pre-orders set to pay upon release were remaining pending when attempting to pay using Stripe.
* Fix - Ensure subscription renewal order statement descriptors include the order number suffix.
* Fix - Resolved an issue which caused the WeChat Pay payment icon to not be displayed on shortcode checkout pages.
* Fix - Set order payment method title to the customizable title setting rather than the default label.
* Fix - Update Cash App payments to avoid confirming on creation, resolving issues with generic payment failures in live mode.
* Fix - Switch Google Pay and Apple Pay PRB flow to create PaymentMethod (pm_) instead of Source (src_), utilizing deferred intent processing.
* Tweak - Add order lock for redirect payments.
* Fix - Missing Stripe Fee and Stripe Payout details on orders that were captured manually.
* Fix - Allow legacy `src_` payment methods linked to a saved credit card to be displayed on the checkout and My Account pages when the new checkout experience is enabled.

2024-09-16 - version 8.7.0
* Add - Introduces a new promotional surface to encourage merchants with the legacy checkout experience and APMs enabled to use the new checkout experience.
* Fix - Prevent duplicate failed-order emails from being sent.
* Fix - Support custom name and description for Afterpay.
* Fix - Link APM charge IDs in Order Details page to their Stripe dashboard payments page.
* Fix - Fix Indian subscription processing by forcing the recreation of mandates during switches (upgrading/downgrading).
* Fix - Add back support for Stripe Link autofill for shortcode checkout.
* Fix - Fix undefined method error caused by settings refactor when connecting Stripe account.
* Fix - Fix multiple compatibility issues and deprecation warnings when running the extension on PHP 8.1.
* Fix - Re-connect promotional surface blinking after disappearing for merchants that have already connected their Stripe account.
* Fix - Fix possible fatal errors when Stripe settings format is invalid during account connection.
* Fix - Clear webhook state after reconfiguring webhooks to remove outdated error and success statuses.
* Fix - Prevent payment methods from being detached from Stripe customers on non-production sites when a WP user is deleted with the new checkout experience enabled.
* Add - Log incoming webhook events and their request body.
* Add - Show UPE payment methods in saved order on block checkout page.
* Add - Display UI elements for connection type and expired keys status for Stripe accounts linked via the WooCommerce Stripe App.
* Tweak - Delete the notice about the missing customization options on the updated checkout experience.
* Fix - Prevent fatal error when canceling uncaptured orders by ensuring refunds array is expanded in Stripe API response.
* Fix - Fix error in saving settings when express payment methods are disabled.
* Fix - Catch error when getting intent from order.
* Fix - Handle undefined array key when no matching customer account is found when guest customers checkout.
* Tweak - Update capabilities to payment methods mapping.
* Fix - Address QIT Security test errors.
* Fix - Address QIT PHPStan test errors.
* Update - Specify the JS Stripe API version as 2024-06-20.
* Tweak - Use order ID from 'get_order_number' in stripe intent metadata.
* Fix - Ensure payment tokens are detached from Stripe when a user is deleted, regardless of if the admin user has a Stripe account.
* Fix - Address Klarna availability based on correct presentment currency rules.
* Fix - Use correct ISO country code of United Kingdom in supported country and currency list of AliPay and WeChat.
* Fix - Prevent duplicate order notes and emails being sent when purchasing subscription products with no initial payment.
* Add - Display an admin notice on the WooCommerce > Subscriptions screen for tracking the progress of SEPA subscriptions migrations after the legacy checkout is disabled.
* Add - Introduce a new tool on the WooCommerce > Status > Tools screen to restart the legacy SEPA subscriptions update.
* Fix - Remove the Stripe OAuth Keys when uninstalling the plugin.
* Fix - Resolve an error for checkout block where 'wc_stripe_upe_params' is undefined due to the script registering the variable not being loaded yet.

2024-08-09 - version 8.6.1
* Tweak - Improves the wording of the invalid Stripe keys errors, instructing merchants to click the "Configure connection" button instead of manually setting the keys.
* Add - Includes a new promotional surface to encourage merchants to re-connect their Stripe account using the new flow.
* Add - Added filter to enable updating Level 3 data based on order data.
* Add - Replace account key sharing and replace it with an OAuth connect flow allowing users to connect their Stripe account automatically without the need to find keys.
* Add - Indicate the activation status of each payment method individually, instead of using a general notice.
* Fix - JS error when billing country field does not exist on the payment method page.
* Fix - Prevent multiple instances of the "Update the Payment Method" checkbox from displaying on the My Account > Payment Methods page when using the legacy checkout experience.
* Fix - Prevent duplicate customer creation during guest checkout.
* Fix - Hiding Multibanco payment method when the Stripe account country is not supported.
* Fix - Display the payment decline reason on the checkout when using Cash App or WeChat.
* Fix - Re-enable the "Place order" button on the block checkout after closing the WeChat or Cash App payment modal.
* Fix - When SEPA tokens are added via the My Account > Payment methods page, ensure they are attached to the Stripe customer.
* Fix - Clear the saved Stripe Link payment methods when a customer cache is cleared to ensure cached methods are updated promptly.
* Fix - Display Stripe Link payment methods correctly in both Block Checkout and My Account pages.
* Fix - Resolve an error when adding a saved card payment method in My Account when Stripe Link is enabled.
* Fix - Resolved an error when using 3D Secure-enabled cards with Stripe Link enabled.
* Fix - Corrected setup intent payment method types to include 'link' when Stripe Link is enabled, resolving errors during subscription signups.
* Fix - Resolved an issue where changing the payment method for subscriptions failed after 3D-Secure authentication.
* Fix - Prevent displaying the default admin description on the checkout page when a payment method description is empty.
* Fix - Adds back the ability to perform direct refunds for giropay orders via the order details page.
* Fix - After configuring webhooks automatically ensure only the latest webhook endpoint is active, deleting duplicates configured manually.
* Fix - Resolved PHP errors related to detaching payment methods after failed 3D-Secure challenges.
* Tweak - Minor text updates to webhook-related configuration labels and buttons.
* Tweak - Improve UX by using the 3DS verification modal to confirm setup intents for subscription sign-ups, ensuring customers stay on the checkout page.
* Tweak - Display a notice when the Stripe connect URL is not available.
* Fix - Prevent adding multiple copies of the same order notes.
* Tweak - Automatically configure webhooks after completing the OAuth Stripe flow.
* Tweak - Don't process webhooks when the webhook secret isn't set in the store.

2024-07-22 - version 8.5.2
* Fix - Fixed errors when using Link to purchase subscription products that could lead to duplicate payment attempts.
* Fix - Prevent failures creating SetupIntents when using a non-saved payment method on the Legacy checkout experience.
* Fix - Ensure immediate balance transaction assignment for subscription renewals by specifying capture_method => automatic in Stripe payment intents.
* Dev - Bump L-2 versions for PHP tests.
* Dev - Bump WordPress "tested up to" version to 6.6.

2024-07-12 - version 8.5.1
* Fix - Fixed fatal error caused by non-existent class.

2024-07-11 - version 8.5.0
* Tweak - Remove Giropay from the list of payment methods (for all versions) due deprecation.
* Tweak - Additional visual improvement for the webhook configuration notice.
* Add - Allow changing display order of payment methods in the new checkout experience.
* Add - Update the payment method associated with a subscription to a PaymentMethod when it's using a Stripe Source that was migrated to PaymentMethods.
* Fix - Prevent subscriptions using Legacy SEPA from switching to Manual Renewal when disabling the Legacy experience.
* Tweak - Add a notice in checkout for Cash App transactions above 2000 USD to inform customers about the decline risk.
* Tweak - Improve the display of warning messages related to webhook configuration.
* Fix - When using a saved payment method, update the payment method's address immediately upon checkout. Fixes issues where Stripe may throw address validation errors.
* Tweak - Add a statement descriptor preview for Cash App Payments.
* Add - Allow customizing the title and description of the UPE payment methods.
* Fix - Ensure payments via redirect are processed through the webhook if the redirect never occurs. Resolves issues of orders being left as pending payment.
* Add - Introduce a way for store managers to automatically configure webhooks on their Stripe account with a single button in the admin settings.
* Fix - Ensure subscriptions purchased with iDEAL or Bancontact are correctly set to SEPA debit prior to processing the intitial payment.
* Tweak - Stripe API version updated to support 2024-06-20.
* Fix - Ensure SEPA tokens are attached to customers in the legacy checkout experience when the payment method is saved. This addresses subscription recurring payment "off-session" errors with SEPA.
* Tweak - Limit the configure webhooks button to 1 click per minute to prevent multiple webhook creations.
* Fix - Address Klarna currency rules to ensure correct presentment and availability based on merchant and customer locations.
* Fix - Prevent saved SEPA Sources from being displayed as available payment methods when the Updated checkout experience is enabled.

2024-06-13 - version 8.4.0
* Tweak - Resets the list of payment methods when any Stripe key is updated.
* Fix - Removes the list of saved payment methods when the setting is disabled.
* Tweak - Update WooCommerce.com docs links.
* Fix - Correctly setting the preferred card brand when creating and updating a payment intent.
* Tweak - Update WordPress.org screenshots and captions.
* Fix - Added a feedback message + redirection back to cart when a Cash App payment fails.
* Fix - Remove the duplicated customization notice in the settings screen.
* Add - Include Cash App as a payment method for stores using the updated checkout experience.
* Fix - Fixed fatal errors with subscription helper methods when subscriptions classes (from WooCommerce Subscriptions) are not available.
* Add - Add a new dismissible banner to promote Stripe products to the settings page.
* Fix - Hiding BNPL payment methods when the Stripe account country is not supported.
* Fix - Resolved checkout error with UPE when using test mode customer in live mode or vice versa.
* Fix - Handle checkbox type required fields correctly on the shortcode checkout when paying with Google Pay/Apple Pay.
* Tweak - Remove unused confirmation modal a capability properties.
* Fix - Resgister script on the checkout page only when the gateway is enabled.
* Tweak - Allow to enable/disable payment methods irrespective of currency requirement.
* Add - Include WeChat Pay as a payment method for stores using the updated checkout experience.
* Add - Show currency requirement details in a popover.
* Fix - Resolve invalid recurring shipping method errors when attempting to purchase multiple subscriptions with Apple Pay or Google Pay.
* Fix - Deprecation errors on PHP 8.2 caused by using the deprecated constant FILTER_SANITIZE_STRING.
* Update - Declare compatibility with the Cart and Checkout blocks.

2024-05-30 - version 8.3.1
* Fix - Error on some environments due to the parameter in the WC_Stripe_UPE_Payment_Gateway constructor method.
* Fix - Prevents orders purchased using a 3DS card being stuck as "pending payment" for stores with the Legacy Checkout Experience setting enabled.

2024-05-23 - version 8.3.0
* Add - Add a new dismissible banner to promote Stripe products to the settings page.
* Add - Include Afterpay (Clearpay in the UK) as a payment method for stores using the updated checkout experience.
* Add - Include Affirm as a payment method for stores using the updated checkout experience.
* Add - Include Klarna as a payment method for stores using the updated checkout experience.
* Add - Additional information is displayed on the "Payment methods" page when listing co-branded credit cards.
* Fix - Resolved an error that could prevent purchasing subscriptions that have a capital letter in the billing period. eg "Year" instead of "year".
* Fix - The preferred card brand is used when paying with a co-branded credit card.
* Fix - Prevent duplicate stripe meta data on orders caused by processing redirect payments and webhooks simultaneously.
* Fix - Processing a refund of a non-card payments (i.e. iDeal, giropay) through the Stripe dashboard was not showing as refunded in WooCommerce for stores with UPE enabled.
* Fix - Prevent orders that require manual review in Stripe being marked as processing in WooCommerce before approval.
* Tweak - Credit card brand selection disabled when the "Legacy checkout experience" is enabled.
* Tweak - Improve performance with handling redirect payments by not constructing every payment gateway on each page load.
* Tweak - Adds the tracking of a selected card brand when paying using co-branded credit cards.
* Tweak - Improve the order note message recorded when a subscription-renewal order payment fails.

2024-04-11 - version 8.2.0
* Tweak - Improve the display of the Stripe account ID in the settings page.
* Add - Enable custom styling of the Payment Elements for stores using the updated checkout experience.
* Fix - Alipay icon not being displayed on the Block checkout page.
* Fix - Ensure the hold stock setting does not cancel pending stripe orders that are still waiting for customer action (eg confirm 3DS or complete payment redirect).
* Fix - Prevent checkout errors when customers with one-word names process payment using Apple Pay or Google Pay.
* Tweak - Remove the functionality for saving the customized statement descriptors.
* Tweak - Remove unused WC_Stripe_Old_Settings_UPE_Toggle_Controller class and related scripts.
* Update - Save the Stripe default appearance settings in a transient instead of the browsers local storage.
* Tweak - Update Link by Stripe branding assets.

2024-04-04 - version 8.1.1
* Fix - Do not hide PRB on cart and product page when there are required custom checkout fields.
* Fix - Issue with subscription renewal when the `start_date` of the mandate is set in the past.

2024-03-28 - version 8.1.0
* Add - Include Stripe account details to the settings page.
* Add - Include Stripe API version in logs.
* Add - Enable the updated checkout experience (UPE) by default for new accounts.
* Add - Banner encouraging the transition to the updated checkout experience.
* Fix - Hiding the refund button and replacing it with a disabled "Refunding unavailable" button when the order is not captured.
* Fix - Incorrect payment amount sent to Stripe when using three-decimal currencies.
* Fix - PHP 8.2 deprecation warnings within the WC_Stripe_UPE_Payment_Method class.
* Fix - Resolved an issue with saving plugin settings when bank descriptor value is invalid.
* Fix - Issue with rendering Sepa on checkout page when card is disabled in non-UPE mode.
* Fix - Resolved an issue in processing subscription payments with currencies not supported for mandate data.
* Fix - Resolved an issue with subscription when attaching customers directly without 3DS due to Indian payment regulations.
* Fix - Error saving Stripe settings when testmode is enabled without any Stripe test API keys saved yet.
* Tweak - Update the Stripe JS library to 1.36.0.
* Tweak - Removed the "Early Access" pill and "Disable" option from the Stripe payment methods dropdown menu.
* Tweak - Remove unused UPE title field.
* Tweak - Add WooCommerce as a plugin dependency.
* Tweak - Update the interface for the setting to toggle the New checkout experience to make it relative to the Legacy one instead.

2024-03-13 - version 8.0.1
* Fix - Resolved failing card payments when `statement_descriptor` parameter is used.

2024-02-29 - version 8.0.0
* Add - Implement deferred payment intents for the Payment Element (or UPE), used on the updated checkout experience.
* Add - Implement split Payment Elements (or split UPE), splitting the payment method types under the updated checkout experience into different gateways.
* Add - Update the interface for customizing Stripe payment methods.
* Fix - When toggling on the Stripe gateway from the payment methods list, don't incorrectly redirect the merchant to Stripe settings when test mode is enabled.
* Fix - Hiding the expandable menu for UPE entirely when the feature is disabled.
* Fix - Critical error when deactivating the extension after deactivating WooCommerce.
* Fix - Add missing fee and payout information to the order details page in admin.
* Fix - Hiding "Early Access" label and "Refresh payment methods" button when UPE is disabled.
* Fix - Prevent undefined $latest_charge property warnings when signing up to subscriptions with no initial payment (eg free trials).
* Fix - Wrong status when purchasing a pre-order product with a new payment method.
* Tweak - Orders with `trash` status are not retrieving anymore when calling `get_order_by_intent_id` function.
* Tweak - Hide Stripe secret keys in the UI.
* Fix - Resolved failing payments when statement descriptor prefix starts with a number.

2024-02-12 - version 7.9.3
* Fix - Resolved failing payments when statement descriptor only contains the order number.

2024-02-07 - version 7.9.2
* Fix - Resolved an issue that could cause card payments to fail when providing a Bank statement description with the `statement_descriptor` parameter.
* Tweak - The Bank statement description settings in the Stripe plugin settings are no longer editable. The description is now automatically pulled from the Stripe account settings.

2024-01-16 - version 7.9.1
* Fix - PHP fatal error when updating a user with saved tokens from the WP Dashboard.

2024-01-11 - version 7.9.0
* Tweak - Updated supported/tested versions of WordPress and WooCommerce.

2023-12-28 - version 7.8.1
* Fix - Check if a valid order of tye WC_Order is returned before calling `get_meta` function.

2023-12-21 - version 7.8.0
* Fix - Resolved an issue with Stripe errors not being displayed on the checkout page for stores using custom payment method elements.
* Fix - Resolved a PHP fatal error occurring on stores that removed `WC_Email_Failed_Order` from the list of WC email classes while attempting to send the failed order email.
* Fix - Prevent incorrect totals displayed in Google Pay and Apple Pay when purchasing a virtual sychronised subscription from the product page.
* Fix - Hide the Google Pay and Apple Pay buttons on variable product pages, if the selected variation is not supported by Payment Request buttons.
* Fix - Don't require shipping when purchasing a virtual variable subscription product using Google Pay and Apple Pay.
* Fix - When using Payment Request buttons, fix $0 total for stores using a customized product page that adds the variation product ID directly into the cart.
* Fix - MultiBanco: HTML tags to print as expected on the Order Confirmation page, and "Thank you for your order" email.
* Tweak - Improve compatibility with PHP 8+.
* Tweak - Adjusted default height of express payment button from 40px to 48px. Existing stores retain their current button height settings.
* Tweak - Removed '- OR -' separator and updated placement of Express payment buttons (eg Apple Pay and Google Pay) on cart and product pages to align with WooCommerce Express payment button standards.

2023-11-09 - version 7.7.0
* Add - Prevent saving the bank statement descriptor if it contains non-Latin characters.
* Fix - Display the Payment Request Buttons' error message in the classic checkout page.
* Fix - Prevent escaping the anchor tag under the Apple Pay domain registration failure notice.
* Fix - Use the card's payer name for Payment Request Buttons when the billing name isn't available.
* Fix - Display the Payment Request Buttons according to the selected settings.
* Tweak - Record Track events during the onboarding process.
* Tweak - Prevent Google Pay and Apple Pay from showing up in the UPE card Element.
* Tweak - Use admin theme color in selectors.
* Tweak - Refactor `is_valid_pay_for_order_endpoint` for better performance.
* Fix - Catch request failure errors.
* Tweak - Add test mode notice.
* Fix - Remove ugx from the zero decimal currency list as a special case in Stripe.
* Fix - Deleting customer on staging site detaches tokens from customer in Stripe.
* Fix - Resolved an issue preventing changing a subscriptions payment method when UPE is enabled.
* Fix - Send customer billing and address details to Stripe when changing a subscriptions payment method.
* Add - Attach billing details to customers created in Stripe to support Indian merchants in processing international transactions.
* Fix - Prevent "Invalid recurring shipping method" errors when attempting to purchase a synchronised subscription with payment request buttons.
* Fix - When using Payment Request buttons on variable product pages, ensure shipping is properly calculated after the customer closes the window and changes variations.
* Fix - Purchasing a virtual variable product using Apple Pay and Google Pay on the product page will no longer require shipping details.

2023-10-31 - version 7.6.2
* Deprecate - Remove Sofort support for new accounts.
* Fix - Add Order Key Validation.

2023-10-17 - version 7.6.1
* Fix - Add nonce check to OAuth flow.

2023-09-14 - version 7.6.0
* Fix - PHP fatal error when saving a non-UPE payment method and the Stripe request to retrieve it fails.
* Fix - Missing mapping for formal German (de_DE_formal), Swiss German (de_CH), and informal Swiss German (de_CH_informal) locales for Stripe emails.
* Fix - Set failed order as pre order
* Tweak - Include check during the connect redirect flow.
* Tweak - Skip Apple Pay registration for accounts from India.
* Tweak - Refactor post_meta calls for HPOS compatibility.

2023-08-10 - version 7.5.0
* Fix - Unable to process 0 amount subscription.
* Fix - Resolved an issue that prevented customers using saved `card_` prefixed payment methods on checkout.

2023-07-31 - version 7.4.2
* Fix - Add order key validation for UPE.
* Fix - Enhance query parameters validation in redirected requests.
* Fix - Resolved an issue with orders getting stuck on Pending Payment status when UPE is enabled and customer creates account during checkout.
* Fix - Stripe source and customer tokens not being saved on subscriptions when UPE is enabled and subscription is purchased by guest customer.
* Fix - Make the gateway unavailable when using it in live mode without SSL.
* Fix - Remove Stripe Link PRB when disabled from settings.
* Fix - Lookup existing refunds by refund ID when processing webhooks.
* Fix - Exclude Link from disable UPE confirmation modal in settings.
* Fix - Fix JS (ES5) compatibility on older browsers for the shortcode checkout.

2023-05-30 - version 7.4.1
* Fix - Add Order Key Validation.
* Fix - Add sanitization and escaping some outputs.

2023-05-03 - version 7.4.0
* Fix - Issue processing renewals for subscriptions without parent orders.

2023-04-12 - version 7.3.0
* Fix - The payment requests are updated when product add-ons are changed (Product Add-ons extension).
* Add - Support eMandates for recurring payments made in INR

2023-03-09 - version 7.2.0
* Fix - Hide PRB box in checkout block when PRBs disabled.
* Fix - Fix semi-hidden modal inline notices.

2023-02-08 - version 7.1.0
* Fix - Replace some post meta methods with equivalent methods compatible with HPOS.
* Fix - Rare cases of payment processing failing when webhooks arrive before customer is redirected when UPE is enabled will no longer occur.
* Tweak - Update minimum supported versions for WordPress, WooCommerce, and PHP.
* Update – Declare this plugin compatible with High-Performance Order Storage (HPOS).

2023-01-11 - version 7.0.2
* Fix - Expand charges object from incoming webhooks using Stripe API version 2022-11-15.
* Fix - Expand refunds on charge object from incoming webhooks using Stripe API version 2022-11-15.
* Fix - Fix critical error on PHP 8+ when php_uname() is disabled

2022-11-11 - version 7.0.1
* Fix - Issue where subscription renewal payments were being charged twice no longer present.

2022-11-10 - version 7.0.0
* Add - Update Express Checkout section UI.
* Add - Auto-complete first and last name on checkout form when using Link payment method.
* Add - Allow subscription orders to be paid with Link payment method.
* Add - Add inbox notification for Link payment method.
* Tweak - Adjust texts and links in WC admin advanced settings.
* Add - Restrict the Link payment method only for US merchants.

2022-10-19 - version 6.9.0
* Tweak - Remove remaining traces of old Stripe settings.
* Add - Add Boleto expiration setting.
* Add - Declare incompatibility with HPOS.

2022-09-28 - version 6.8.0
* Fix - Minor adjustments for Custom Order Tables compatibility.
* Fix - Upgrade from Payment Element beta.

2022-09-06 - version 6.7.0
* Fix - Check payment method before updating payment method title.
* Fix - Use the eslint config at the root of the repo.

2022-08-17 - version 6.6.0
* Fix - Fix "Pending" text instead of numeric amount on Payment Request button on iOS.

2022-08-01 - version 6.5.1
* Fix - Stripe Link missing styles and logo for email trigger button.
* Fix - Stripe Link fatal error on `get_upe_enabled_payment_method_ids` method.
* Fix - Remove Link beta headers on checkout.

2022-07-28 - version 6.5.0
* Add - Stripe Link: Add beta headers for Stripe server requests
* Add - Stripe Link payment method option in admin
* Add - Stripe Link payment method on checkout form
* Add - Stripe Link payment method on blocks checkout form

2022-06-30 - version 6.4.3
* Fix - Replace unnecessary throws with empty string when keys are invalid.

2022-06-29 - version 6.4.2
* Fix - Fix terminal location creation if site title is missing.
* Fix - Add compatibility with WooCommerce 6.6.

2022-06-01 - version 6.4.1
* Fix - Ensure proper URL formatting.

2022-05-20 - version 6.4.0
* Fix - Changed logic for how 'Enabled/Disabled' statuses are shown for payments and payouts capabilities in settings.
* Tweak - Updated the minimum supported versions of WordPress and WooCommerce.

2022-03-10 - version 6.3.0
* Tweak - Remove html from translatable strings.
* Tweak - Revert the deprecation of the 'wc_stripe_hide_payment_request_on_product_page', 'wc_stripe_show_payment_request_on_checkout', and 'wc_stripe_show_payment_request_on_cart' filters.
* Tweak - Address minor styling issues in settings.

2022-02-17 - version 6.2.0
* Add - Add onboarding payment gateway setup methods.
* Fix - Enable Stripe payment method after connecting account.
* Fix - Missing statement descriptor in account summary API when not set in Stripe.

2022-01-26 - version 6.1.0
* Tweak - Use the newly exposed LoadableMask component provided by WooCommerce Blocks to trigger the loading state for Payment Request Buttons.
* Fix - Response type for account summary API.
* Fix - Invalid response in account summary API when missing account data.
* Add - Live and test mode information in account summary API.
* Add - Add filter call when updating an existent intent (wc_stripe_update_existing_intent_request).
* Add - Add ability to test Stripe account keys' validity.
* Fix - Fixed full bank statement field description.
* Fix - Notification messages are placed on top of the account keys modal.
* Fix - Express checkout with 3DS card on product page when new checkout experience is enabled.
* Fix - Remove duplicate call to `payment_scripts`.
* Fix - Send bank statement descriptors to payment intents.

2022-01-05 - version 6.0.0
* Fix - Fixed capitalization for payment method names: iDEAL, giropay, and Sofort.
* Add - Text to explain how to enable webhooks when manually entering your API keys in the new Stripe settings.
* Tweak - Redirect to the settings tab after an account is connected.
* Tweak - Prompt message when navigating out Stripe settings with unsaved changes
* Tweak - Show toast when payment methods list is updated with new payment methods.
* Fix - JS error on checkout when Boleto method was not active.
* Fix - Fixed bug that show "Use new payment method" on pay order page when there were no saved card was.
* Tweak - Autocomplete for account keys and webhooks fields were disabled.
* Fix - The settings page is not reloaded when the user enters invalid account keys.

2021-12-09 - version 5.9.0
* Add - Add Stripe API to generate connection tokens, manage terminal locations, create customers, get account summary, capture payment.
* Tweak - Remove `_wcstripe_feature_upe` flag and all traces of old settings.
* Fix - Fix error when invalid card is used on Pay Order page.
* Fix - Fix outdated data when using Blocks Checkout.
* Add - List of payment methods that are not included for the merchant.
* Tweak - Update how the new checkout experience is enabled.
* Fix - Error on UPE checkout depending on the account keys set.
* Tweak - Hide separate credit card form setting when UPE is enabled.

2021-11-23 - version 5.8.1
* Fix - Run filters that disable Stripe JS on cart and product pages when PRBs are disabled.

2021-11-18 - version 5.8.0
* Fix - Hong Kong addresses are now mapped more thoroughly to WooCommerce addresses when paying with Apple Pay.
* Fix - Error when changing payment method for a subscription with new checkout experience.
* Fix - Payment Requests are now updated correctly when updating items in the Cart Block.
* Add - Support for WooCommerce Pre-Orders with new checkout experience.
* Fix - Stripe JS is no longer loaded on cart and product pages when PRBs are disabled on those pages.
* Tweak - Update the minimum required PHP version to 7.0 to reflect our L-2 support policy.
* Fix - Add support for MYR (Malaysian ringgit) for Alipay.
* Add - New Settings UI.
* Fix - Hide payment request button when variations of a variable product are out-of-stock.
* Add - Support for Boleto and OXXO payment methods

2021-10-20 - version 5.7.0
* Fix - Enable use of saved payment methods converted to SEPA payments.
* Tweak - "Save payment information" checkbox now has better alignment in store checkout.
* Tweak - Error notices at checkout now have more consistent design.

2021-10-06 - version 5.6.2
* Tweak - Remove animated credit card icons from payment method option on the checkout page.
* Fix - Payments for pre-orders and subscriptions with an empty source token now work as intended.

2021-10-04 - version 5.6.1
* Fix - Naming conflict with other plugins on WC_Stripe_REST_Controller.
* Fix - Fatal error on `WC_REST_Stripe_Settings_Controller` when Elementor and WooFunnels plugins are used.

2021-09-30 - version 5.6.0
* Add - Pre-release preview of new checkout experience using Stripe Universal Payment Element.
* Tweak - Removed "Branded" and "Custom label" options on Payment request buttons to align with design guidelines.
* Tweak - Converted payment request button size value to distinct options to align with design guidelines.
* Tweak - Animate supported credit card icons instead of displaying multiple icons at once.

2021-09-15 - version 5.5.0
* Tweak - Moved the `WC_Gateway_Stripe::admin_scripts` method to `WC_Stripe_Settings_Controller::admin_scripts`.
* Fix - Save payment method during 3D Secure flow for Block-based checkout.
* Fix - Show subtotal on Payment Request dialog.
* Add - Settings to control Payment Request Button locations in the Stripe plugin settings. Persists changes made through pre-existing filters, or defaults to the Cart and Product pages if no filters are in use.
* Tweak - Deprecated the 'wc_stripe_hide_payment_request_on_product_page', 'wc_stripe_show_payment_request_on_checkout', and 'wc_stripe_show_payment_request_on_cart' filters in favor of the UI-driven approach in the plugin settings.
* Add - Notice for WP & WC version compatibility check.

2021-09-01 - version 5.4.1
* Fix - Get Subscription CustomerID from Order instead of User.

2021-08-18 - version 5.4.0
* Fix - Do not ask for a Shipping Address if no Shipping Zone is defined.
* Fix - Return HTTP 204 when webhook validation fails so Stripe won't stop sending certain webhook events after too many failed validations.
* Fix - Possible use of an undefined variable `prepared_source`.
* Add - 'wc_stripe_allowed_payment_processing_statuses' filter to customize order statuses that allow payment processing in the context of 3DS payments.

2021-07-21 - version 5.3.0
* Fix - Disable Payment Request Buttons when order has to be split into multiple packages because Payment Requests do not support that use case.
* Tweak - Payment request button should guide users to login when necessary.

2021-06-11 - version 5.2.3
* Fix - Credit card icons and credit card input on custom shortcode checkout pages.

2021-06-10 - version 5.2.2
* Fix - The absence of a cart causing fatal errors when rendering the Cart or Checkout block.

2021-06-10 - version 5.2.1
* Fix - Remove calls to `has_block()` since it breaks compatibility with older versions of WordPress.
* Tweak - Use the same JavaScript configurations for the Block-based and Shortcode-based checkout flows.

2021-05-19 - version 5.2.0
* Fix - Use `get_parent` method to avoid accessing `order` subscription property directly.
* Fix - Orders won't transition to 'Refunded' state if refund can't be created.
* Fix - Normalize United Kingdom and Canada postal codes for Apple Pay.
* Fix - Subscription sign-up fees not included in total for Payment Request Button.
* Fix - Reduce requests sent to server from stripe settings page.
* Fix - Choose the appropriate version of the WooCommerce Admin Notes API based on which API is available.
* Fix - Customer information is now correctly displayed in the Stripe Payments Dashboard when a new customer checks out through the WooCommerce Checkout Block.
* Fix - Pass customer language/locale to Stripe upon creation or modification.
* Fix - Initial price for Variable Products is now correctly shown when a Payment Request is started.
* Add - Support for Credit Card payments (incl. 3DS payments) via WooCommerce Blocks; limited to WooCommerce Core product types.
* Add - Support for payments (incl. 3DS payments) paid via Payment Request Buttons in WooCommerce Blocks; limited to WooCommerce Core product types.
* Add - Support for custom and branded Payment Request Buttons when using the Cart and Checkout blocks.
* Tweak - Should customer opt to save their card, the card is now saved after a payment has been confirmed.

2021-04-07 - version 5.1.0
* Fix - Don't attempt to submit level 3 data for non-US merchants.
* Fix - Hide Payment Request Buttons when guest checkout is disabled.
* Fix - Match Payment Request states with WooCommerce states.

2021-03-17 - version 5.0.0
* Add - Display time of last Stripe webhook in settings.
* Add - wc_stripe_webhook_validate_user_agent filter to customize webhook user-agent validation.
* Fix - Payment Request Buttons for Chinese provinces in Chrome.
* Fix - Enable wc_stripe_send_stripe_receipt filter to send Stripe emails.
* Fix - Check for more errors when attaching sources to customers.

2021-02-24 - version 4.9.0
* Fix    - Add fees as line items sent to Stripe to prevent Level 3 errors.
* Fix    - Adding a SEPA payment method doesn't work.
* Fix    - Apple Pay domain verification with live secret key.
* Fix    - Display the correct accepted card branding depending on store currency and location.
* Fix    - Remove duplicate Apple Pay domain registration Inbox notes.
* Add    - Copy Apple Pay domain registration file and trigger domain registration on domain name change.
* Update - Notes and status when refunding order with charge authorization.

2021-01-28 - version 4.8.0
* Fix   - Filter more disallowed characters from statement descriptors.
* Fix   - Payment request button for Puerto Rico.
* Fix   - Handle error if country is not supported for payment request button.
* Fix   - Trim the refund reason to a max of 500 characters.
* Tweak - Display warning on webhook secret when server time is off from device time.

2020-12-22 - version 4.7.0
* Fix - Updating subscription payment methods from the "My Account" page now adds a note to the subscription.
* Fix - Link is now correctly formatted in readme.txt.
* Fix - Using SCA cards for subscriptions renewal payments now works as intended.
* Fix - Cards added under "My Account -> Payment Methods -> Add Payment Method" will now handle SCA properly.
* Fix - Changing a payment method for a subscription in "My Account -> Subscriptions" will now handle SCA properly.
* Fix - Missing space causing fatal errors for certain WooCommerce Inbox Note features.

2020-12-15 - version 4.6.0
* Tweak - Update packages for Composer 2 compatibility.
* Tweak - Use full jQuery function calls instead of soon-to-be-deprecated shorthands.
* Tweak - Use JSON.parse() instead of jQuery.parseJSON().
* Tweak - Remove holiday messaging from Apple Pay note after Dec 22.
* Fix   - Compatibility with the Stripe for WooCommerce plugin.
* Fix   - Guard against fatal errors caused by WC_Admin_Note.
* Fix   - Display error message when payment made with payment request buttons fails.

2020-11-17 - version 4.5.5
* Fix - Guard against fatal errors that may occur on inbox data store load.

2020-11-16 - version 4.5.4
* Add   - Stripe Connect OAuth.
* Tweak - Add site_url to all transactions, not just recurring ones.
* Add   - Customer's full name is now included in Stripe Customer object if available.
* Add   - Accept payments via AliPay when store currency is set to CNY.
* Tweak - Wording of Apple Pay link.
* Fix   - Serve Apple Pay domain verification file via a rewrite rule.
* Add   - Add Inbox note for Apple Pay domain verification if needed.
* Add   - Apple Pay holiday marketing notice.
* Fix   - Apple Pay: Ensure payer phone is available before attempting to access it.
* Add   - Pass payment method for renewal charges if not a source.
* Fix   - Ensure defaults are used for missing settings.
* Add   - Add shipping address to payment requests.
* Fix   - Fix the Not a valid URL notice.
* Add   - Security.md with security and vulnerability reporting guidelines.

2020-10-06 - version 4.5.3
* Fix   - Apple Pay now requires a buyer's phone number only if it's required in Appearance > Customize > WooCommerce > Checkout.
* Add   - Allow toggling secrets temporarily to visible in settings.
* Fix   - Properly display field required error when SEPA method is used.
* Tweak - Update payment request button description to include link to Stripe dashboard Apple Pay settings.
* Add   - Add off session payment intent filter, props rfair404.
* Tweak - Update contributors list.

2020-08-19 - version 4.5.2
* Fix - Allow extension to attempt to run in all countries, not just officially supported ones

2020-08-12 - version 4.5.1
* Add - Support for Bulgaria, Czech Republic, Greece, Cyprus, Malta, Slovenia
* Add - Additional metadata for order status change events when tracking is permitted

2020-06-24 - version 4.5.0
* Tweak - Improve branded Google Pay button user agent detection.
* Add   - New filter to manage the display of payment request buttons in cart.
* Fix   - Display Apple Pay button with text if branded type is text and logo.
* Fix   - Prevent branded payment request button duplication when checkout is re-calculated.
* Fix   - Payment request buttons on a single product page now correctly show the product name instead of a subtotal.
* Fix   - Quotes in variadic product attributes no longer cause payment request buttons to show only the cheapest variation.

2020-05-21 - version 4.4.0
* Tweak - Remove support for WooCommerce versions lower than 3.0.
* Tweak - Update plugin assets.
* Tweak - Improve performance on order pay screen.
* Tweak - Compress payment methods SVGs.
* Add   - Support for custom payment request button.
* Fix   - Prevent users from entering secret key in the public key field and stop it from showing if they did.
* Fix   - Revert caching layer removal to speed up My Account subscriptions tab.
* Fix   - Bug where source ID was not set resulting in an uncaught exception.
* Fix   - Collecting level 3 data triggers a warning.
* Fix   - Custom button class typo.
* Fix   - Payment Request incorrect shipping option passed.
* Fix   - Payment Requests, like Apple Pay, not initially showing correct quantity if used on Product Page.
* Fix   - State abbreviation breaks Payment Request button.
* Fix   - Stripe Payment Request button using incorrect Google Pay brand asset by adding a special branded button.
* Fix   - Move docs and support links in the plugins list page.

2020-04-08 - version 4.3.3
* Fix - Fix Payment Request issue when product attribute has quotes
* Fix - Fix "no such customer" error on checkout after the keys have been changed
* Add - Add alert for end of support WC < 3.0 in future releases
* Fix - Fix crash when used with WooCommerce Subscriptions <2.6
* Fix - Add missing customer ID to subscriptions before processing payment
* Fix - Fix transactions failing with trailing slash

2020-02-17 - version 4.3.2
* Fix - Add compatibility to payment request buttons with some of the WooCommerce Product Add-ons on the product page
* Fix - Improved compatibility for free orders with other extensions
* Add - Support for multisite when sites use different Stripe accounts
* Fix - Display a localized error message when a customer tries to save a card during checkout, but there's an error
* Add - Send level 3 credit card data for purchases when possible

2019-11-12 - version 4.3.1
* Fix - Overwrite the previous Apple Pay verification file if it has changed.
* Fix - Avoid re-mounting card elements if they are already mounted in the DOM.
* Fix - Compatibility with WooCommerce Deposits by retrieving order statuses in a different way.
* Fix - Duplicate payment notifications for subscriptions.
* Fix - Use the same customer after a new credit card has been entered.
* Fix - Google Pay buttons on subscriptions.
* Add - A filter, which allows all subscriptions' payment methods to be overwritten when adding a new payment method.

2019-10-17 - version 4.3.0
* Add - For WooCommerce Subscriptions optimize the payment flow for subsequent subscription payments when authentication may be required by using the  `setup_future_usage` parameter for the first subscription payment
* Add - Allow customer to authenticate payment even if they are not charged right away for WooCommerce Subscriptions and Pre-Orders, for example for a WooCommerce Subscription that has a free trial
* Add - When an off-session payment requires authentication, create a link for customers to come back to the store to authenticate the payment
* Add - Send an email to WooCommerce Subscription and Pre-Orders customers who need to authenticate a payment that was automatically tried on their behalf
* Add - When an off-session payment requires authentication, send an email to the admin
* Add - Admin notice about SCA-readiness
* Fix - Avoid idempotency key errors for Pre-Orders
* Fix - Use unique anchor for link about checkout styling changes

2019-10-02 - version 4.2.5
* Fix - WooCommerce Subscriptions that use only the Stripe customer ID can again be renewed

2019-09-18 - version 4.2.4
* Fix - Unclear error message when email address not completely filled in.
* Fix - Add payment request button compatibility with variable subscriptions
* Tweak - Do not show payment request button for shippable trial subscription products
* Fix - Do not copy the payment intent id when creating a subscription renewal
* Fix - Return early from check intent status if no order - props strayobject
* Fix - Extend webhook time window from 1 to 5 minutes to match Stripe client
* Update - WooCommerce 3.7 compatibility
* Update - Apple Pay Domain association file
* Update - Grandfather pre-SCA subscription renewals for SCA

2019-07-18 - version 4.2.3
* Fix - Ignore "payment failed" webhooks if they come after another payment has already succeeded for that order.
* Fix - Correctly transition an order to "On Hold" if the payment was put under review by Stripe Radar, and back to "Processing" when the review is approved.
* Tweak - Make the publishable key fields be plain text instead of "password".
* Fix - Fix successful retries of 3ds failing.

2019-06-26 - version 4.2.2
* Fix - Changing an order status to "Cancelled" or "Refunded" will no longer refund the payment, will only void the payment if it was just authorized.

2019-06-17 - version 4.2.1
* Update - Add UGX (Ugandan Shilling) to zero decimal currency list.
* Fix - CSRF verification error upon creating account on checkout.
* Fix - Duplicate emails and order notes after successful transactions.

2019-05-29 - version 4.2.0
* Update - Enable Payment Request buttons for Puerto Rico based stores.
* Update - Add support for Strong Customer Authentication (SCA) for user-initiated payments.
* Remove - Stripe Modal Checkout.
* Remove - 3D Secure settings are no longer available in the gateway settings. Use Stripe Radar instead.
* Fix - Display error messages only next to the chosen saved card.

2019-04-18 - version 4.1.16
* Deprecate - Warn about the future removal of the Modal Checkout option.
* Tweak - WC 3.6 compatibility.

2019-03-12 - version 4.1.15
* Fix - Prevent canceled webhook from processing non Stripe payments.
* Fix - "Retain Stripe Data" setting placement on WooCommerce settings page.
* Tweak - Stripe API version updated to support 2019-02-19.

2019-01-10 - version 4.1.14
* Remove - Stripe specific styling to allow themes to style accordingly.
* Tweak  - Handle error if product is not found in payment request.

2018-11-20 - version 4.1.13
* Update - WP 5.0 compatibility.

2018-10-19 - version 4.1.12
* Fix - Typo on notice banner.
* Fix - On auth/capture scenario, error can occur when completing the order in backend.

2018-10-17 - version 4.1.11
* Fix - Explicitly set 3DS source id to prevent 3DS source not charging when not required.
* Fix - Prevent Stripe JS failed live/test check from throwing JS error.
* Fix - Find order by source ID if charge ID is not found when cancelled webhook is triggered.
* Fix - Partial refund on Stripe captured charge erroneously refunding total amount.
* Fix - Capture charge on previously authorized charge, not showing Stripe fees.
* Fix - Check if payment icons are set before trying to use them.
* Fix - Can't use method in write context errors.
* Deprecate - Soft deprecated function is_pre_30 with is_wc_lt function.
* Add - Ability to update all active subscription's payment method when adding a payment.
* Add - Hook to show update all active subscription's payment method checkbox `wc_stripe_display_update_subs_payment_method_card_checkbox`.
* Add - CSS minification.
* Update - WC 3.5 compatibility.
* Update - Stripe API version to 2018-09-24.

2018-09-17 - version 4.1.10
* Fix - When 3DS card redirect status is "not_required", charge the 3DS source.
* Fix - Payment Request not validating quantity before payment sheet shows.
* Fix - Test mode info not showing when description field is left blank.
* Add - Filter for Payment Request localized parameters `wc_stripe_payment_request_params`.
* Update - Stripe API version to 2018-09-06.

2018-08-27 - version 4.1.9
* Fix - Don't display admin notices to user that cannot manage woocommerce.
* Fix - Fatal error when clicking on order link that doesn't exist.
* Fix - When capturing a charge from authorize, Stripe fees not displaying.
* Fix - Undefined property error on card type in rare cases.
* Tweak - Update SEPA IBAN to use new elements implementation.
* Add - Filter for Payment Request Button locale `wc_stripe_payment_request_button_locale`.

2018-07-19 - version 4.1.8
* Fix - 3DS payment sometimes will create additional transaction in Stripe.
* Fix - WC 2.6 with SEPA saved payment causing error on checkout.
* Update - EPS logo.

2018-06-06 - version 4.1.7
* Fix - Asynchronous payment methods such as SEPA, did not show order Stripe fees/net after payment succeed.
* Fix - Missing semicolon on a CSS style value which causes display issues in some browsers.

2018-05-31 - version 4.1.6
* Fix - Radio buttons on checkout on some themes are not aligned properly.
* Fix - False negative on SSL warning notice in admin.

2018-05-28 - version 4.1.5
* Tweak - Refactor initialization of plugin.
* Tweak - Webhook failed handler now handles all payment methods.
* Tweak - Make sure 3DS object is in pending status before redirecting.
* Tweak - CSS styling.
* Add - Username to the description field of the Stripe customer when created.
* Add - GDPR retention setting and logic.
* Fix - Payment request payments were redirected to Pay Order when it should be Order Received.
* Update - Stripe API version to 2018-05-21.

2018-05-22 - version 4.1.4
* Tweak - Improve performance when getting source id and charge id from database.
* Add - GDPR privacy support.
* Update - WC 3.4 compatibility.

2018-05-07 - version 4.1.3
* Add - Hook to manipulate payment request shipping posted values `wc_stripe_payment_request_shipping_posted_values`.
* Add - Accessibility attribute for credit card label.
* Add - Hook to change Stripe supported countries `wc_stripe_supported_countries`.
* Fix - WC 2.6 compatibility issue during a refund.
* Fix - Payment Request JS error when default country setting is not supported.
* Fix - Failed payments were sending two failed emails to admin instead of one.
* Tweak - Remove payment methods links from WC Payment Settings page for WC 3.4+.

2018-04-23 - version 4.1.2
* Fix - When payment method is invalid while trying to force save card, unexpected error can occur.
* Fix - Pass name attribute when adding payment method from my account to allow Radar to work properly.
* Tweak - Icon CSS styling to work for more different theme setups.
* Remove - Bitcoin method as it is hard deprecated by Stripe as of April 23, 2018.

2018-04-17 - version 4.1.1
* Tweak - Use payment_complete method when charge is succeeded or captured so other WC related tasks gets triggered.
* Tweak - Styling for the credit card logos.
* Add - Subscription change payment method support for SEPA.
* Add - Credit card branding detection on credit card field.
* Fix - When checkout form fields fails second time, page refreshes instead of using AJAX.
* Fix - Potential issue when WC is not activated.

2018-04-11 - version 4.1.0
* Tweak - Create user session only on product detail page.
* Tweak - Payment Request session handling to bail if session already exists.
* Tweak - 3DS recommended is now required and 3DS optional is now not required.
* Tweak - Admin notices for currency check are now all dismissible.
* Tweak - Added all color payment logos in svg.
* Tweak - Update Stripe Fee and Stripe Net meta names.
* Tweak - Stripe Checkout Popup Modal will validate checkout before proceeding to payment step.
* Tweak - Verbiage for saving payment information to account.
* Fix - When SEPA was used in subscription payment, it does not show SEPA in payment method table.
* Fix - Refund via Stripe dashboard not reflecting amount in order notes.
* Fix - Potential idempotency issues with subs recurring payment processing.
* Add - Multibanco payment method.
* Add - EPS payment method.
* Add - Notice for customer to change saved cards when billing address has been updated.
* Add - Stripe fee and net payout to order line item total section.
* Add - Hook to separately control Stripe Checkout Modal's allow remember me option. `wc_stripe_allow_remember_me` (bool).
* Add - Hook to filter 3DS requirements `wc_stripe_require_3ds`.
* Add - Hook to verify zipcode in Stripe Checkout Modal. `wc_stripe_checkout_verify_zip`. Only works when require address is true.
* Add - Hook to require shipping address on Stripe Checkout Modal. `wc_stripe_checkout_require_shipping_address` (bool).
* Add - Hook to hide Stripe net payout on order line item `wc_stripe_hide_display_order_payout` (bool).
* Add - Hook to hide Stripe fee on order line item `wc_stripe_hide_display_order_fee` (bool).
* Add - Hook to filter out logging messages `wc_stripe_logging` (bool).
* Add - Hook to add content to the Stripe Checkout Receipt Page `wc_stripe_checkout_receipt_page_before_form`.
* Add - Hook to add content to the Stripe Checkout Receipt Page `wc_stripe_checkout_receipt_page_after_form`.
* Add - Hook to add content to the Stripe Checkout Receipt Page `wc_stripe_checkout_receipt_page_before_form_submit`.
* Add - Hook to add content to the Stripe Checkout Receipt Page `wc_stripe_checkout_receipt_page_after_form_submit`.
* Add - Hook to add handling to the Stripe Checkout return handler `wc_stripe_checkout_return_handler`.
* Add - Hook to change save to account checkbox text `wc_stripe_save_to_account_text`.
* Add - Compatibility with Payment Request/Apple Pay and different coupon types such as gift/store credit by Smart Coupons (requires WC 3.2+).
* Add - Compatibility with Payment Request/Apple Pay and Subscription product in cart page.
* Add - Compatibility with Payment Request/Apple Pay and Bookings product in cart page.
* Add - Compatibility with Payment Request/Apple Pay and Composite products in cart page.
* Add - Compatibility with Payment Request/Apple Pay and Product Bundles in cart page.
* Add - Compatibility with Payment Request/Apple Pay and Account Funds in cart page.
* Add - Compatibility with Payment Request/Apple Pay and Mix and Match products in cart page.
* Add - Compatibility with Payment Request/Apple Pay and Product Addons in cart page.
* Add - $post object on hook `wc_stripe_hide_payment_request_on_product_page`.
* Update - Stripe API version to 2018-02-28.
* Remove - Hard deprecated Stripe JS v2 credit card form process.

2018-02-23 - version 4.0.7
* Fix - Potential conflict issue when adding payment method from another payment gateway.
* Fix - Issue when using saved card before sources were introduced.
* Add - Description field/setting for Stripe Checkout Modal/popup.

2018-02-20 - version 4.0.6
* Fix - A WC 2.6 backwards compat issue with function from WC 3.0.
* Fix - Subs renewal sometimes failed due to parameters being different.
* Fix - Stripe accepts only NO for Norwegian language on Stripe Checkout.
* Fix - Refund fees may not accurately reflect net fees. Props @rvola.
* Fix - Undefined SERVERNAME property in some cases.
* Fix - Potential issue when a charge parameter changes due to initial failed request causing retries to fail.
* Fix - When 3DS is not required, failed payments was not change order status to failed.
* Fix - Potential duplicate order processes on WC side when webhook and redirect has a race condition.
* Remove - Checkout validation and let WC handle it.
* Update - Stripe API version to 2018-02-06.
* Add - Webhooks for review open/closed for Radar.
* Add - Hook `wc_stripe_refund_request` for refund request arguments.
* Add - Hook `wc_stripe_validate_modal_checkout` to enable 3rd party checkout validation.
* Add - Hook `wc_stripe_validate_modal_checkout_action`.

2018-02-02 - version 4.0.5
* Fix - Illegal offset error on settings when non is defined or saved.
* Fix - Wrong ID used for dispute webhook handler.
* Fix - A WC 2.6 backwards compat issue while trying to get order id in subscriptions.
* Fix - Processing SEPA can't find email when not logged in.
* Add - Allow restricted secret keys to be used.
* Add - Statement Descriptor to SEPA Direct Debit.
* Add - Idempotency failure retry with easing to prevent multirequest issue.
* Add - POT file.
* Tweak - Make billing name optional on pay for order page.

2018-01-30 - version 4.0.4
* Add - SEPA mandate notification email.
* Add - Preferred language to SOFORT and Bancontact so it can be localized.
* Add - Hook to change SEPA mandate notification to none "wc_stripe_sepa_mandate_notification".
* Add - Hook to change data for product when using Payment Request Button "wc_stripe_payment_request_product_data".
* Add - Hook to change the behavior of allowing subscriptions to charge a customer's default source "'wc_stripe_use_default_customer_source'".
* Add - Hook to source object "wc_stripe_sofort_source", "wc_stripe_p24_source", "wc_stripe_ideal_source", "wc_stripe_giropay_source", "wc_stripe_bancontact_source", "wc_stripe_alipay_source", "wc_stripe_3ds_source".
* Add - Hook to change payment request button total label "wc_stripe_payment_request_total_label".
* Add - Hook to change locale of Stripe Checkout "wc_stripe_checkout_locale".
* Add - Hook to change elements options "wc_stripe_elements_options".
* Fix - When checkout form produces an error on mobile, sometimes the blocking mask is not release blocking new input.
* Fix - On older subscription payments, the ending card number is not shown on the subscriptions table in my account.
* Fix - Filter to show payment request button on checkout page not working.
* Fix - WC session handling compatibility with WC 3.3.
* Fix - BW compatibility with WC 2.6.x on add_order_meta to prevent errors.
* Fix - Possible fix for duplicate charges due to webhook and redirect handler firing at the same time by adding delay to the webhook process.
* Tweak - In a subscription billing, Stripe source ID is no longer a required field.
* Tweak - On a subscription order renewal-- if source is empty, will now try to charge the default source.
* Notice - Bitcoin has been soft deprecated and Stripe will no longer support it on April 23, 2018. Please plan accordingly.
* Remove - Stripe Checkout Locale setting in favor of using store set locale.
* Update - Stripe API version to 2018-01-23.

2018-01-18 - version 4.0.3
* Fix - Pass Stripe source as id instead of object as some sites may conflict with objects being passed.
* Fix - For Payment Request Button, if test keys are not filled, it can cause live mode not to function.

2018-01-17 - version 4.0.2
* Add - 3DS support on Stripe Checkout ( Modal Popup ).
* Add - Filter to enable Payment Request Button on Checkout 'wc_stripe_show_payment_request_on_checkout'.
* Add - Filter to remove all fields from checkout validation. 'wc_stripe_validate_checkout_all_fields'.
* Add - Filter to remove required fields from checkout validation. 'wc_stripe_validate_checkout_required_fields'.
* Add - Custom error exceptions class.
* Add - Credit card field names for clarity.
* Fix - Possible conflicts with payment request totals when subscriptions is active.
* Fix - Undefined notice on save card via subscriptions if card is deleted.
* Fix - Error translation issue when 3DS is required.
* Fix - Possible 404 if getting customer source if no id was found.
* Fix - Add payment method was still available when save cards setting is disabled.
* Fix - In certain cases when webhook is used, refunds can show as doubled when it is not.
* Fix - Stripe checkout with bitcoin returns error on processing.
* Tweak - Remove Sofort country selection in favor of using the billing country.
* Tweak - Add payment page CSS styling.
* Tweak - Error log to show full response object.

2018-01-17 - version 4.0.2
* Add - 3DS support on Stripe Checkout ( Modal Popup ).
* Add - Filter to enable Payment Request Button on Checkout 'wc_stripe_show_payment_request_on_checkout'.
* Add - Filter to remove all fields from checkout validation. 'wc_stripe_validate_checkout_all_fields'.
* Add - Filter to remove required fields from checkout validation. 'wc_stripe_validate_checkout_required_fields'.
* Add - Custom error exceptions class.
* Add - Credit card field names for clarity.
* Fix - Possible conflicts with payment request totals when subscriptions is active.
* Fix - Undefined notice on save card via subscriptions if card is deleted.
* Fix - Error translation issue when 3DS is required.
* Fix - Possible 404 if getting customer source if no id was found.
* Fix - Add payment method was still available when save cards setting is disabled.
* Fix - In certain cases when webhook is used, refunds can show as doubled when it is not.
* Fix - Stripe checkout with bitcoin returns error on processing.
* Tweak - Remove Sofort country selection in favor of using the billing country.
* Tweak - Add payment page CSS styling.
* Tweak - Error log to show full response object.

2018-01-11 - version 4.0.1
* Fix - Add payment method conflict with terms and agreement page.
* Fix - Checkout validation checkout field names/labels were not translated.
* Fix - Card error translations.
* Add - Deprecated Apple Pay Class to prevent errors.

2018-01-08 - version 4.0.0
* Add - Stripe Elements Credit Card form for PCI compliance.
* Add - Stripe Sources.
* Add - SEPA Direct Debit.
* Add - Bancontact.
* Add - Giropay.
* Add - Sofort.
* Add - iDeal.
* Add - Bitcoin.
* Add - P24.
* Add - Alipay.

2017-08-23 - version 3.2.3
* Fix - Apple Pay action hook with wrong parameter causing errors.

2017-07-10 - version 3.2.2
* Fix - Apple Pay button displaying in non Safari browser.
* Fix - Apple Pay with coupon not applying to total.

2017-06-25 - version 3.2.1
* Fix - Discounts were not applying to total with Apple Pay.

2017-06-17 - version 3.2.0
* Fix - Authorized first orders were not able to be refund.
* Fix - Payment Request not honoring different shipping address in certain cases.
* Fix - In certain Chrome versions, states are not abbreviated causing shipping validation issues with Payment Request API.
* Add - Support for Dynamic Pricing.

2017-05-25 - version 3.1.9
* Fix - Handle a subscription renewal failed payment order correctly to prevent orders going into onhold status.
* Fix - Auto accept terms for Payment Request API to prevent blocker for the checkout.
* Fix - Add payment method via Stripe checkout button showed pricing.
* Fix - When Stripe customer id is no longer linked to Stripe account, customer not found can happen.
* Fix - On Subscription failed payment, new payment info not updating causing failed payments for recurring charges.
* Add - Action hook to manipulate process response from API "wc_gateway_stripe_process_response".
* Add - Apple Pay compatibility with WooCommerce Sequential Numbers Pro.

2017-05-08 - version 3.1.8
* Fix - Legacy < WC 3.0 stripe checkout file reference link name causing file not found.

2017-04-19 - version 3.1.7
* Fix - Additional WC 3.0 compatibility with subscriptions addons.
* Fix - Retry failed subscription payments with customer ID.
* Add - Site URL to metadata when charging subscription orders for reference.

2017-04-04 - version 3.1.6
* Fix - TypeError issues on single product page when using Apple Pay on Desktop.
* Fix - In certain case, Apple Pay on single product page does not show shipping info.
* Fix - Use store's base location to show/hide accepted credit cards instead of currency.
* Fix - Unsupported product type when a variable product is added with Apple Pay.

2017-03-30 - version 3.1.5
* Add - Check for WP error object in domain verification.

2017-03-30 - version 3.1.4
* Tweak - If Apple Pay is not enabled, prevent Apple Pay Init.
* Fix - Update for WooCommerce 3.0 compatibility.
* Fix - Apple Pay on product detail page causes qty issue when using normal add to cart.
* Fix - A partial workaround for UK/CA postal codes issue for shipping methods that support partial postal code estimates.
* Fix - Stripe checkout did not validate properly formatted email address.
* Fix - Error messages were not able to translate when validating checkout form.
* Fix - Prevent payment gateway title logic ( Apple Pay ) from hijacking other payment methods.
* Remove - Stripe Checkout allow remember me setting as it is redundant to saved card setting.

2017-03-17 - version 3.1.3
* Fix - When using Stripe Checkout, add payment method was disabled.
* Fix - Possible non object type when using preview pages.

2017-03-16 - version 3.1.2
* Fix - Add payment method on My Account page error.

2017-03-16 - version 3.1.1
* Fix - Apple Pay error notice log link is incorrect.
* Fix - Apple Pay domain verification paths check.

2017-03-15 - version 3.1.0
* New - Apple Pay Support.
* New - Add Google Payment Request API.
* New - Minimum PHP 5.6.

2017-01-12 - version 3.0.7
* New - Option to allow/disallow remember me on Stripe checkout modal.
* Fix - Paying for order incorrectly uses cart amount.
* Fix - Using WC function before checking exists causes fatal error.

2016-11-09 - version 3.0.6
* Fix - When adding declined cards, fatal error is thrown.
* Fix - After a failed/declined process, valid cards are not accepted.
* Fix - When paying via pay order page/link, billing info is not sent.
* Fix - Account for all types of errors for proper localization.
* Fix - Correctly reference Stripe fees/net based on Stripe account locale.
* Fix - Bitcoin image not showing.
* New - Introduce "wc_gateway_stripe_process_payment_error" action hook.
* New - Introduce "wc_gateway_stripe_process_payment" action hook.

2016-11-03 - version 3.0.5
* Fix - Previous upload of files didn't take. Retry.

2016-09-28 - version 3.0.4
* Fix - Missing min files.

2016-09-27 - version 3.0.3
* Fix - Remove bitcoin icon when not using Stripe Checkout mode as it is not supported.
* Fix - Failed payment order was not sending email to admin.
* Fix - Saved card option was not being honored.
* New - Filter for WC_Payment_Gateway_CC::wc_stripe_generate_payment_request return value.
* New - Filter to disallow prepaid cards. "wc_stripe_allow_prepaid_card".
* New - Filter to require billing address on Stripe Modal Checkout. "wc_stripe_checkout_require_billing_address".
* New - Localized Stripe error messages.

2016-06-14 - version 3.0.2
* Fix - Set empty array as default value for first argument in WC_Stripe_Customer::create_customer
* Tweak - Update default title to make it consistent with existing titles

2016-06-08 - version 3.0.1
* Backwards compatibility update to prevent error finding WC_Payment_Token_CC.
* Added inline validation of keys.

2016-06-07 - version 3.0.0
* First public WordPress.org release.
* Refactor for WC 2.6 and above. Legacy support for 2.5.
* Improved saved card handling using tokenization API in WooCommerce.

2016-04-13 - version 2.6.12
* Fix - When saved cards option is enabled with no cards on file, CC field was hidden.

2016-04-11 - version 2.6.11
* Add - Option to set a default card in manage card section and detect previous card paid by subscription.
* Fix - Admin notice link when key is not added and when addons are present.

2016-03-16 - version 2.6.10
* Tweak - Add logging mechanism. New 'Logging' option is added in Stripe gateway setting to enable logging.
* Fix - Allow language files to be located outside of plugin directory

2016-02-29 - version 2.6.9
* Tweak - Allow mechanism to override Stripe JS error handler. See https://gist.github.com/gedex/240492f479c7443e4780
  for an example to override error handler with simple alert.

2016-02-11 - version 2.6.8
* Tweak - Include card brand in saved cards radio label class
* Tweak - Add action when deleting card
* Tweak - Add actions for add_card and add_customer
* Tweak - Add support for automatic localisation in Stripe Checkout modal
* Fix - Check for Stripe error code emptiness before returning the WP_Error

2015-12-17 - version 2.6.7
* Fix is_available SSL check to also work properly on hosts that always serve HTTPS

2015-12-03 - version 2.6.6
* Fix a JavaScript bug introduced in 2.6.4 that caused checkout with a saved card to fail

2015-12-02 - version 2.6.5
* Do not require a card id when updating a subscription payment method

2015-11-20 - version 2.6.4
* Fix a JavaScript bug that caused the Stripe Checkout popup to be blocked on Chrome for iOS

2015-11-12 - version 2.6.3
* Add metadata to subscription payments in stripe dashboard to indicate whether it is the initial or a recurring payment

2015-11-06 - version 2.6.2
* Fix bug that would cause multiple subscriptions to not be supported under certain circumstances

2015-09-15 - version 2.6.1
* Unset source if not set during pre-order release payments.
* Store customer ID if not logged in for pre-order payments.

2015-09-02 - version 2.6.0
* Subscriptions 2.0 support.

2015-08-11 - version 2.5.4
* Tweak - Terms and conditions error styling when required
* Tweak - Account password error styling when required

2015-07-28 - version 2.5.3
* Added - Filter to prevent Stripe from sending its own receipts "wc_stripe_send_stripe_receipt"

2015-07-19 - version 2.5.2
* Fix - Removed deprecated add_error function
* Tweak - Improve error message when Stripe checkout function is used

2015-07-01 - version 2.5.1
* Fix - Only send receipt_email when set.

2015-05-11 - version 2.5.0
* Update to API version 2015-04-07
* Feature - Support authorize on subscriptions first payment.
* Tweak - Option labels.
* Tweak - Safe remote GET.
* Tweak - SSLVerify true.
* Tweak - Update card icons.
* Tweak - Pass receipt email.

2015-05-11 - version 2.4.3
* Fix - fixed validation issue when account creation is not checked
* Update - Stripe checkout JS API v2

2015-03-23 - version 2.4.2
* Fix - Create account password field was not being validated

2015-03-20 - version 2.4.1
* Fix - Undefined JS error due to deprecated ajax_loader_url
* Fix - When using Stripe checkout JS, some form required fields were not validating

2015-02-20 - version 2.4.0
* Added support for bitcoin currency

2015-01-31 - version 2.3.0
* Added 'wc_stripe_description' filter to allow filtering of payment description.
* Added order_review handling for stripe checkout.
* Mark order as failed is Stripe API call fails
* Allow valid HTML in Stripe Description
* Fix settings link
* use get_order_currency() when generating payment args, rather than always using store currency.
* Fix fees where not logged correctly when using authorized first capture later
* Retry payment if customer_id is invalid.

2014-11-21 - version 2.2.8
* Save card/customer id for regular orders.

2014-11-20 - version 2.2.7
* Fixed all instances where order IDs were used instead of user IDs.
* Update orignal order card/customer ids for renewals.
* Add reasons to refunds.

2014-11-18 - version 2.2.6
* Stripe card ID should be taken from the order, not the user.
* Fix order_meta_query.

2014-11-06 - version 2.2.5
* Round totals to 2 decimals so when we multiply by 100 we're sure we've got an integer.

2014-10-01 - version 2.2.4
* Fix card display for subscriptions.

2014-10-01 - version 2.2.3
* Fixed textdomain name

2014-09-23 - version 2.2.2
* Set API version to 2014-09-08.
* Fixed card display (type->brand).

2014-09-15 - version 2.2.1
* Fix strict standards warning.

2014-09-01 - version 2.2.0
* Replaced woocommerce_get_template (deprecated) with wc_get_template.
* Tweak refund support.
* Support for pre-orders.
* Fixed typo.

2014-08-06 - version 2.1.0
* Associate stripe customers with wp users.
* Refactored saved card code.
* Use Stripe API to get and delete saved cards.
* Updated subscriptions integration for saved cards.
* WC 2.2 - Store transaction ID.
* WC 2.2 - Refund support.

2014-07-31 - version 2.0.4
* Tweaked the stripe checkout submission method.

2014-07-25 - version 2.0.3
* wc_stripe_manage_saved_cards_url filter.
* Zero decimal currency handling.
* Only open stripe model when required fields are completed.

2014-06-06 - version 2.0.2
* Fix use of saved cards on subscriptions.

2014-05-29 - version 2.0.1
* Fix ajax loading gif.
* Fix notices.
* Fix stray comma in stripe.js.
* Prompt user to accept terms before showing stripe checkout modal.

2014-05-21 - version 2.0.0
* Added the WC credit_card_form - this extension now requires WC 2.1+
* Option to disable saved cards
* Refactored code base
* Fix jquery notices
* Fix settings page links
* woocommerce_stripe_request_body filter
* Store fees for subscriptions

2014-05-20 - version 1.8.6
* correct SSl message
* decode get_bloginfo( 'name' ) for plain text display

2014-05-10 - version 1.8.5
* Updated textdomains
* date_i18n
* Improve stripe checkout flow - pop up on the checkout button click

2014-04-01 - version 1.8.4
* Fix updating credit card used for future subscription payments when paying for a failed subscription renewal order with a new credit card.

2014-02-13 - version 1.8.3
* Fix fatal error for subscription payments of deleted products.

2014-02-06 - version 1.8.2
* Fix notice on card delete

2014-01-28 - version 1.8.1
* set default for $checked

2014-01-08 - version 1.8.0
* Checked compatibility with 2013-12-03 API
* 2.1 compatibility
* Pre-filled email address when using stripe checkout

2013-12-02 - version 1.7.6
* Fix card display

2013-11-27 - version 1.7.5
* Show payment method for subscriptions on account page

2013-11-20 - version 1.7.4
* Expand/close when using saved cards.
* Use balance_transaction to get and store fees

2013-11-01 - version 1.7.3
* Default to saved card

2013-11-01 - version 1.7.2
* Added missing global in update_failing_payment_method

2013-09-28 - version 1.7.1
* Remove non-existant (yet) function

2013-09-25 - version 1.7.0
* Different credit card image for US than for other countries + a filter.
* Support for upcoming version of subscriptions.
* Add new woocommerce_stripe_month_display filter

2013-09-02 - version 1.6.0
* Option to define a Stripe Checkout Image
* Removed currency check due to beta rollout

2013-08-12 - version 1.5.14
* New cards format for subscriptions class.

2013-07-24 - version 1.5.13
* Updated customer response object handler to work with new cards format.
* Fixed delete card button

2013-07-24 - version 1.5.12
* EUR support for Stripe Beta

2013-07-17 - version 1.5.11
* Workaround for stripe error messages.

2013-06-28 - version 1.5.10
* Store charge ID, fee in meta

2013-06-28 - version 1.5.9
* Capture true default

2013-06-18 - version 1.5.8
* Add currency to stripe checkout js
* Authorize-only mode. Captures payment when order is made processing.

2013-06-15 - version 1.5.7
* Added 'capture' option should you wish to authorize only. Authorized orders are on-hold. Processed orders capture the charge automatically.

2013-06-03 - version 1.5.6
* added data-currency to stripe-checkout

2013-04-26 - version 1.5.5
* Allow card re-entry in stripe checkout after errors.

2013-04-19 - version 1.5.4
* GBP fix

2013-04-15 - version 1.5.3
* Support GBP currency code (For UK Beta)

2013-04-09 - version 1.5.2
* Send billing city to stripe

2013-01-24 - version 1.5.1
* Add support for changing a subscription's recurring amount

2013-01-18 - version 1.5.0
* Supports Stripe Checkout https://docs.stripe.com/payments/checkout

2013-01-18 - version 1.4.0
* WC 2.0 Compat

2012-12-05 - version 1.3.5
* Pass address fields to stripe.js on pay page.

2012-12-05 - version 1.3.4
* Updater

2012-10-22 - version 1.3.3
* Fix CAD check

2012-10-15 - version 1.3.2
* Fixed bug causing settings to not show when using CAD

2012-10-11 - version 1.3.1
* Add support for changing subscription next payment date
* Remove order meta from subscription renewal orders

2012-09-20 - version 1.3
* Allowed canadian dollars - Stripe is beta testing support for Canada

2012-09-11 - version 1.2.1
* Fix text mode SSL logic

2012-09-01 - version 1.2
* SSL not required in TEST MODE
* Saved cards - store customer tokens and let users pay again using the same card
* Subscriptions use a single customer, rather than per-order
* Only load JS on checkout

2012-06-19 - version 1.1
* Update woo updater
* Class name update
* Stripe JS for added security - you will need to re-enter keys and ensure you are using WooCommerce 1.5.8
* Subscriptions support (requires WC Subscriptions addon)

2011-12-08 - version 1.0
* First Release
