Welcome to Braintree's Android SDK. This library will help you accept card and alternative payments in your Android app.
📣 A new major version of the SDK is now available. See the v5 migration guide for details.
The Braintree SDK supports Android API 23 and above.
The Braintree SDK requires Java 11 and uses Kotlin 1.9.10.
Upgrade your integration to continue accepting Braintree payments The SSL certificates for the Android SDK are set to expire by March 30, 2026. Upgrade to v4.45.0+ or v5.0.0+ to continue processing payments using the Braintree SDK.
The features of the Braintree SDK are organized into modules that can be imported as dependencies in your build.gradle file.
See the Migration Guide for specific dependencies required for each module.
For an integration offering card payments, add the following dependency in your build.gradle:
dependencies {
implementation 'com.braintreepayments.api:card:5.20.0'
}To preview the latest work in progress builds, add the following SNAPSHOT dependency in your build.gradle:
dependencies {
implementation 'com.braintreepayments.api:card:5.0.0-beta2-SNAPSHOT'
}You will also need to add the Sonatype snapshots repo to your top-level build.gradle to import SNAPSHOT builds:
allprojects {
repositories {
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots/'
}
}
}Start with 'Hello, Client!' for instructions on basic setup and usage.
Next, read the full documentation for information about integration options, such as Drop-In UI, PayPal and credit card tokenization.
We always recommend updating to the latest version of the SDK which can be found in our CHANGELOG.
For major version upgrades, feel free to check out the MIGRATION GUIDE.
For more details on how to add and managed build dependencies, see the Android Developer Guidelines.
This SDK abides by our Client SDK Deprecation Policy. For more information on the potential statuses of an SDK check our developer docs.
| Major version number | Status | Released | Deprecated | Unsupported |
|---|---|---|---|---|
| 5.x.x | Active | October 2024 | TBA | TBA |
| 4.x.x | Deprecated | June 2021 | October 2025 | October 2026 |
| 3.x.x | Unsupported | February 2019 | June 2022 | June 2023 |
| 2.x.x | Unsupported | November 2015 | March 2020 | March 2021 |
Versions 3.x.x and below are unsupported.
The Braintree Android SDK now allows merchants to draw and render both PayPal and Venmo payment buttons using a discrete set of parameters. The SDK will handle the loading and disable state of the button and allow you to display and offer buttons meeting the current brand guidelines versus maintaining responsibility on your own. We will call the tokenize methods with your request and allow you a seamless branded experience in your mobile apps.
Note: Ensure you include the UIComponents module in your project to use this feature.
If you would like to draw a PayPal branded button in your mobile app, you can do so like this:
<com.braintreepayments.api.uicomponents.PayPalButton
android:id="@+id/payPalButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
custom:buttonColor="blue" />class ExampleFragment : Fragment() {
private lateinit var payPalButton: PayPalButton
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
payPalButton = view.findViewById<PayPalButton>(R.id.payPalButton)
payPalButton.initialize(
activityResultCaller = this,
authorization = "[TOKENIZATION_KEY or CLIENT_TOKEN]",
appLinkReturnUrl = Uri.parse("https://merchant-app.com"),
deepLinkFallbackUrlScheme = "com.merchant.app.payments"
)
payPalButton.updatePayPalRequest(PayPalRequest(...))
paypalButton.setLaunchCallback = { launchResult ->
when (launchResult) {
is PayPalPendingRequest.Started-> {
// store pending request to disk
}
is PayPalPendingRequest.Failure -> {
// handle error
}
}
}
}
override fun onResume() {
super.onResume()
val pendingRequest = fetchPendingRequest()
if (pendingRequest != null) {
payPalButton.handleReturnToApp(pendingRequest, intent) { payPalResult ->
when (payPalResult) {
is PayPalResult.Success -> {
// handle success
}
is PayPalResult.Failure -> {
// handle failure
}
is PayPalResult.Cancel -> {
// handle canceled
}
}
}
}
// clear pending request
}
}Similarly, if you would like to draw a Venmo branded button in your mobile app, you can do so like this:
<com.braintreepayments.api.uicomponents.VenmoButton
android:id="@+id/venmoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
custom:buttonColor="blue" />class ExampleFragment : Fragment() {
private lateinit var venmoButton: VenmoButton
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
venmoButton = view.findViewById<VenmoButton>(R.id.venmoButton)
venmoButton.initialize(
activityResultCaller = this,
authorization = "[TOKENIZATION_KEY or CLIENT_TOKEN]",
appLinkReturnUrl = Uri.parse("https://merchant-app.com"),
deepLinkFallbackUrlScheme = "com.merchant.app.payments"
)
venmoButton.setVenmoRequest(VenmoRequest(...))
venmoButton.setLaunchCallback = { launchResult ->
when (launchResult) {
is VenmoPendingRequest.Started-> {
// store pending request to disk
}
is VenmoPendingRequest.Failure -> {
// handle error
}
}
}
}
override fun onResume() {
super.onResume()
val pendingRequest = fetchPendingRequest()
if (pendingRequest != null) {
venmoButton.handleReturnToApp(pendingRequest, intent) { payPalResult ->
when (payPalResult) {
is VenmoResult.Success -> {
// handle success
}
is VenmoResult.Failure -> {
// handle failure
}
is VenmoResult.Cancel -> {
// handle canceled
}
}
}
}
// clear pending request
}
}- Read the docs
- Check out the reference docs
- Find a bug? Open an issue
- Want to contribute? Check out contributing guidelines and submit a pull request.
The Braintree Android SDK is in active development. We welcome your feedback!
Here are a few ways to get in touch:
- GitHub Issues - For generally applicable issues and feedback
- Braintree Support / [email protected] - for personal support at any phase of integration
The Braintree Android SDK is open source and available under the MIT license. See the LICENSE file for more info.