PayPal

Client-Side Implementation

Important

The SSL certificates for Braintree Mobile (iOS and Android) SDKs are set to expire on March 30, 2026. This will impact existing versions of the SDK in published versions of your app. To reduce the impact, upgrade the iOS SDK to version 6.17.0+Android SDK to version 4.45.0+ or version 5.0.0+ for the new SSL certifications.

If you do not decommission your app versions that include the older SDK versions or force upgrade your app with the updated certificates by the expiration date, 100% of your customer traffic will fail.

SetupAnchorIcon

Before you can add PayPal:

  1. Integrate the Braintree iOS SDK into your app
  2. Create, verify, and link your PayPal account in the Braintree Control Panel

Get the SDKAnchorIcon

CocoaPodsAnchorIcon

Include Braintree in your podfile:
  1. Ruby
pod 'Braintree'

Swift Package ManagerAnchorIcon

Include the BraintreePayPal and PayPalDataCollector frameworks.

CarthageAnchorIcon

Include the BraintreeCore,BraintreePayPal, BraintreeDataCollector, and PPRiskMagnes frameworks.

Showing a PayPal buttonAnchorIcon

Initiaiting the PayPal authorization flow will present and dismiss an ASWebAuthenticationSession from your top-most view.

Using our Drop-in UIAnchorIcon

Important

Starting July 14, 2025 the Drop-in SDK will move to a deprecated status and we will no longer make any updates to this SDK. Processing will be supported for 1 year after the deprecation date, but you should upgrade immediately to avoid any disruption.

Starting July 14, 2026 the Drop-in SDK will move to an unsupported status and will no longer supported by Braintree developers or Braintree Support. Processing for unsupported SDKs can be suspended at any time.

Please migrate to the Braintree SDK to continue processing and receiving updates.

When using the Drop-in UI, a PayPal payment option will be shown alongside any other payment methods you've enabled.

For more details, see the Drop-in UI guide.

Using a custom UIAnchorIcon

You can implement a custom UI, such as your own PayPal button.
  1. Swift
var braintreeClient: BTAPIClient!

override func viewDidLoad() {
    super.viewDidLoad()

    self.braintreeClient = BTAPIClient(authorization: "<#CLIENT_AUTHORIZATION#>")

    let customPayPalButton = UIButton(frame: CGRect(x: 0, y: 0, width: 60, height: 120))
    customPayPalButton.addTarget(self, action: #selector(customPayPalButtonTapped(button:)), for: UIControlEvents.touchUpInside)
    self.view.addSubview(customPayPalButton)
}

func customPayPalButtonTapped(button: UIButton) {
    let payPalClient = BTPayPalClient(apiClient: self.braintreeClient)

    // Important! Choose either Vault or Checkout flow
    // Start the Vault flow, or...
    let vaultRequest = BTPayPalVaultRequest()
    payPalClient.tokenize(vaultRequest) { (tokenizedPayPalAccount, error) in
        // ...
    }

    // ...start the Checkout flow
    let checkoutRequest = BTPayPalCheckoutRequest(amount: "1.00")
    payPalClient.tokenize(checkoutRequest) { (tokenizedPayPalAccount, error) in
        // ...
    }
}

Collecting additional dataAnchorIcon

You can gather additional data about your customers as they complete the payment process.

Note
See Braintree iOS Client SDK PayPal header files for in-depth documentation and additional custom PayPal integration options.
Important
The SSL certificates for Braintree Mobile (iOS and Android) SDKs are set to expire on March 30, 2026. This will impact existing versions of the SDK in published versions of your app. To reduce the impact, upgrade the iOS SDK to version 6.17.0+ for the new SSL certifications.

If you do not decommission your app versions that include the older SDK versions or force upgrade your app with the updated certificates by the expiration date, 100% of your customer traffic will fail.

Next: Choose your integrationAnchorIcon

The rest of your configuration will be determined by how you'd like to use PayPal.

See a detailed comparison of Vault vs. Checkout.