### 5.5.0 | 2024-02-22
- Added a Stripe API wrapper and deprecated the use of the Stripe PHP SDK.
- Added new notification events for pending and authorized payment states.
- Added the ability to map a Gravity Forms coupon field in a Stripe subscription feed which was removed in a previous release.
- Updated the Stripe API version to the latest: "2023-10-16".
- Fixed an issue where the form gets stuck in loading state when using a testing card number in live mode.
- Fixed an issue where a fatal error can occur when using the Payment Element on a form with reCAPTCHA v3 using version 1.5.0 or later of the reCAPTCHA Add-On.
- Fixed an issue where the post image file was not uploaded when additional payment methods option is enabled.
- Fixed an issue where forms using the Stripe Payment Element do not display the correct confirmation when embedded with AJAX enabled.
- Fixed an issue where validation errors are displayed momentarily, but then are automatically hidden when the Payment Element is used.
- Fixed a Javascript error that is displayed when the form is submitted using the Payment Element field.
- Fixed an issue where reCaptcha fails validation because it is being validated twice when using the Stripe Payment Element.
- Fixed an issue with the upcoming version of reCaptcha that causes entries to be marked as spam when using Stripe Payment Elements.
- Fixed an issue where after a validation error occurs, the SCA modal is not triggered on the next form submission when using Stripe Elements with a subscription feed.
- Fixed an issue with bank transfers via Stripe Checkout where the entry pages show the payment as "Authorized" instead of "Paid".
- Fixed an issue where repeater field data is not being saved to the entry when payment is done via the Stripe Payment Element field.

### 5.4.0 | 2023-12-07
- Added a new [`gform_stripe_sca_success_pre_validation`](https://docs.gravityforms.com/gform_stripe_sca_success_pre_validation/) filter to modify the validation result for forms submitted by the SCA handler.
- Fixed an issue where the password is not saved during user registration when using the Stripe Payment Element.
- Fixed an issue where confirmations set to the Redirect type are not working as expected.
- Fixed an issue where recaptcha and turnstile fields fail validation when using Stripe Elements with 3D Secure Authentication.
- Fixed an issue where the credit card details are not being saved to the entry on subscription feeds with trial enabled.
- Fixed an issue where a fatal error occurs when the Stripe field is missing from the form and the payment collection method is set to Stripe Field.
- Fixed an issue where overriding a subscription's trial period days via a filter results in a validation error.
- Fixed an issue where the total field shows an incorrect value when the stripe feed has conditional logic configured.
- Fixed an issue where submission fails when a page contains more than one Stripe form.
- Fixed an issue where the total amount is not calculated correctly when two Stripe forms are on the same page.
- Fixed an issue where the trial amount field loses its styling when there is a validation error on the feed edit page.
- Fixed an issue with Link that prevents a form submission without an email address being entered.
- Fixed an issue where the subscription ID isn't displayed correctly on the entry page when Bank Transfer is used as a payment method.
- Fixed an issue where validation errors are not being cleared when switching to a different payment method on the Stripe Payment Element.
- Removed Cardholder Name as an option for merge tags.

### 5.3.0 | 2023-11-22
- Added compatibility with the upcoming Compact View feature of Gravity Forms, displaying field messages on the sidebar.
- Updated the theme framework variables to be compatible with Gravity Forms 2.8.
- Fixed an issue with the Stripe Card field that displays a "return_url must be specified" error message in certain situations.
- Fixed an issue that causes 3DS transactions to fail if the associated feed is for Subscriptions.
- Fixed an issue that halts form submissions on certain situations if 3DS validation is required.
- Fixed an issue where using the Payment Element in conjunction with conditional logic can result in incomplete entry data.
- Fixed an issue where a "The link you followed has expired" error occurs on submission when the "Require user to be logged in" form setting is enabled.

### 5.2.0 | 2023-09-20
- Added the [gform_stripe_payment_element_initial_payment_information](https://docs.gravityforms.com/gform_stripe_payment_element_initial_payment_information/) filter to override the initial payment information used to render the payment element.
- Fixed an issue where a payment method can't be attached to a customer when the Payment Element is enabled.
- Fixed an issue where the gform_stripe_elements_style filter is not being correctly applied.
- Fixed an issue that prevents the gform_stripe_webhook filter from being fired in some cases.
- Fixed an issue where using a list field with columns enabled on a form with the Stripe Payment Element can cause a fatal error.
- Fixed an issue where list field values are not saved to the entry when the Payment Element is enabled.
- Fixed an issue where the Payment Element doesn't work on ajax-enabled forms.


### 5.1.0 | 2023-08-02
- Updated the verbiage and look of the validation message that appears when SCA modal is triggered.
- Fixed an issue where the Credit Card field is not initialized on multi page forms when running in Conversational Forms mode.
- Fixed an issue which causes duplicate entries to be created when the SCA modal is triggered.
- Fixed an issue with the Payment Element which creates an error when Apple Pay is used as a payment method.
- Fixed an issue where the Customer Information inputs are not being populated when creating a subscription feed.
- Fixed an issue where notifications are not sent when using manual capture with Stripe Checkout.
- Fixed an issue where the total field can be incorrectly calculated when conditional logic is configured for a Stripe feed.
- Fixed an issue where the total field can be incorrectly calculated when a product is set as a setup fee in the Stripe feed settings.
- Fixed an issue where a coupon is applied to the setup fee along with the recurring amount of a subscription.


### 5.0 | 2023-06-14
- Added support for the theme framework.
- Added support for the Stripe Payment Element.
- Added support for Stripe Link.
- Added support for async payment methods such as Bank Transfer when using Stripe Checkout.
- Added support for Payment Element deferred payment intents.
- Added support for automatic payment methods, allowing merchants to enable/disable payment methods from their Stripe dashboard.
- Added a message in the form editor that the Payment Element is not supported when using versions of Gravity Forms prior to 2.6.4.
- Added the `gform_stripe_payment_element_payment_methods` filter to filter the payment methods available in Stripe Payment Element.
- Added the `gform_stripe_checkout_payment_methods` filter to filter the payment methods available in Stripe Checkout.
- Updated the `gform_stripe_elements_style` filter to include a parameter indicating whether or not the Payment Element is being used for a given form.
- Fixed an issue with Stripe Checkout when a customer is manually created via a hook.
- Fixed an issue where the inline block styles are rendered for forms without a Stripe card field.


### 4.3 | 2023-01-19
- Added support for changes in the Stripe API.
- Added support for the new theme framework.
- Fixed a fatal error which can occur with the Stripe API Client if the add-on isn't connected to a Stripe account.


### 4.2 | 2022-02-03
- Added security enhancements.
- Added the ability to refund payments from the entry detail page.
- Added the ability to capture authorized payments from the entry detail page.
- Added the stripe_customer_portal_link shortcode action to support [self-serve billing portal](https://docs.gravityforms.com/stripe-customer-portal-shortcode-action/).
- Updated the Stripe API SDK methods.
- Updated the styling for the disconnect alert messaging.
- Fixed a javascript error when de-authorizing Stripe account.
- Fixed an issue with unsaved warning being displayed on settings pages even when there are no changes made.
- Fixed an issue with the Webhooks Add-On where the payment details in the entry are empty.
- Fixed an issue where if future usage is set to 'on_session' and a user enters a 3DS card.  This addresses an issue that results in an infinite loop on form submission.


### 4.1 | 2021-06-30
- Updated error messages when API isn't connected to be more informative.
- Fixed an issue where the merge tags are replaced with fixed values when the subscription name is longer than the 200 character limit by Stripe.
- Fixed an issue where an empty validation message appears if feed conditional logic is set.
- Fixed an issue where an empty validation message appears as soon as a customer types in the credit card field.
- Fixed an issue where the credit card icon overlaps with the placeholder text in the credit card field.
- Fixed an issue where the form fails validation if the plan (price) or product, created by the add-on, is archived in the Stripe account.


### 4.0 | 2021-04-21
- Added a warning notice when deprecated credit card field is still being used.
- Added right-to-left language support to the Credit Card field in the form editor in Gravity Forms 2.5.
- Updated styling on disconnect UI to look less like an error.
- Fixed an issue where the add-on icon is missing on the Form Settings page for Gravity Forms 2.5.
- Fixed an issue where the cardholder name sub-label setting is not correctly toggling in Gravity Forms 2.5.
- Fixed an issue where HTML is output incorrectly when Stripe has not yet been set up.
- Fixed an issue where authentication may not complete after attempting a connection with Stripe.


### 3.9 | 2020-12-16
- Added support for the [gform_ip_address](https://docs.gravityforms.com/gform_ip_address/) filter.
- Fixed an issue with the plugin settings where the default API mode is not set. Default is set to "test".
- Fixed an issue where card details for the Stripe Card field is not rendered when the form also contains the default credit card field.
- Fixed an issue where multiple feed specific callbacks can be processed for an entry at the same time.
- Fixed an issue where an empty validation error can be applied to the Stripe Card field when some Stripe API errors occur.
- Fixed an issue with the Stripe card field preview in the form editor.


### 3.8 | 2020-09-28
- Added support for Gravity Forms 2.5.
- Updated to support 50 metadata mappings.
- Updated the Stripe SDK to version 7.36.1.
- Fixed fatal errors which could occur if the Stripe API returned an error such as the payment amount not meeting the minimum amount for the currency.
- Fixed subscription issues when a coupon is used.
- Fixed stripe card field preview in the form editor.
- Fixed an issue where the js.stripe.com/v3 script could be enqueued when not required.
- Fixed an issue which results in charging the wrong amount when creating a subscription plan using a plan name that already exists on stripe.
- Fixed an issue where an "Unable to authorize card. No response from Stripe.js." validation error occurs for forms using the Stripe Card and Invisible type reCAPTCHA fields.


### 3.7 | 2020-07-16
- Fixed an issue where connecting to Stripe in live mode would revert to test mode.


### 3.6 | 2020-07-14
- Added security enhancements.
- Updated the Stripe card field scripts to use the credit card field input ID as the selector when mounting Stripe Elements.
- Fixed a JavaScript error which could occur in some environments for the Stripe Card field scripts when using the form total as the payment amount.


### 3.5 | 2020-05-21
- Added error messages to the Stripe Card field when no Stripe feed activated or Stripe Checkout is enabled.
- Added accessibility enhancements to the Stripe Card Element so the screen readers can announce validation errors.
- Added the *[gform_stripe_payment_intent_pre_create](https://docs.gravityforms.com/gform_stripe_payment_intent_pre_create/)* filter to allow modifying the payment data before creating a new payment intent.
- Fixed the Stripe Checkout redirection issue for AJAX embedded forms.
- Fixed the card type input of the Stripe Card field saving the brand slug returned by Stripe.js instead of the full brand name.
- Fixed an issue where the credit card info is not updated after the customer replaces card details in multi-page forms.
- Fixed an issue where the Stripe feed list would display a misleading configuration message in certain situations.
- Fixed an issue with Stripe Elements where some amounts can lose precision when converted to the smallest unit of the currency.
- Fixed PHP 7.4 notices on the settings and feed configuration pages.
- Fixed a JavaScript error which could occur in some environments for the Stripe Card field scripts when using the form total as the payment amount.


### 3.4 | 2020-02-19
- Added security enhancements.
- Added support for Strong Customer Authentication (SCA) to the Stripe Card field (Stripe Elements) payment collection method.
- Deprecated the Gravity Forms Credit Card Field.
- Fixed an issue with Stripe feeds conflicting with feeds from other payment add-ons in the browser.

### 3.3 | 2019-12-18
- Added security enhancements.
- Fixed a PHP fatal error which can occur if the customer specified by the gform_stripe_customer_id filter can't be retrieved.
- Fixed an issue where the Checkout session could fail to be created when the gform_stripe_customer_id filter returns a valid id and the customer email is supplied by the feed field mapping.
- Fixed an issue where PHP fatal error is thrown when Stripe account is deleting test data.


### 3.2 | 2019-09-25
- Fixed an issue where delayed feeds aren't triggered when a subscription trial has ended.
- Fixed an issue which can prevent the redirect to Stripe Checkout occurring on some sites.


### 3.1 | 2019-09-18
- Added the *[gform_stripe_discounted_line_items_name](https://docs.gravityforms.com/gform_stripe_discounted_line_items_name/)* filter to change the default name for the custom line item of a discounted Stripe Checkout payment.
- Added the *[gform_stripe_fulfillment](https://docs.gravityforms.com/gform_stripe_fulfillment/)* filter to allow performing extra actions when a Stripe Checkout payment is fulfilled (it is charged or the subscription has started).
- Added support for the webhook event "charge.captured" so when an authorized payment is charged, the entry payment status will change to "Paid".
- Fixed an issue when some products with $0 unit price are removed from the line items for Stripe Checkout, the session fails to be created.
- Fixed an issue when the product line items contain one with $0 unit price, Stripe Checkout can't create the session.
- Fixed an issue where the Entry ID is missing from the payment description with Stripe Checkout.
- Fixed an issue where GF Coupons discounts aren't applied to Stripe Checkout.
- Fixed an issue where the merge tags in the subscription name don't work when the payment collection method is Stripe Card field or Credit Card field.
- Fixed an issue where the confirmation page redirection causes PHP fatal errors when users are redirected back to the site from Stripe Checkout.


### 3.0 | 2019-09-04
- Updated to use the new Stripe Checkout, which supports Apple Pay and Strong Customer Authentication (SCA/PSD2).
- Added the *[gform_stripe_session_data](https://docs.gravityforms.com/gform_stripe_session_data/)* filter to allow modifying the payment data for Stripe Checkout.
- Added the *[gform_stripe_success_url](https://docs.gravityforms.com/gform_stripe_success_url/)* filter to allow changing the URL that users will be sent to after completing the payment on Stripe.
- Added the *[gform_stripe_cancel_url](https://docs.gravityforms.com/gform_stripe_cancel_url/)* filter to allow changing the URL that users will be sent to after canceling the payment on Stripe.
- Added the *[gform_stripe_url_port](https://docs.gravityforms.com/gform_stripe_url_port/)* filter to allow changing the URL port if it's not 80.
- Added the validation to webhooks signing secret fields.


### 2.9 | 2019-08-15
- Fixed an issue where the incorrect API mode is chosen when authorizing payments.
- Fixed an issue where form submissions are broken when the Stripe feeds are enabled by conditional logic.


### 2.8 | 2019-08-07
- Added security enhancements.
- Added a simpler and more secure way of connecting your Stripe account with Stripe Connect.
- Added feed-level Stripe Connect. Users can connect to different Stripe accounts in feed settings.
- Added the *[gform_stripe_connect_enabled](https://docs.gravityforms.com/gform_stripe_connect_enabled/)* filter to allow the disabling of Stripe Connect in order to use the legacy connection settings.
- Fixed an issue cancelling subscriptions when using the *[gform_stripe_subscription_cancel_at_period_end](https://docs.gravityforms.com/gform_stripe_subscription_cancel_at_period_end)* filter with Stripe API version 2018-08-23 or newer.
- Fixed an issue where the payment amount doesn't display correctly in the Stripe Checkout modal.
- Fixed an issue when a Stripe Card field is on the page of a multi-page form, users cannot go back to the previous page by clicking on the "Previous" button.


### 2.7 | 2019-04-17
- Fixed an issue that authorization errors weren't displayed for Stripe Checkout.
- Fixed the amount decimal issue for Stripe Checkout.
- Fixed an issue that no error message for the Stripe Card when no feed is activated.
- Fixed an issue that when the Stripe API Publishable Key is empty or invalid, the form submission would fail but there was no error showed up for the Stripe Card field.
- Fixed an issue that the Stripe Card field disappears after form validation failed in AJAX mode.
- Fixed an issue that Cardholder Name in the Stripe Card field is always empty if it's not on the last page of a multi-page form.
- Fixed an issue that Stripe Checkout modal should not be trigger when the form total is zero.
- Added support for calculating all product fields as the form total in Stripe Checkout.
- Added support to deactivate Stripe feeds when the Stripe Card field is deleted.
- Added support to frontend feeds regardless of the payment collection method.
- Added support for the currency filter *gform_currency_pre_save_entry*. Added a new JS filter *gform_stripe_currency*.
- Updated webhook event logging statement to include the webhook API version.
- Fixed Stripe Card field not rendering for forms embedded in front-end pages.
- Fixed the credit card field button not being displayed in the form editor for existing installs.


### 2.6 | 2019-02-11
- Added support for Stripe Checkout.
- Added support for Stripe Credit Card (Stripe Elements).
- Added support for the *charge.expired* event; changing the entry payment status from Authorized to Voided when an authorization expires.
- Added the *gform_stripe_entry_not_found_status_code* filter enabling the status code to be overridden.
- Reverted the callback error 'entry_not_found' to return a header status code of 200.
- Fixed processing of "invoice.payment_succeeded" and "invoice.payment_failed" events with Stripe API version 2018-05-21.
- Fixed a refund transaction being recorded in the sales tab when an authorized charge is manually released via the Stripe.com dashboard.
- Fixed plan creation with Stripe API version 2018-05-21.
- Fixed trials for new subscriptions with Stripe API version 2018-05-21.


### 2.5 | 2018-04-09
- Updated callback error 'entry_not_found' to return a header status of 404.
- Updated Stripe API library to version 5.9.2.
- Fixed security issue.
- Fixed subscriptions not being processed when using Stripe API version 2018-02-05 or newer.


### 2.4 | 2018-02-05
- Added GPL to plugin header.
- Added the *gform_stripe_subscription_params_pre_update_customer* filter allowing the subscription parameters to be overridden before the customer is subscribed to the plan.
- Added support for webhook signing secrets.
- Updated Plugin URI and Author URI to use https.
- Updated webhook processing to use the API mode specified in the received event.
- Updated Stripe API library to version 5.1.3.
- Fixed API mode used to retrieve webhook event when signing secret is configured.
- Fixed the card type validation message containing "false" in some situations.


### 2.3 | 2017-04-28
- Added the *[gform_stripe_charge_pre_create](https://docs.gravityforms.com/gform_stripe_charge_pre_create)* filter.
- Added translations.
- Fixed spinner appearing when the previous button on the last page of a multi-page non-AJAX form is clicked.
- Fixed Stripe.js request being made when the previous button on the last page of a multi-page form is clicked.
- Fixed a fatal error which could occur if an older version of the Stripe API library is loaded by another plugin.


### 2.2 | 2017-01-05
- Added $meta_key as the fifth parameter of the *gform_stripe_field_value* filter, containing the custom meta key currently being processed.
- Updated string "Stripe Receipt" so it could be translated.
- Updated Stripe API library to version 4.3.0.


### 2.1 | 2016-09-23
- Added the *[gform_stripe_subscription_cancel_at_period_end](https://docs.gravityforms.com/gform_stripe_subscription_cancel_at_period_end)* filter.
- Added the *[gform_stripe_charge_authorization_only](https://docs.gravityforms.com/gform_stripe_charge_authorization_only)* filter.
- Added the *[gform_stripe_customer_id](https://docs.gravityforms.com/gform_stripe_customer_id)* filter.
- Added logging of error retrieving Stripe Event object.
- Added the *[gform_stripe_customer_after_create](https://docs.gravityforms.com/gform_stripe_customer_after_create)* hook allowing custom actions to be performed between the customer being created and subscribed to the plan.
- Updated included Stripe API library to latest version.
- Updated subscription process to define subscription when customer is created if *gform_stripe_customer_after_create* filter is not defined.
- Updated to only repopulate the card field within the last four digits on successful form submission.
- Fixed a JavaScript error which occurred when the frontend scripts were included when the form had an active feed but no credit card field.
- Fixed an issue where entry ID was not correctly populated in charge metadata.
- Fixed an issue where entry ID was not correctly populated in customer metadata (for subscription feeds).
- Fixed an issue which caused the credit card field required indicator to be missing when the form is displayed after a validation failure.
- Fixed an issue with the card type validation.
- Fixed an issue with the trial property from the $submission_data not being used.
- Fixed an issue with the trial property from the $submission_data not being used when generating the plan id.
- Fixed issue when sending empty meta data.
- Fixed issue which could occur when saving an incomplete submission.


### 2.0 | 2016-01-07
- Added support for sending notifications on payment/subscription events. Configured on the edit notification page using the 'Event' setting.
- Added the gform_stripe_api_mode filter, e.g.
        add_filter( 'gform_stripe_api_mode', function ( $api_mode ) {
            return 'live';
        } );
- Added support for mapping a Coupon field when configuring a subscription feed.
- Updated minimum Gravity Forms version to 1.9.14.17.
- Updated billing cycle to include days.
- Fixed an issue with zero decimal currencies.
- Fixed an issue with the validation messages.
- Fixed an issue with validation not returning an error if the stripe js response is empty or doesn’t contain an id.
- Fixed an issue in authorize_product() and subscribe() where the entry currency was not being used.


### 1.9 | 2015-10-09
- Updated feed list and edit pages to display configure settings message if the api keys for the selected mode are invalid.
- Fixed an issue with credit card field validation when the field is marked as required.


### 1.8 | 2015-08-06
- Updated Stripe Receipt drop down to only list email or hidden type fields.
- Updated to use object notation when accessing $field.
- Updated minimum Gravity Forms version to 1.9.10.19.
- Fixed an issue which allowed feeds to be created with only partially configured metadata.
- Fixed PHP notice related to the Metadata setting on the feed edit page.
- Fixed php notice when saving a feed without any custom metadata.


### 1.7 | 2015-06-23
- Added the ability to pass custom metadata to Stripe.
- Added logging of API key validation failure (key is obfuscated).
- Added $feed as the fifth parameter of the gform_stripe_charge_description filter.
- Updated instructions on the settings tab for configuring Stripe webhooks.
- Updated form submission to ensure form is only submitted once.


### 1.6 | 2015-04-20
- Fixed a low severity security vulnerability in the admin area which could be exploited by authenticated users with form administration permissions.
- Fixed issue where jQuery JSON library wasn't getting included.
- Fixed issue that caused credit card field to get validated even when payment amount was zero.


### 1.5 | 2014-11-19
- Added capability support and Member plugin integration.
- Updated POT file.
- Added Spanish (es_ES) translation.
- Fixed a text domain typo in class-gf-stripe.php.
- Fixed issue that prevents the form from being submitted if jQuery is put into no-conflict mode by subsequent plugins.
- Created POT file.
- Updated translation strings to using gravityformsstripe instead of gravityforms.


### 1.4 | 2014-10-16
- Added text domain/path to header.
- Added function gf_stripe to easily get a Stripe instance.
- Updated to have the file class-gf-stripe.php and organized code into this file and stripe.php.
- Updated protected functions to be public.
- Updated key validation so that is is more forgiving with conflicts by trimming response before using it.


### 1.3 | 2014-09-24
- Fixed conflict with the PayPal Add-On.
- Fixed issue with email receipt feature displaying a warning when 'Do not send receipt' option was selected.
- Fixed Notice message.


### 1.2 | 2014-08-06
- Fixed issue when validating the live publishable key.


### 1.1 | 2014-07-29
- Added receipt email feature so that Stripe receipts can be sent.
- Updated key validation so that keys are trimmed before being validated and saved.
- Updated API include statement so that it checks if API has already been included.
- Fixed scripts from being output on every page of admin.
- Fixed issue where credit card field generated validation error when navigating form.
- Fixed issue with javascript error caused by the admin.js not being enqueued.
- Fixed issue causing notification and confirmation to be sent blank.
- Fixed issue with credit card validation.
- Fixed issue where credit card was failing validation even when feed condition was not met.


### 1.0 | 2014-05-28
- Initial release.
