Tags give the ability to mark specific points in history as being important
  • 6.5.4
    4cd794b0 · Release 6.5.4 ·
    Release 6.5.4

    This release REQUIRES that you upgrade mjwshared to 0.9.7.

    • Use CRM.payment.isAJAXPaymentForm() to check if we should load on backend forms. There is no change for the user, we are just switching to an identical shared function to reduce code duplication.
    • Fix #272 "undefined property" PHP notice.
    • Response to test webhook now includes payment processor name from CiviCRM (makes it easier to be sure which payment processor is responding).
    • !137 Update StripePaymentintent.Process API.
    • !136:
      • Use CiviCRM log file for Stripe library errors.
      • Retry once if we can't connect to stripe servers.
    • !135 Add hidden Stripe Country setting which will be required for paymentRequest button (not yet implemented).
    • Return refund_status_name from doRefund() - this allows you to issue refunds via the UI following mjwshared!12 - Add support for issuing refunds via the payment UI for payment processors that support refunds (eg. Stripe).
  • 6.5.3
    e97bb978 · Release 6.5.3 ·
    Release 6.5.3
    • Fix #258 Credit card element doesn't load in "Submit credit card contribution" popup form on backend (fixed for memberships and contributions).
    • Fix #262 Fix customer.subscription.deleted webhook event not working (500 internal server error).
    • Fix #270 Fix 500 Internal Server error for the customer.subscription.updated event
  • 6.5.2
    a832c707 · Release 6.5.2 ·
    Release 6.5.2
    • !129 Don't check inactive membership blocks for separate payment setting.
    • !128 Don't check for webhooks on non-production instances.
  • 6.5.1
    5fc0b205 · Release 6.5.1 ·
    Release 6.5.1

    You must update to this version if using API version 2020-08-27.

    • Fix subscription parameter (prorate -> proration_behavior) for API version 2020-08-27.
  • 6.5
    f1cbc52c · Release 6.5 ·
    Release 6.5

    This release REQUIRES that you upgrade mjwshared to 0.9.4.

    The recommended Stripe API version is 2020-08-27.

    • Implement #199:

      • Support future recurring start date on backend forms
      • Add support for selecting and creating subscriptions with future start date on frontend forms
      • Allow selection of which frequency intervals to enable public recurring start date
      • Support future recur start date for memberships on frontend.
    • Fix #221 Return 200 OK for webhooks that stripe can't match to CiviCRM. Look for contribution using subscription_id for future recurring start date

    • Map customer to contact ID in IPN

    • Handle invoice.finalized IPN event - we now create the new contribution once we receive the invoice.finalized event. It will then be transitioned to Completed by invoice.payment_succeeded.

    • Record refund against the already recorded payment in CiviCRM so we update financial items correctly

    • API3 Stripe.Listevents !117 Provide additional information about stripe events.

    • If a contribution status is Failed and it later receives a successful payment notification it is updated from Failed to Completed.

    • Add system check for 'Is separate membership payment' on contribution pages which is not supported by the Stripe extension

    • Fix #225 No credit card display in Internet Explorer 11 (Support ECMAScript 5.1 javascript syntax).

    • Support translating text strings in javascript.

    • Fix issues with popup notifications not showing in some circumstances (eg. "Card declined").

    • Disable logging for civicrm_stripe_paymentintent table.

    • Fix #239 Hide configuration fields that we don't use.

    • Fix #241 Incorrect Form Validation for checkboxes on profiles

    • Fix #242 Stripe IPN events arriving out of order causing contributions to be stuck in "Pending" status.

    • Fix PHP notices:

      • When a checking for an extension dependency that is not yet downloaded or installed.
      • When checking for recur frequency on billing form.
    • IPN Code:

      • Pass json string to IPN class for decoding instead of decoding before passing
      • handlePaymentNotification should not be a static function.
      • Set cancel_date/cancel_reason for failed contribution. Don't update receive_date.
  • 6.4.2
    04a957b3 · Release 6.4.2 ·
    Release 6.4.2
    • Fix #210: If there are multiple reCaptcha on the page check and validate the one on the Stripe billing form only.
    • Update implementation for cancel subscription. Option to notify (default Yes) is now available on the backend cancel subscription form.
    • Fix #218: Ensure disallowed characters in description don't stop contributions from being processed.
    • Fixes to system checks (check for sweetalert was showing description for firewall extension).
    • Fix #215 Errors encountered when anonymous users switch payment processors.
    • Fix for 5.28 and propertybag.
  • 6.4.1
    70797ec1 · Release 6.4.1 ·
    Release 6.4.1

    This release REQUIRES that you upgrade mjwshared to 0.8.

    • Fix #196: Recurring contributions with incorrect amount per default currency in stripe.
    • Fix #198: Trigger postInstall hook so we set the revision and don't trigger the upgrader on install.
    • Fix #182: Failed subscription payment, receipt sent, but contribution not updated when retried.
    • Change validator error class to match CiviCRM (use crm-inline-error instead of error css class - see https://github.com/civicrm/civicrm-core/pull/16495)
    • Don't specify charset/collation when creating tables on new installs (use the database default).
    • Return 200 OK for webhook events we don't handle (normally they won't be sent as the extension specifies what it requires but if configured manually it may receive events that we don't handle).
    • Switch to new "recommended" contribution.repeattransaction and payment.create for new IPN payments.
    • Implement new doCancelRecur functionality and hide optional notify processor on 5.27+ (this has no impact on older versions of CiviCRM).
    • Fix CSRF token issues with civicrmStripeConfirm.js (3ds challenge was not triggering on thankyou page).
    • civicrmStripeConfirm.js is now a library available at CRM.payment.confirm and builds on CRM.payment.
    • Initial support for \Civi\Payment\PropertyBag.
    • Improve handling of network errors when loading Stripe elements and add a new jquery event: crmBillingFormReloadFailed.
    • Improve user notifications during pre-authentication and confirmation.
    • Add check for recommended SweetAlert extension.
    • Fix #208 use window.alert if SweetAlert is not installed.
    • Make sure we reset submitted flag if we are not able to submit the form.
    • Fix issues with form validation when you enable the "On behalf of Organisation" block on contribution pages - see #147 (comment 38994) and https://github.com/civicrm/civicrm-core/pull/17672.
  • 6.4
    ea99ea15 · Fix release notes ·
    Release 6.4

    This release REQUIRES that you upgrade mjwshared to 0.7 and your Stripe API version must be 2019-12-03 or newer.

    New Features:

    • The Stripe "element" now follows the current CMS/CiviCRM locale.

    • Add jquery form events:

      • 'crmBillingFormReloadComplete' and document jquery events.
      • 'crmBillingFormNotValid' so 3rd-party integrations can re-enable custom submit buttons etc. Add custom property on billing form to allow for custom validations
    • Add support for sweetalert library on form validation errors so we popup nice messages when you are missing required fields and for card errors and you click submit.

    • Make sure we don't submit the form if we have a reCaptcha and it is not valid.

    • Add setting to disable billing address fields.

    • Major improvements to form validation before submission - this significantly reduces the number of payments that are authorised but not captured.

    • Add a minimum API version so we don't have problems every time Stripe release a new API version.

    • Change style of card element


    • Make sure we generate backend contact links for customer metadata (previously they would sometimes get generated as frontend links).
    • Fix missing receipts for recurring subscription payment #122.
    • Fix #178 recurring payments for webform_civicrm when "Interval of installments" is selected.
    • If Stripe is not using the same currency as the payment was made we need to convert the fees/net amounts back to the CiviCRM currency.
    • Fix #196 Recurring contributions with incorrect amount per default currency in stripe - if Stripe uses a different currency to CiviCRM the amounts for recurring contributions were not being recorded correctly in CiviCRM.
    • Fix #189 Error on membership contribution page with autorenew set to automatic.

    Behind the scenes:

    • Further tweaks to get tests working
    • Initial steps to modernize the testing infrastructure.
    • Add some docblocks to the code.
    • Switch to event.code from deprecated event.keyCode.
    Client side (javascript):
    • Add support for a function getTotalAmount that could be used to retrieve amount from form if defined.
    • Restrict use of amount when creating paymentIntents.
    • Fix issues with stripe js on thankyou pages.
    • Call IPN->main() from inside a try catch to allow loops !94
    • Use minifier extension to minify js/css assets (much easier for development as we don't ship minified files anymore).
  • 6.3.2   Security Release
    4d79ed27 · Release 6.3.2 ·
    Release 6.3.2

    If you are using Stripe on public forms (without authentication) it is strongly recommended that you upgrade and consider installing the new firewall extension.

    Increasingly spammers are finding CiviCRM sites and spamming the linked Stripe account with 1000s of attempted payments and potentially causing your Stripe account to be temporarily blocked.


    • Add support for firewall extension

    • Add system check to recommend installing firewall extension

    • Add checks and restrictions to AJAX endpoint

    • Add cache code to js/css resources so they are reloaded immediately after cache clear.

    • #168 Improve handling of webhooks with mismatched API versions - now we track the dashboard API version and don't try to explicitly set a webhook API version. You may still need to delete and re-add your webhook but should not need to next time the API version changes.


    • #126 Stripe element now uses the CMS/CiviCRM locale so it will appear in the same language as the page instead of the browser language.
  • 6.3.1
    ab800724 · Release 6.3.1 ·
    Release 6.3.1
    • Add crm-error class to stripe card errors block so it is highlighted on non bootstrap themes
    • Fix Stripe.ipn API when working with charge.captured/succeeded
    • Update documentation to mention contributiontransactlegacy extension
    • #147 Add workaround and set required billing fields via jquery
    • #153 Support multiple participant registration and CiviDiscount with zero amount.
    • Fix non-stripe submit check - if amount is zero.
  • 6.3
    a322168c · Release 6.3 ·
    Release 6.3

    This release REQUIRES that you upgrade mjwshared to 0.6 and your Stripe API version to 2019-12-03.

    If you wish to test the upgrade you can remain on an older version or later but should update the API version as soon as you are happy.

    • Update required Stripe API version to 2019-12-03
    • Add support for recording partial refunds from Stripe.
    • For forms that have multiple submit buttons (eg. Save, Save and New) override the submit handler on all of them (This fixes some more instances of missing PaymentIntentID on the backend forms).
    • Resolve issues with backend forms and tax amounts (fixes issues with backend forms that include an additional tax amount).
    • Resolve issues with money formats that don't use a dot as decimal separator (eg. €1.024,20).
    • Update required Stripe API verison to 2019-12-03.
    • Fix issues with StripeSubscription.import and mismatched id/customer_id params.
    • Fix #125 Thousands of failed/spam transactions for charge.failed webhook (We ignore and return 200 OK to Stripe so it does not retry if there is no customer ID).
    • Change default to 1 hour to cancel uncaptured payments based on client feedback.
    • Update definition of getAmount to match current version in CiviCRM core.
    • Pre-fill existing billing postcode if we already have address.
    • Fix recurring contribution issue on drupal webform.
    • #148 Fix Credit or debit card translation.
    • Fix #149 Cannot submit payment from back end when tax and invoicing disabled.
  • 6.2.2
    9fcd11c7 · Release 6.2.2 ·
    Release 6.2.2

    Release 6.2.2

    • Make sure we detect memberships as auto-renew when they are "forced".
    • Make sure we always load the recurring contribution ID properly.

    Release 6.2.1

    • #121 Fix auto-recurring membership payments.
    • Stripe.ListEvents API - properly handle newer way to record trxn_id value.
    • Change doRefund signature to match what is in CiviCRM core (fixes a PHP warning).
  • 6.2
    d86982a4 · Require mjwshared 0.5 ·
    Release 6.2
    • Track paymentIntents and cancel uncaptured ones after 24 hours.

      Configurable via scheduled Job.process_stripe and API.

    • Refactor to support updating amount and re-confirming once we reach the thankyou page.
    • When we don't know the amount, pre-auth the card but don't confirm, then update the amount requested.

      This resolves, for example, registering multiple participants. Users may receive an additional confirmation step such as 3d secure on the Thankyou page if their card issuer requires it.

    • Refactor passing of token parameters to use pre_approval_parameters.

      This should resolve some issues with PaymentIntent not found.

    • Improve support for refunds in preparation for work in CiviCRM core (#15476-15479).
    • Add CiviCRM version info to stripe customer - this is useful when troubleshooting issues on client sites as it is important to know whether a reported issue may have been fixed in a later version.
    • Fix #110 -Allow submit if amount is 0.
    • Fix and record paymentIntents for recurring contributions - show authentication to user on thankyou page.

      this checks loads 3d secure etc from Stripe if required.

    • Don't try to record refund for an uncaptured payment.

      When an uncaptured payment is cancelled it triggers a charge.refunded event. But we don't want to record this in CiviCRM as it was never "captured" and the payment was never really taken.

  • 6.1.6
    Release 6.1.6
    • Fix #103 - Allow submission of drupal webform when there are multiple processors on the page (eg. Stripe + Pay later).
  • 6.1.5
    Release 6.1.5
    • Send email receipts from Stripe by default (as this was what 5.x did). Add a setting under Administer->CiviContribute->Stripe Settings to enable/disable receipts from Stripe.
    • Support recording full refunds from Stripe.
  • 6.1.4
    599779dc · Release 6.1.4 ·
    Release 6.1.4

    This release fixes a MAJOR issue that caused duplicate payments to be taken when a new recurring contribution (subscription) was setup. All users of 6.x should upgrade.

    • Don't take payment twice on recurring payments (This was happening because a payment was being created via a paymentIntent and subsequently via the first invoice generated by the subscription - currently we don't support 3D secure on subscriptions, this will be fixed in a future release).
    • If we get an error when submitting, make sure we run Stripe submit next time as well so we generate a paymentIntent/paymentMethod for the payment (this fixes the issue where only the first submission attempt would succeeed - subsequent submission attempts would fail with "Missing paymentIntentID").
    • Validate payment forms using javascript so we don't create multiple uncaptured paymentIntents when the form is not valid (each time the form was submitted and failed because eg. the email address was invalid a new paymentIntent would be created).
  • 6.1.3
    Release 6.1.3

    You need to Fix/Create webhook after installing this update to add the charge.captured event to the list of events sent to the webhook.

    • Handle charge.succeeded/charge.captured when no customer_id is provided - fixes 400 errors / missing customer_id.
    • Remove invalid setting of customer on paymentIntent (no user impact).
    • Small improvements to Stripe Plan code (no user impact).

    Note: You should use this CiviCRM core patch if using webform_civicrm 4.28.

  • 6.1.2
    Release 6.1.2
    • Fix #89 - Payment Element is not loading for backend "Credit Card Event Registration".
    • Fix repeatContribution - pass the found contribution ID instead of using a separate previous_contribution variable - fixes !63
  • 6.1.1
    2716581f · Release 6.1.1 ·
    Release 6.1.1
    • Fix issue with charge.succeeded triggering error on recurring contributions
  • 6.1
    b1e330af · Release 6.1 ·
    Release 6.1

    Release 6.1

    This release fixes a number of bugs/issues identified after the release of 6.0.

    Upgrade Advice

    IMPORTANT! If upgrading to 6.x for the first time make sure you install the mjwshared extension BEFORE you upgrade Stripe.

    This release requires an upgrade to version 0.4 of the MJWShared extension.

    ALL users of 6.0 should upgrade to this release.

    If upgrading to 6.x for the first time, please upgrade directly to 6.1 (do not install 6.0 first).


    • Support cards that do not request a postal/zip code (fixes #80).
    • Enable payments on backend (*fixes #79).
    • Resolve multiple issues with "more than one" payment processor on the form and stripe failing to submit if it wasn't the first to be selected:
      • Fix issue when script is reloaded by changes of payment processors.
      • Improve handling for multiple processors and pay later.
      • Make sure we clear the paymentIntentID from the session once we've used it (this prevents a browser refresh trying to use an already captured paymentIntent).