Advanced Client-Side Implementation
Use Advanced client-side if you need more direct control over card inputs, formatting, validation, or tokenization behavior that Card Fields doesn't cover.
Card Fields is recommended for merchants who want SDK-managed card entry while keeping control over the rest of checkout. Advanced client-side is intended for merchants with custom requirements who need to directly manage more of the card entry flow.
If you don't need that level of control, use Standard client-side to integrate Card Fields instead.
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 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.
Get the SDK
Add the following in your app-level build.gradle:
- Kotlin
- Groovy
dependencies {
implementation("com.braintreepayments.api:card:5.2.0")
}Initialization
Collect card data from your UI to construct a Card. Then, create a CardClient with a Tokenization Key or Client Token and call tokenize() to get a nonce that can be sent to your server:
- Kotlin
class MyActivity : AppCompatActivity() {
private fun tokenizeCard() {
val card = Card(
number = "4111111111111111",
expirationMonth = "12",
expirationYear = "2028",
cvv = "123"
)
val cardClient = CardClient(
context = this,
authorization = "[TOKENIZATION_KEY or CLIENT_TOKEN]"
)
cardClient.tokenize(card) { cardResult ->
when (cardResult) {
is CardResult.Success -> {
// send cardResult.nonce.string to your server
}
is CardResult.Failure -> {
// handle error
}
}
}
}
}