Skip to content
Branch: master
Find file Copy path
Find file Copy path
11 contributors

Users who have contributed to this file

@braintreeps @mickeyreiss @intelliot @burnto @skunkworks @demerino @sestevens @billwerges @jackellenberger @scannillo @crookedneighbor
896 lines (644 sloc) 35.3 KB

Braintree iOS SDK Release Notes

4.27.0 (2019-08-15)

  • Remove unneeded pre-processor directives
  • Added new fields to BTThreeDSecureInfo

4.26.3 (2019-07-31)

  • Fixed issue with Carthage binary spec for CardinalMobile

4.26.2 (2019-07-31)

  • Add support for CardinalMobile binary only framework when using Carthage

4.26.1 (2019-07-26)

  • Update CardinalMobile to v2.1.4-2
    • Fix issue distributing to App Store

4.26.0 (2019-07-26)

  • Send analytics timestamps in milliseconds
  • Fix crash on apps with deployment targets without minor version (thanks @squall09s)
  • Add additional fields to BTThreeDSecureInfo

4.25.1 (2019-07-15)

  • Correct importing of BTConfiguration+ThreeDSecure (thanks @ejensen)
  • Add missing header documentation for BTThreeDSecureLookup

4.25.0 (2019-07-12)

  • Update CardinalMobile to v2.1.4
    • Remove use of advertisingIdentifier

4.24.0 (2019-07-09)

  • Add 3DS 2 Support
  • Update 3DS redirect to newest version
  • Update platform to iOS 8.0 in podspec
  • Remove location data from analytics collection

4.23.2 (2019-06-20)

  • Fix issue that caused a crash when 3DS auth response is invalid

4.23.1 (2019-06-17)

  • Update analytics parameters
  • Update local payment endpoint

4.23.0 (2019-03-07)

  • Add Hiper and Hipercard support

4.22.0 (2019-01-30)

  • Add support for BTPayPalLineItem
  • Fix build issue for Demo app

4.21.0 (2018-12-12)

  • Fix occasional crash in libPPRiskComponent.a

4.20.2 (2018-11-16)

  • Fix minimum iOS version in libPPRiskComponent.a

4.20.1 (2018-11-14)

  • Update libPPRiskComponent.a to latest version

4.20.0 (2018-10-30)

  • Luhn validate UnionPay cards
    • Luhn-invalid UnionPay cards were previously rejected server side rather than client side
  • Fix retain cycle when ovewriting an NSURLSession
  • Update PayPalDataCollector to include latest libPPRiskComponent.a

4.19.0 (2018-09-13)

  • Update properties on BTLocalPaymentRequest

4.18.0 (2018-08-31)

  • Add optional merchantAccountId to BTPayPalRequest
  • Add openVenmoAppPageInAppStore to BTVenmoDriver
  • Add BTLocalPayment to BTPaymentFlow
    • Replaces the BTIdeal integration

4.17.0 (2018-07-17)

  • Update GraphQL URLs

4.16.0 (2018-06-15)

  • Add shippingAddressEditable flag to BTPayPalRequest

4.15.2 (2018-06-13)

  • Fix issue where address override was not set for PayPal billing agreements

4.15.1 (2018-06-07)

  • Use angled brackets for BraintreeVenmo header imports (thanks @vicpenap)

4.15.0 (2018-04-30)

  • 3D Secure
    • Add support for American Express SafeKey params

4.14.0 (2018-04-03)

  • Ensure animations are consistent for PayPal SFSafariViewController flow (thanks @nudge)
  • Update header documentation
  • Add BTAppSwitchDelegate events appContextWillSwitch and appContextDidReturn
    • Addresses the issue that notifications were inconsistent across app switches #383

4.13.0 (2018-03-20)

  • Update PayPalDataCollector to include latest libPPRiskComponent.a

4.12.0 (2018-03-06)

  • Add support for Venmo profiles
  • Fix demo app issue with CocoaPods

4.11.0 (2018-02-05)

  • Fix code for implicit retain self warning (thanks @keith)

4.10.1 (2018-02-01)

  • Add BTThreeDSecureInfo to BTCardNonce
  • Use angled brackets for BraintreePayPal header imports (thanks @nudge)

4.10.0 (2017-12-08)

  • Add iDEAL support
  • Add new 3D Secure integration with browser support
  • Fix issue where ApplePay nonces were not having their default property set (Thanks @rksaraf)

4.9.6 (2017-11-13)

  • Fix issue where Venmo attempted to vault when using a Tokenization Key

4.9.5 (2017-11-03)

  • Fix a timeout issue on configuration fetch
  • Static analysis fixes
  • Add BraintreeAmericanExpress module and getRewardsBalance method

4.9.4 (2017-10-02)

  • Fix Xcode9 compatibility issues with iOS 7.0

4.9.3 (2017-09-28)

  • Update Xcode 9 code for availability checking
  • Fix analytics thread issue

4.9.2 (2017-09-25)

  • Fix Xcode9 build warnings
  • Add additional billing address params to card builder
    • Country Code Alpha 3
    • Country Code Numeric
    • Company
    • Extended Address

4.9.1 (2017-09-20)

  • Update libPPRiskComponent to latest version

4.9.0 (2017-09-13)

  • Add support for SFAuthenticationSession for PayPal payments

4.8.7 (2017-08-30)

  • Add firstName and lastName to BTCard

4.8.6 (2017-08-17)

  • Add additional bin data to card based payment methods

4.8.5 (2017-07-21)

  • Fix bug that caused a crash on iOS11 (Beta 3) when using a Tokenization Key in production (Thanks @peterstuart)

4.8.4 (2017-06-26)

  • Update to Kount 3.2
  • Update Demo to support Xcode9 (Beta 1) and iOS11
  • Update README

4.8.3 (2017-05-30)

  • Fix Pay with Venmo bug

4.8.2 (2017-05-11)

  • Add PayPal Credit support to PayPal Billing Agreements flow
  • Add V3 Client Token support
  • Enable client side vaulting of Venmo nonces
  • Fix potential memory leak issue #312
  • Fix bug causing random crashes in 3DS flow #329

4.8.1 (2017-04-07)

  • Optimize BTAPIClient:initWithAuthorization: when using a client token
  • Fix invalid documentation tags

4.8.0 (2017-03-30)

  • Enable PayPal Credit
  • Add support for displayName and landing_page_type PayPal options
  • Fix issue with 3DS error callbacks #318
  • Resolve build error in Xcode 8.3

4.7.5 (2017-02-22)

  • Fix issue where PayPal correlation_id was not set correctly
  • Add support for custom PayPal authentication handler
  • Update docs to specify Xcode 8+ requirement
  • Fix header import in BTAnalyticsMetadata.m
  • Additional tuning for Travis CI

4.7.4 (2017-01-13)

  • Update UnitTests to Swift 3
  • Update PayPal header docs
  • Update CocoaDocs and remove styling

4.7.3 (2016-11-18)

  • Allow BraintreeCore to be compatible with App Extensions
  • Fix BraintreePayPal use of queryItems for iOS 7 compatibility
  • Present SFSafariViewControllers from the top UIViewController via Drop-in to avoid blank SFSafariViewController
    • Set BTPaymentRequest presentViewControllersFromTop to YES to opt in to this behavior
  • Fix @param warning for incorrect argument name
  • Fix CocoaDocs and add styling

4.7.2 (2016-11-08)

  • Update Apple-Pay
    • Fix issue when using BTConfiguration:applePaySupportedNetworks with Discover enabled on devices <iOS 9
    • Add BTApplePayClient:paymentRequest: - creates a PKPaymentRequest with values from your Braintree Apple Pay configuration
  • Update documentation and README

4.7.1 (2016-10-18)

  • Update to Kount 3.1
  • Update libPPRiskComponent to latest version
  • Refactored with links instead of text
  • Re-add new Drop-In demo from BraintreeDropIn
  • Fix fbinfer warnings

4.7.0 (2016-09-23)

  • Move BraintreeDropIn and BraintreeUIKit to a new separate repository to allow cleaner separation and iteration for newer versions of Drop-In.
    • Please see the new repository for updated integration instructions if you were using the Beta Drop-In Update.
    • If you were using Drop-In from BraintreeUI, you do not have to update. However, you may want to check out the new Drop-In for an updated experience.
  • Fix issue with DataCollector setting the merchant ID automatically to configure Kount

4.6.1 (2016-09-15)

  • Fix conflicting private API name Fixes #265
  • Fix deprecation warnings for Xcode 8 Fixes #267
  • Fix target membership for static library Fixes #264
  • Improve Maestro card number recognition

4.6.0 (2016-09-09)

  • Fix nullability annotations for Xcode 8 Fixes #260
  • Add userAction property to BTPayPalRequest
  • (BETA) Updates to BraintreeDropIn

4.5.0 (2016-08-05)

  • Update DataCollector API
    • Add initializer and new data collection methods that take a completion block
      • New data collection methods use Braintree gateway configuration to configure Kount
    • Previous API for BTDataCollector has been deprecated
  • Remove Venmo user whitelist – all Venmo users may now make merchant purchases using Venmo.

4.4.1 (2016-07-22)

  • Update and fix issues in BraintreeDropIn based on feedback
  • Make more headers public in BraintreeUIKit
  • Fix BraintreeUIKit module name for Cocoapods
  • Add support for 3D Secure to BraintreeDropIn (see Drop-In docs)
  • Update the Drop-In docs
  • Add features to support vaulting Venmo when using Drop-In (coming soon)

4.4.0 (2016-07-14)

  • (BETA) Release of new BraintreeDropIn and BraintreeUIKit frameworks
    • BraintreeDropIn bundles our new UI components and Braintree API's for a whole new Drop-In experience
    • UI components, helpers, vector art and localizations are now public and fully accessible via BraintreeUIKit
    • Learn more about our Drop-In Update
    • Note that our legacy Drop-In (BraintreeUI) has not changed
  • (BETA) Various updates to the UnionPay component
  • Improve error messages when Braintree gateway returns 422 validation errors

4.3.2 (2016-06-09)

  • Update Pay with Venmo to use merchant ID and environment from configuration
  • PayPal Checkout supports an intent option, which can be authorize or sale
    • See BTPayPalRequest's intent property
  • Provide better NSError descriptions when Braintree services return a 4xx or 5xx HTTP error

4.3.1 (2016-05-25)

  • Add public method to fetch a customer's vaulted payment method nonces
  • Drop-in bug fixes
    • Do not show mobile phone number field
    • Fix issue where American Express display text is truncated
  • Merge #241 - Add missing source files to Braintree static library target. (Thanks @AlexDenisov!)

4.3.0 (2016-05-03)

  • Add support for UnionPay cards
  • Drop-in displays vaulted payment methods by default first
    • Payment method nonces have an isDefault property
  • Add BTHTTPErrorCodeRateLimitError to indicate when Braintree is rate-limiting your app's API requests
  • Update support for static library integrations
  • Use in-memory NSURLCache for configuration caching
  • Analytics events are batched together for better performance
  • Update theme of card form child components when using custom theme
  • PayPalOneTouch is less chatty when logging to console
  • Add
  • Update PayPalDataCollector to include latest libPPRiskComponent.a
  • Remove unused targets and schemes: Demo-StaticLibrary, UnitTests-CocoaPods, and UnitTests-StaticLibrary

4.2.3 (2016-02-22)

  • Remove assertion from PayPal One Touch Core when reading from Keychain fails
  • Remove NSLog() from PayPal One Touch Core
  • Fix nullability annotation in PPFPTITracker.h to squelch error in Xcode 7.3 Beta

4.2.2 (2016-02-11)

  • Fix crash that occurs when downgrading Braintree from 4.2.x to previous versions

4.2.1 (2016-02-05)

  • Fix deprecation warning/error in PayPal One Touch for apps that target >= iOS 9.0

4.2.0 (2016-02-04)

  • Open source PayPal One Touch library
    • Source code for PayPal One Touch library is now included in Braintree iOS SDK repository
    • Added CocoaPods subspecs for PayPalOneTouch and PayPalDataCollector
  • Improve BTPaymentButton
    • Payment button displays payment options based on configuration
    • Shows loading activity indicator when fetching configuration
    • Updated style for PayPal button when PayPal is the only available payment option
    • Can manually configure available payment options via enabledPaymentOptions property
  • Added setCardNumber: and setCardExpirationMonth:year: to BTDropInViewController
    • Drop-in card form can be prepopulated, e.g. by
  • Deprecate BTDataCollector payPalClientMetadataID and collectPayPalClientMetadataId
    • Use PPDataCollector collectPayPalDeviceData when you only need to collect PayPal device data
  • Add Travis CI to run tests

4.1.3 (2016-01-08)

  • Prevent crash when BTPayPalDriver instantiates SFSafariViewController with an invalid URL, and return an error instead
  • Update BTTokenizationService allTypes property to be NSArray <NSString *>

4.1.2 (2015-12-09)

  • Workaround for Swift compiler bug that causes BTJSON to conflict with Alamofire (see Issue #195)
    • For the merchant apps that read their configuration directly from BTJSON via Objective-C, you may need to switch from dot syntax to square brackets to call BTJSON methods
  • Ignore UIAlertView deprecation warning in BTDropInErrorAlert

4.1.1 (2015-12-08)

  • Bug fix for Drop-in view controller showing empty BTPaymentButton
  • Update Kount to 2.6.2

4.1.0 (2015-12-07)

  • Limited release of Pay With Venmo
  • Fix for Carthage integrations: remove reference to Braintree developer team from Xcode framework targets
  • Streamlined vector graphics for JCB logo to reduce build time of BraintreeUI

4.0.2 (2015-11-30)

  • If the Client Token has a Customer ID, Drop-in will automatically fetch the customer's vaulted payment methods.
    • A bug in 4.0.0-4.0.1 prevented Drop-in from fetching payment methods even if a Customer ID is provided in the Client Token; apps needed to call fetchPaymentMethodsOnCompletion before presenting Drop-in.
    • You can still call fetchPaymentMethodsOnCompletion to pre-fetch payment methods, so that Drop-in doesn't need to show its own loading activity indicator.
  • Prevent calling requestsDismissalOfViewController on iOS 8 when there is nothing to dismiss. (Merge #199 - thanks, @Reflejo!)
  • Drop-in Add Payment Method fixes
    • Show/hide CVV and postal code fields without flicker
    • Use Save bar button item in upper right to add additional payment methods
  • BTPayPalDriver will not call BTAppSwitchDelegate callback methods when SFSafariViewController is presented (Issue #188)

4.0.1 (2015-11-17)

  • Drop-in fixes
    • Fixed a bug that prevented cards from being vaulted.
    • Fixed a bug that prevented card types from being parsed.
    • Updated Demo to use paymentRequest and always call completionBlock.
  • Resolved an analyzer warning in BTAPIClient.m.

4.0.0 (2015-11-09)

  • Remodel the iOS SDK into frameworks with smaller filesize and greater flexibility.
  • The public API has changed significantly in this release. For details, see the v4 Migration Guide and the public header files.
  • APIs have been refactored to use completion blocks instead of delegate methods.
  • BTPaymentProvider has been removed. Instead, use payment option frameworks. For example, import BraintreeApplePay and use BTApplePayClient.
  • Added support for Tokenization Keys in addition to Client Tokens.
  • All methods and properties have been updated with nullability annotations.
  • Added support for Carthage in addition to CocoaPods.
  • PayPal One Touch is greatly improved in this release. It's slimmer and provides a better user experience, with browser switch on iOS 8 and SFSafariViewController on iOS 9.
  • Added support for PayPal billing agreements (the New Vault Flow) and one-time payments.
  • Drop-in is now part of the new BraintreeUI framework. BraintreeUI has been refactored for greater flexibility; it will automatically exclude any payment options that are not included in your build (as determined by CocoaPods subspecs or Carthage frameworks).
  • Venmo One Touch has been excluded from this version. To join the beta for Pay with Venmo, contact Braintree Support.
  • BTData has been renamed to BTDataCollector.
  • BTPaymentMethod has been renamed to BTPaymentMethodNonce.

As always, feel free to open an Issue with any questions or suggestions that you have.

3.9.7 (2015-12-21)

  • Ignore UIAlertView deprecation warning in BTDropInErrorAlert

3.9.6 (2015-10-08)

  • Update Kount DeviceCollectorSDK to v2.6.2 to fix #175 (thanks, @keith)

3.9.5 (2015-10-05)

  • Add runtime checks before using new features in Apple Pay iOS 9
    • Bug in 3.9.4 caused shippingContact, billingContact, and paymentMethod to be used on < iOS 9 devices, which causes unrecognized selector crashes

3.9.4 (2015-09-25)

  • 🚨 This version requires Xcode 7 and iOS SDK 9.0+
  • Update and Braintree Demo app for iOS 9 and Xcode 7
  • Update PayPal mSDK to 2.12.1 with bitcode
  • Update Kount library with bitcode support
  • Update Apple Pay support for iOS 9. BTApplePayPaymentMethod changes:
    • Deprecate ABRecordRef properties: billingAddress and shippingAddress
    • Add PKContact properties: billingContact and shippingContact

3.9.2-pre6 (2015-08-28)

  • PayPal
    • Fix canOpenUrl warnings in iOS9
  • Added PayerId and ClientMetadataId to BTPayPalPaymentMethod

3.9.2-pre5 (2015-08-19)

  • PayPal
    • Fix Billing Agreements support
    • Update PayPal One Touch Core

3.9.2-pre4 (2015-08-04)

  • PayPal
    • Update support for PayPal Checkout
    • Add support for PayPal Billing Agreement authorization
    • Update PayPal One Touch Core

4.0.0-pre2 (2015-06-23)

  • PayPal
    • For single payments, BTPayPalPaymentMethod now provides firstName, lastName, phone, billingAddress, and shippingAddress properties.
    • For future payments, add support for additional scopes.
    • Add demo for PayPal Checkout and scopes.
  • Change @import to #import (#124).
  • Add accessibility label to BTUICTAControl.


  • Replace mSDK with One Touch Core
    • This replaces PayPal in-app login with browser switch for future payments consent
    • This adds the capability to perform checkout (single payments) with One Touch

3.9.3 (2015-08-31)

  • Xcode 7 support
  • Improved Swift interface with nullability annotations and lightweight generics
  • Update PayPal mSDK to 2.11.4-bt1
    • Remove checking via canOpenURL:
  • Bug fix for BTPaymentButton edge case where it choose the wrong payment option when the option availability changes after UI setup.

3.9.2 (2015-07-08)

  • 🚨 This version requires Xcode 6.3+ (otherwise you'll get duplicate symbol errors)
  • 🚨 New: Accelerate.framework must be linked to your project (CocoaPods should do this automatically)
  • Remove Coinbase CocoaPods library as an external dependency
    • Integrating Coinbase SDK is no longer a prerequisite for manual integrations
    • No change to Braintree Coinbase support; existing integrations remain unaffected
    • Braintree iOS SDK now vendors Coinbase SDK
  • Add session ID to analytics tracking data
  • Add BTPayPalScopeAddress
  • Update PayPal mSDK to 2.11.1-bt1
    • Requires Xcode 6.3+
    • Fix an iPad display issue
    • Improve mSDK screen blurring when app is backgrounded. NOTE: This change requires that you add Accelerate.framework to your project
    • Bug fixes

3.9.1 (2015-06-12)

  • Add support for additional scopes during PayPal authorization
    • Specifically supporting the address scope
    • BTPayPalPaymentMethod now has a billingAddress property that is set when an address is present. This property is of type BTPostalAddress.

3.8.2 (2015-06-04)

  • Fix bug in Demo app
    • Menu button now works correctly
  • Fix bug with PayPal app switching
    • The bug occurred when installing a new app after the Braintree SDK had been initialized. When attempting to authorize with PayPal in this scenario, the SDK would switch to the wallet and launch the in-app authorization.

3.8.1 (2015-05-22)

  • 3D Secure only: 🚨 Breaking API Changes for 3D Secure 🚨
    • Fix a bug in native mobile 3D Secure that, in some cases, prevented access to the new nonce.
    • Your delegate will now receive -paymentMethodCreator:didCreatePaymentMethod: even when liability shift is not possible and/or liability was not shifted.
    • You must check threeDSecureInfo to determine whether liability shift is possible and liability was shifted. This property is now of type BTThreeDSecureInfo. Example:
- (void)paymentMethodCreator:(__unused id)sender didCreatePaymentMethod:(BTPaymentMethod *)paymentMethod {

    if ([paymentMethod isKindOfClass:[BTCardPaymentMethod class]]) {
        BTCardPaymentMethod *cardPaymentMethod = (BTCardPaymentMethod *)paymentMethod;
        if (cardPaymentMethod.threeDSecureInfo.liabilityShiftPossible &&
            cardPaymentMethod.threeDSecureInfo.liabilityShifted) {

            NSLog(@"liability shift possible and liability shifted");

        } else {

            NSLog(@"3D Secure authentication was attempted but liability shift is not possible");

  • Important: Since cardPaymentMethod.threeDSecureInfo.liabilityShiftPossible and cardPaymentMethod.threeDSecureInfo.liabilityShifted are client-side values, they should be used for UI flow only. They should not be trusted for your server-side risk assessment. To require 3D Secure in cases where the buyer's card is enrolled for 3D Secure, set the required option to true in your server integration. See our 3D Secure docs for more details.

3.8.0 (2015-05-21)

  • Work around iOS 8.0-8.2 bug in UITextField
    • Fix subtle bug in Drop-in and BTUICardFormView float label behavior
  • It is now possible to set number, expiry, cvv and postal code field values programmatically in BTUICardFormView
    • This is useful for making the card form compatible with

3.8.0-rc3 (2015-05-11)

  • Upgrade PayPal mSDK to 2.10.1
  • Revamp Demo app
  • Merge with 3.7.x changes

3.8.0-rc2 (2015-04-20)

  • Coinbase improvements
    • Resolved: Drop-in will now automatically save Coinbase accounts in the vault
    • Coinbase accounts now appear correctly in Drop-in
    • Expose method to disable Coinbase in Drop-in
  • Demo app: Look sharp on iPhone 6 hi-res displays
  • Modified BTUIPayPalWordmarkVectorArtView, BTUIVenmoWordmarkVectorArtView slightly to help logo alignment in BTPaymentButton and your payment buttons

3.8.0-rc1 (2015-04-03)

  • Coinbase integration - beta release
    • Coinbase is now available in closed beta. See the Coinbase page on our website to join the beta.
    • Coinbase UI is integrated with Drop-in and BTPaymentButton
    • Known issue: Drop-in vaulting behavior for Coinbase accounts
  • [Internal only] Introduced a new asynchronous initializer for creating the Braintree object

3.7.2 (2015-04-23)

  • Bugfixes
    • Fix recognition of Discover, JCB, Maestro and Diners Club in certain cases (Thanks, @RyPoints!)
    • Fix a bug in Drop-in that prevented Venmo from appearing if PayPal was disabled
    • Revise text for certain Venmo One Touch errors in Drop-in
    • Fix compile error that could occur when 'No Common Blocks' is Yes
  • Demo app
    • Look sharp on iPhone 6 hi-res displays
    • Improve direct Apple Pay integration: use recommended tokenization method and handle Cancel gracefully
  • Update tooling for Xcode 6.3
  • Improve Apple Pay error handling
  • Localization helpers now fall-back to [NSBundle mainBundle] if the expected i18n bundle resource is not found

3.7.1 (2015-03-27)

  • Update PayPal Mobile SDK to new version (PayPal-iOS-SDK 2.8.5-bt1)
    • Change "Send Payment" button to simply "Pay"
    • Minor fixes
  • Remove en_UK from Braintree-Demo-Info.plist (while keeping en_GB)
  • Fix for Venmo button in BTPaymentButton #103
  • Fix issue with wrapping text in Drop-in (thanks nirinchev)
  • Update manual integration doc

3.7.0 (2015-03-02)

  • Refactor and improve SSL Pinning code
  • Update PayPal Mobile SDK to new version (PayPal-iOS-SDK 2.8.4-bt1) that does not include
    • 🚨 Please note! 🚨

      This change breaks builds that depend on a workaround introduced in 3.4.0 that added headers to fix duplicate symbol issues.

      Since is not officially part of the Braintree API, and since the headers were only included as part of a workaround for use by a small group of developers, this potentially-breaking change is not accompanied by a major version release.

      If your build breaks due to this change, you can re-add to your project's Podfile:

        pod 'CardIO', '~> 4.0'

      And adjust your imports to:

        #import <CardIO/CardIO.h>

3.6.1 (2015-02-24)

  • Fixes

3.6.0 (2015-02-20)

  • Features
  • Enhancements
    • Minor updates to UK localization
    • Expose a new status property on BTPaymentProvider, which exposes the current status of payment method creation (Thanks, @Reflejo!)
  • Bug fixes
  • Internal changes
    • Simplifications to API response parsing logic

3.5.0 (2014-12-03)

  • Add localizations to UI and Drop-in subspecs:
    • Danish (da)
    • German (de)
    • Additional English locales (en_AU, en_CA, en_UK, en_GB)
    • Spanish (es and es_ES)
    • French (fr, fr_CA, fr_FR)
    • Hebrew (he)
    • Italian (it)
    • Norwegian (nb)
    • Dutch (nl)
    • Polish (pl)
    • Portugese (pt)
    • Russian (ru)
    • Swedish (sv)
    • Turkish (tr)
    • Chinese (zh-Hans)
  • Add newlines to all files to support GCC_WARN_ABOUT_MISSING_NEWLINE

3.4.2 (2014-11-19)

  • Upgrade PayPal Mobile SDK to version 2.7.1
    • Fixes symbol conflicts with 1Password
    • Upgrades embedded library to version 3.10.1

3.4.1 (2014-11-05)

  • Bug fixes
    • Remove duplicate symbols with 1Password SDK by upgrading internal PayPal SDK

3.4.0 (2014-10-27)

  • Features

    • Stable Apple Pay support
      • New method in Braintree for tokenizing a PKPayment into a nonce
        • This is useful for merchants who integrate with Apple Pay using PassKit, rather than BTPaymentProvider
      • BTPaymentProvider support for Apple Pay
      • BTApplePayPaymentMethod with nonce and address information
    • BTData now includes PayPal application correlation ID in device data blob
    • Card.IO headers are now included in SDK
    • In-App PayPal login now supports 1Password
  • API Changes and Deprecations

    • -[Braintree tokenizeCard:completion:] and -[BTClient saveCardWithRequest:success:failure:] now take an extensible "request" object as an argument to pass the various raw card details:
      • The previous signatures that accepted raw details in the arguments are now deprecated.
      • These will be removed in the next major version (4.0.0).
  • Integration

    • This SDK now officially supports integration without CocoaPods
      • Please see docs/Manual
      • Report bugs with these new integration instructions via Github
    • Project Organization
      • All library code is now located under /Braintree
  • Bug fixes

    • Fix a number of minor static analysis recommendations
    • Avoid potential nil-block crasher
    • Fix iOS 8 CoreLocation deprecation in BTData
    • Fix double-dismisal bug in presentation of in-app PayPal login in Drop-in
  • New minimum requirements

    • Xcode 6+
    • Base SDK iOS 8+ (still compatible with iOS 7+ deployment target)

3.3.1 (2014-09-16)

  • Enhancements
    • Update Kount library to 2.5.3, which removes use of IDFA
    • Use @import for system frameworks
  • Fixes
    • Crasher in Drop-in that treats BTPaymentButton like a UIControl
    • Xcode 6 and iOS 8 deprecations
    • Bug in BTPaymentButton intrinsic size height calculation
    • Autolayout ambiguity in demo app

3.3.0 (2014-09-08)

  • Features

    • App switch based payments for Venmo and PayPal ("One Touch")
      • New methods for registering a URL Scheme: +[Braintree setReturnURLScheme:] and +[Braintree handleOpenURL:]
        • PayPal continues to have a view controller option for in-app login
        • Both providers can be enabled via the Control Panel and client-side overrides
      • See the docs for full upgrade instructions
    • Unified Payment Button (BTPaymentButton) for Venmo and/or PayPal payments
      • New UI and API designs for PayPal button
      • All new Venmo button
    • Unified mechanism for custom (headless) multi-provider payments (BTPaymentProvider)
  • Enhancements

    • Minor fixes
    • Test improvements
    • Internal API tweaks
    • Update PayPal implementation to always support PayPal display email/phone across client and server
      • Your PayPal app (client ID) must now have the email scope capability. This is default for Braintree-provisioned PayPal apps.
    • Improved Braintree-Demo app that demonstrates many integration styles
    • Upgraded underlying PayPal Mobile SDK
  • Deprecations (For each item: deprecated functionality -> suggested replacement)

    • BTPayPalButton -> BTPaymentButton
    • -[Braintree payPalButtonWithDelegate:] -> -[Braintree paymentButtonWithDelegate:]
    • BTPayPalButtonDelegate -> BTPaymentCreationDelegate
  • Known Issues

    • Crasher when app switching to Venmo and CFBundleDisplayName is unavailable.
      • Workaround: add a value for CFBundleDisplayName in your Info.plist

3.2.0 (2014-09-02)

  • Update BTData (fraud) API to match Braintree-Data.js
    • New method collectDeviceData provides a device data format that is identical to the JSON generated by Braintree-Data.js
  • Minor improvements to developer demo app (Braintree Demo)

3.1.3 (2014-08-22)

  • Fix another PayPal payment method display issue in Drop-in UI

3.1.2 (2014-08-21)

  • Fixes
    • Minor internationalization issue
    • PayPal payment method display issue in Drop-in UI

3.1.1 (2014-08-17)

  • Enhancements
    • Accept four digit years in expiry field
    • Internationalize
    • Support iOS 8 SDK
  • Integration changes
    • Merge api and API directory content
    • Deprecate savePaypalPaymentMethodWithAuthCode:correlationId:success:failure in favor of savePaypalPaymentMethodWithAuthCode:applicationCorrelationID:success:failure

3.1.0 (2014-07-22)

  • Integration Change:
    • Braintree/data is no longer a default subspec. If you are currently using BTData, please add pod "Braintree/data" to your Podfile.

3.0.1 (2014-07-21)

3.0.0 (2014-07-09)

Initial release of 3.0.0

  • Enhancements since rc8
    • Added details to
    • Updated demo app to not use removed card properties
    • Updated PayPal acceptance tests


  • Breaking Change
    • Renamed a method in BTDropInViewControllerDelegate to send cancelation messages to user. All errors within Drop-in are now handled internally with user interaction.
    • Removed completion block interface on BTDropInViewController
    • Removed crufty BTMerchantIntegrationErrorUnknown which was unused
  • Enhancements
    • Added basic analytics instrumentation
    • Improved Drop-in's error handling
    • BTPayPalPaymentMethod now implements NSMutableCopying


  • Breaking Change

    • Based on feedback from our beta developers, we have removed the block-based interfaces from Braintree and BTPayPalButton.
      • If you were previously relying on the completion block for receiving a payment method nonce, you should replace that code with a delegate method implementation which reads the nonce from the BTPaymentMethod object it receives.
  • Bug fixes:

    • Fix Braintree/PayPal subspec build


  • Bug fixes:

    • Fix issue with incorrect nesting of credit-card params in API requests, which caused incorrect behavior while validating credit cards in custom and Drop-in.
    • Bugfixes and improvements to demo app
    • Fix crasher in demo app when PayPal is not enabled
    • Demo App now points to a publicly accessible merchant server
  • Enhancements:

    • Drop-in now supports server-side validation, including CVV/AVS verification failure
    • Drop-in's customer-facing error handling is now consistent and allows for retry
    • Increased robustness of API layer
  • Features:

    • 🆕 BTData - Advanced fraud solution based on Kount SDK


  • 🚨 Remove dependency on AFNetworking!
  • 🚨 Rename BTPayPalControl -> BTPayPalButton.
  • Security - Enforce SSL Pinning against a set of vendored SSL certificates
  • Drop-in
    • Improve visual customizability and respect tint color
    • UI and Layout improvements
    • Detailing and polish
  • UI
    • Float labels on credit card form fields
    • Vibration upon critical validation errors 📳

Thanks for the feedback so far. Keep it coming!


  • UX/UI improvements in card form and Drop-in
    • PayPal button and payment method view are full width
    • Vibration on invalid entry
    • Improved spinners and loading states
    • Detailing and polish
  • Add support for v2 client tokens, which are base64 encoded
    • Reverse compatibility with v1 client tokens is still supported
  • Clean up documentation


  • Fix crashes when adding PayPal an additional payment method, when displaying PayPal as a payment method, and in offline mode
  • Add dropInViewControllerWillComplete delegate method.
  • Add transitions, activity indicators, and streamline some parts of UI.
  • Simplify implementation of BTPayPalButton.
  • 🚨 Remove BTDropInViewController shouldDisplayPaymentMethodsOnFile property.


  • 🚨 Breaking API Changes 🚨
    • Reduce BTPayPalButton API
    • Rename a number of classes, methods, and files, e.g. BTCard -> BTCardPaymentMethod.


  • First release candidate of the 3.0.0 version of the iOS SDK.
  • Known issues:
    • Pre-release public APIs
    • SSL pinning not yet added
    • Incomplete / unpolished UI
      • Minor UX card validation issues in the card form
      • Drop-in UX flow issues and unaddressed edge cases
You can’t perform that action at this time.