Third-party pluginLast verified 2026-09-11 · Reviewed by a person 2026-09-25
Braintree connects to commercetools through the Braintree for Composable Commerce connector, a public certified Connect connector built and maintained by Mediaopt GmbH and installed from the Connect marketplace in the Merchant Center; commercetools lists it among its available public connectors and PayPal links to the same listing from its third-party plugin page. A second, separately maintained connect-payment-integration-braintree repository sits in the commercetools GitHub organization but appears in neither the marketplace table nor the Checkout docs.1
UAT-Ops testing: Braintree's sandbox was tested by UAT-Ops on 2026-09-11 with the directory's card flow (7 passed, 1 expected rejection) → evidence on the Braintree hub. The commercetools integration itself has not been run.
Sources checked: 18 claims from 6 sites, listed at the foot of the page.
Connects through Connect connector (enabler, processor, braintree-extension API extension, braintree-notifications webhook receiver and a braintree-commercetools-events subscription) installed from the Connect marketplace; the processor uses the commercetools Checkout API and the server-side braintree SDK, the enabler embeds braintree-web in the storefront. Biggest gotcha: Two connectors with the same package name.
How it connects
Method
Connect connector (enabler, processor, braintree-extension API extension, braintree-notifications webhook receiver and a braintree-commercetools-events subscription) installed from the Connect marketplace; the processor uses the commercetools Checkout API and the server-side braintree SDK, the enabler embeds braintree-web in the storefront1
commercetools Checkout via Payment Integrations, with per-method predicates for country, currency and logged-in customers, Custom storefront via the braintree-extension API extension and custom fields (getClientTokenRequest, transactionSaleRequest), described as the fine-grained non-Checkout path5
PCI scope
Depends on the checkout mode you choose; see the gotchas below.6
What works on this platform
Yes: a source confirms it on this integration. Limited: supported, but only under meaningful conditions or through a subset of connector paths. Not verified here: the gateway supports it, but no source confirms this integration exposes it. No: not available. A capability with no source either way is left off.
Listed by commercetools as a supported method; 3D Secure is on by default and card validation before vaulting is a processor flag (BRAINTREE_VALIDATE_CARD).
US only and only for a logged-in, vaultable customer (recommended predicate customerId != null and billingAddress.country = "US"); ACH settlement webhooks were added in release 1.0.21.
The partner listing names Account Updater and Network Tokenization among Braintree features available through the connector; no connector setting governs it.
Card vaulting is switched on with STORED_PAYMENT_METHODS_ENABLED=true; the events app links Braintree customer ids to commercetools customers. Saving PayPal or ACH accounts and the former pure-vault mode were dropped with the discontinued npm client.
The partner listing states partial and full capture plus refunds; the commercetools-org connector notes that capture and refund are asynchronous in Braintree, so the authoritative status lives at Braintree.
One Braintree merchant account per deployment: the README rules out different BRAINTREE_MERCHANT_ID values per shop, method or country, and the commercetools-org connector states one merchant account with a single currency per deployment.
Braintree supports this; no source confirms it on this integration.
Capability status reflects the integration and documentation available at the time of verification, not necessarily every capability of the underlying gateway or platform.
Testing it
Open a Braintree sandbox account (separate from production; nothing transfers) and copy its merchant id, public key, private key and, if not the default, the merchant account id. Install Braintree for Composable Commerce from the Connect marketplace in a commercetools trial Project, choosing region and Project and entering BRAINTREE_ENVIRONMENT=sandbox plus the CTP_* API-client values, CTP_CHECKOUT_URL and the optional flags (BRAINTREE_AUTOCAPTURE, STORED_PAYMENT_METHODS_ENABLED, BRAINTREE_PER_METHOD_CONFIG). After the status turns Installed, open Apps > braintree-notifications on the installation page, copy its URL and register it under Settings > API > Webhooks in the Braintree sandbox Control Panel, then use Check URL to confirm it answers. For local runs, docker compose starts a JWT mock server, enabler and processor. Pay with sandbox cards such as Visa 4111111111111111, and use amounts of 2000.00-2999.99 to force a processor decline. Assert that a sale creates the commercetools Payment and transaction, that capture or refund status is confirmed by the Braintree Control Panel rather than assumed from the commercetools transaction, that transaction_settled and local_payment_completed webhooks update the transaction state, and that ACH is offered only to a logged-in US customer.1
UAT-Ops runs integration flows like this against the real sandbox and keeps the evidence. Get one email when it opens.
Gotchas
Two connectors with the same package name
Both mediaopt's connector and the commercetools-org connect-payment-integration-braintree ship a processor called payment-integration-braintree. Only mediaopt's appears in the Merchant Center's public-connector table and on the partner listing, and it is the one still moving (release 1.0.21 on 2026-07-29, pushed 2026-09-11). The commercetools-org repo stopped at v1.0.2 on 2025-11-26 with 23 open issues. Do not assume the org name means it is the supported path.
The connector runs against a single BRAINTREE_MERCHANT_ID and optional BRAINTREE_MERCHANT_ACCOUNT; the README rules out different ids per shop, payment method or country, and the commercetools-org variant states one merchant account with a single currency. Braintree's multi-currency model is one merchant account per currency, so a multi-currency Project needs a deployment per currency, each with its own webhook registration.
The webhook URL is registered by hand, after install
Nothing registers braintree-notifications with Braintree for you. After the status reaches Installed, open Apps on the installation page, copy the notifications URL and add it under Settings > API > Webhooks in the Braintree Control Panel. Until then transaction_settled, transaction_settlement_declined, transaction_disbursed and local_payment_completed never arrive, and local payment methods and ACH quietly stay pending. Capture and refund are asynchronous at Braintree anyway, so the Control Panel is the authority.
ACH and local methods need predicates or they show for everyone
ACH requires a logged-in, vaultable customer; guests cannot pay with it. The README recommends customerId != null and billingAddress.country = "US" as the Checkout payment-integration predicate, and each local method carries a country plus currency rule (Bancontact BE/EUR, iDEAL NL/EUR, EPS AT/EUR, Blik and Przelewy24 PL). Omit the predicates and shoppers see buttons that fail at Braintree.
The old npm client is gone, and some features went with it
Mediaopt discontinued the braintree-commercetools-client npm package and moved its core into the enabler and processor. Saving PayPal or ACH accounts and the earlier pure-vault mode did not survive the move; only card vaulting remains, behind STORED_PAYMENT_METHODS_ENABLED=true. Storefronts built on the client package should plan a migration rather than expecting parity.
Last verified 2026-09-11 · Reviewed by a person 2026-09-25
Integration capabilities, requirements, pricing, availability, and vendor policies may change over time. UAT-Ops documents information based on the authoritative sources and testing available at the time of review.
Where newer information, testing, or vendor documentation materially changes a published claim, UAT-Ops may revise the page to reflect the most current verified information. Readers should confirm time-sensitive requirements with the relevant vendor before making production or purchasing decisions.