Braintree for Craft Commerce icon

Braintree for Craft Commerce

Version 3.2.1

October 23, 2026

Changed

  • New plugin icon: a white glyph on a black circle, with a white icon mask for the control panel nav.

Version 3.2.0

October 20, 2026

Added

  • Payment sources: a customer can save a card or PayPal account with Commerce's commerce/payment-sources/add action, subscribe with it and pay orders with it (paymentSourceId). Each is vaulted on the customer's Braintree customer (created if missing) and described as "Visa ending in ••••1111" or "PayPal (email)"; deleting one in Commerce deletes it in Braintree (#53).
  • A paymentSource option for getPaymentFormHtml(): the drop-in offers a card or PayPal in its vault flow, with no Apple Pay or Google Pay. subscription: true now does the same, PayPal included.
  • A "Verify cards when saved?" gateway setting (off by default): Braintree verifies a card before it is saved as a payment source, against the primary currency's merchant account and with the customer's primary billing address, so a declined card is refused when it is saved.
  • README sections on saving a payment source, verifying cards, paying with a saved source and subscribing.

Changed

  • Subscriptions are charged to the customer's primary payment source when it is on the Braintree gateway, otherwise to the one saved most recently.
  • commerce-braintree/payment-methods/delete and commerce-braintree/subscriptions/update-payment now accept POST requests from a signed-in user only.

Fixed

  • Fixed a security issue where any signed-in user could delete another customer's vaulted payment method, or change another customer's subscription, through the plugin's two controller actions.
  • Fixed subscriptions never starting on Craft 4 and 5 (a TypeError in subscribe()).
  • Fixed saving a payment source throwing on Commerce 4 and 5 (PaymentSource has no userId).
  • Fixed a refused subscription hiding Braintree's reason.
  • Fixed the drop-in posting an empty nonce when a saved payment method was already selected on load (vaulted forms).
  • Braintree's reason for refusing a payment source is now on the payment form's errors (paymentFormErrors), as well as in the log.
  • Saving a card that is already saved now keeps its existing payment source, and its primary flag, instead of replacing it.

Version 3.1.2

October 20, 2026

Added

  • A dropinOptions option for getPaymentFormHtml(): any of Braintree's drop-in options, merged over the plugin's own (#60).

Fixed

  • Fixed the gateway settings page erroring on Craft 4 multi-site installs (Site::getUiLabel() is Craft 5 only) (#58).
  • Fixed subscription renewal webhooks failing with a TypeError on Commerce 5 (craft\commerce\models\Currency no longer exists).
  • Fixed saving and finding payment sources on Commerce 5 (getAllGatewayPaymentSourcesByUserId() is now getAllGatewayPaymentSourcesByCustomerId()).
  • Fixed NotFound errors from the Braintree SDK not being caught when cancelling or refreshing a subscription.
  • Fixed the next payment amount using a currency property that no longer exists.
  • Fixed a PHP warning when a site has no merchant account override.
  • Removed a settings model and service that did not exist, which made getSettings() fatal.

Version 3.1.1

July 15, 2025

Fixed

  • missing gateway setting variable

Version 3.1.0

May 5, 2025

Added

  • multisite override support for merchant account ids
  • device data collection for dropin-ui

Updated

  • DropInUiSDK version 1.44.1
  • ClientSDK version 3.111.0

Version 3.0.3

May 16, 2024

Added

  • Craft 5 compatibility

Updated

  • DropInUiSDK version 1.42.0
  • ClientSDK version 3.102.0

Version 3.0.2

March 13, 2024

Fixed

  • Braintree\Customer type

Version 3.0.1

February 6, 2024

Changed

  • manual state control option for buttons
  • Released - finally!

Version 3.0.0-beta.11

May 18, 2023

Changed

  • changed callback param to object with callbacks for "onPaymentMethodSelect" and "onPaymentMethodReady"

Version 3.0.0-beta.10

March 31, 2023

Changed

  • express checkout params

Added

  • DropinUi Callback param.

Version 3.0.0-beta.9

March 24, 2023

Changed

  • quick checkout => express checkout

Added

  • params for express checkout buttons
  • express checkout buttons wrapping div with class "express-checkout-buttons" for layout purposes.

Version 3.0.0-beta.8

March 21, 2023

Changed

  • removed testing values

Version 3.0.0-beta.7

March 21, 2023

Changed

  • updated dropinUI sdk to 1.34.0
  • updated client sdk to 3.91.0

Added

  • NEW quick checkout ability for applePay and googlePay

Version 3.0.0-beta.6

March 8, 2023

Changed

  • order.user => order.customer

Added

  • Ability to specify SDK versions

Version 3.0.0-beta.5

March 8, 2023

Fixed

  • js form submission

Version 3.0.0-beta.4

March 3, 2023

Fixed

  • data type issues
  • multiple form issues
  • fixed no jquery changes

Changed

  • Updated submit button dataset to allow html not just text

Version 3.0.0-beta.3

January 30, 2023

Changed

  • Updated data type

Version 3.0.0-beta.2

January 19, 2023

Changed

  • Removed jQuery dependency for DropInUI

Version 3.0.0-beta.1

October 12, 2022

Added

  • Craft / Commerce 4 support.

Version 2.4.3

June 10, 2022

Changed

  • Change of ownership

Version 2.4.2

December 16, 2021

Fixed

  • Fixed an issue with the currency being passed to the currency formatter.

Added

  • Added support for subscription trial days - thanks @digason

Version 2.4.1

September 24, 2021

Fixed

  • Fixed an issue where the Drop-in UI wasn't using the correct Google Pay object - thanks @jmauzyk.

Added

  • Added a new setting for including a Google Pay Mechant ID.

Version 2.4.0

July 20, 2021

Added

  • support for authorize and capture functions thanks @jmauzyk

Version 2.3.9

October 28, 2020

Added

  • logging
  • address field truncating to 50 characters due to braintree api restrictions

Version 2.3.8

September 16, 2020

Fixed

  • Fixed a bug where purchases weren't using the createSale method

Version 2.3.7

September 16, 2020

Added

  • Created a refreshPaymentHistory method so the full subscription payment history can be view in the CP using the "Refresh payment history" button.

Fixed

  • Fixed a bug where a subscription payment used the original subscription date instead of the latest transaction date.

Changed

  • Moved gateway->transction()->sale to it's own createSale method.

Version 2.3.6

June 23, 2020

Fixed

  • Allow setting of merchantAccountId for single currency setup (#29)
  • MerchantAccountId wrapped in Craft::parseEnv (#30)
  • Throwing braintree exceptions using PaymentExceptions (#31)

Version 2.3.5

March 26, 2020

Fixed

  • Fixed project config bug

Version 2.3.4

March 12, 2020

Changed

  • Updated gateway property visability

Version 2.3.3

January 9, 2020

Changed

  • Update requirements to allow for Craft Commerce 3

Version 2.3.2

January 9, 2020

Fixed

  • switch subscription payment source removes old payment source if not in use by another subscription.

Changed

  • DropinUI don't allow save card option if its a subscription payment

Version 2.3.1

December 18, 2019

Fixed

  • subscription detail page throwing error

Changed

  • Cancelling a subscription now deletes the payment source if not being used by another active subscription.

Added

  • deletePaymentMethod(\$token)

Version 2.3.0

December 13, 2019

Changed

  • Update Braintree PHP SDK to 4.5.0
  • Updated dropinUi js to 1.21.0
  • dropinUi form submission to be \$form.trigger('submit')
  • removed country name from billing and shipping addresses, now just uses the ISO2 code

Added

  • DropinUi translations.

Version 2.2.7

November 19, 2019

Fixed

  • A bug where subscriptions were not being created when the currency plan was different to the default currency in Braintree

Version 2.2.6

November 15, 2019

Fixed

  • Fixed a bug that could occur if a susbcrption was cancelled directly in Braintree.

Version 2.2.5

October 26, 2019

Changed

  • Craft Commerce 2.2 compatability update

Version 2.2.4

October 2, 2019

Fixed

  • Fixed date bug in _handleSubscriptionCharged method
  • Fixed deprecation warning for locale in DropinUi template

Changed

  • Updated DropinUi button reset

Version 2.2.3

September 12, 2019

Changed

  • Updated Braintree JS versions

Version 2.2.2

September 5, 2019

Fixed

  • gateway settings twig mistake

Version 2.2.1

September 5, 2019

Fixed

  • address formatting to cater for no country

Added

  • autosuggestField support for environment settings
  • customer info sent
  • shortNumber used for orderId

Version 2.2.0

September 3, 2019

Added

  • 3DS2 support

Changed

  • DropinUi Javascript jQuery object is now passed into init function.

Version 2.1.18

August 29, 2019

Fixed

  • Don't pass address if no address on order.

Version 2.1.17

August 19, 2019

Fixed

  • Addresses now passing US state abbreviation for paypal requirement.

Version 2.1.16

August 15, 1019

Fixed

  • Paypal when using getPaymentFormHtml() (issue #6)

Version 2.1.15

July 29, 2019

Fixed

  • Fixed a bug in an address with the business name/company

Version 2.1.14

July 25, 2019

Added

  • Billing and Shipping addresses now passed to Braintree

Fixed

Version 2.1.13

July 17, 2019
  • Fixed a bug where subscription data was being returned as an object

Version 2.1.12

July 15, 2019

Changed

  • Updated error message for better error logging

Version 2.1.11

July 3, 2019

Changed

  • User friendly error message

Version 2.1.10

June 27, 2019

Added

  • Added support for Craft Commerce 2.1.4 and craft\commerce\base\SubscriptionResponseInterface::isInactive().

Version 2.1.9

June 18, 2019

Added

  • Subscription updates
  • Subscription webhooks support

Version 2.1.8

May 29, 2019

Fixed

  • DropIn UI jQuery reference, thanks @davecosec

Version 2.1.7

May 21, 2019

Fixed

  • multi-currency support

Version 2.1.6

March 12, 2019

Changed

  • gateway.getPaymentFormHtml() returns raw by default

Fixed

  • rendering issue when using getPaymentFormHtml()

Version 2.1.5

February 25, 2019

Added