Skip to main content
Visa Tap to Add enables customers to enroll their contactless cards by tapping them against the NFC antenna on their Android device.

Visa Tap to Add Overview

The tap interaction uses Visa’s Thin Client Tap SDK under the hood: card details are read directly over NFC, encrypted on device, and submitted securely to Yuno. The merchant application never accesses or handles clear Primary Account Numbers (PANs).

Prerequisites & Requirements

Your Android project must meet the following hardware, system, and toolchain requirements:
  • Hardware & OS: Android 11.0 (API level 30) or higher with an active NFC antenna and Host Card Emulation (HCE) support.
  • Services: Google Play Services must be available on the device.
  • Architecture: 64-bit (arm64-v8a) or 32-bit (armeabi-v7a) ARM architecture. (x86 / x86_64 emulators are not supported for contactless NFC operations).
  • Toolchain Requirements:
    • Compile SDK: compileSdk 35
    • Java: Java 17
    • Kotlin: 2.1.0 or higher
    • Android Gradle Plugin (AGP): 8.6.0 or higher
    • Gradle: 8.7 or higher
    • Hilt: 2.56 or higher (if using dependency injection)
    • Room: 2.7.0-alpha13 or higher (if using Room in your project)
Supported Brands: Currently, Tap to Add is powered by Visa’s Tap SDK. Support for Mastercard and other card schemes will be introduced in subsequent releases.

Integration Paths

You can integrate Tap to Add in one of two ways:
  1. Path A: Automatic Enrollment via Yuno Android SDK 3.x (Recommended): If you already use Yuno’s Full Checkout SDK for Android, adding the yuno-tap dependency automatically enables the Tap to Add entrypoint on the enrollment form with zero UI code.
  2. Path B: Standalone Yuno Tap SDK: If you build custom enrollment screens or headless UI, integrate com.yuno.payments:yuno-tap directly with either the pre-built YunoTapToAddButton or the headless YunoTapController.

Path A: Automatic Full Checkout Enrollment

When integrating with the Yuno Android Universal SDK (3.0.0-alpha or later), the SDK automatically inspects whether yuno-tap is present on the runtime classpath. If found and the device supports NFC, the SDK displays the Tap to Add option directly within the card enrollment form.
Enrollment Only: Tap to Add is exclusively supported for card enrollment and saving payment methods to a customer account. It is never presented during checkout, one-off payment flows, or direct purchase screens.

1. Add Dependencies

Add the Yuno Android SDK and Yuno Tap artifact to your module’s build.gradle.kts:

2. Configure Manifest for Devices below API 30

The Yuno Tap SDK enforces minSdk = 30. If your main application targets a lower minSdkVersion (for example, minSdk = 24), allow the manifest merger to proceed by adding a tools:overrideLibrary declaration in your AndroidManifest.xml:
On devices running Android 10 (API 29) or lower, the Yuno SDK gracefully detects the platform version and hides the Tap to Add option, falling back to manual card entry.

Visual Flow

1

Enrollment Form Entrypoint

When yuno-tap is included in the project, the card enrollment form displays the Tap to add entrypoint above manual card entry.

Tap to Add Card Form Entrypoint

2

Contactless NFC Prompt

Selecting Tap to add launches the animated NFC tap interface prompting the customer to hold their contactless card to the back of the device.

NFC Tap Prompt

3

Success Confirmation

Once the card data is read and encrypted on device, Yuno securely completes the enrollment and returns a success confirmation.

Card Added Confirmation


Path B: Standalone Yuno Tap SDK

If you manage your own card capture UI or want custom placement of the Tap to Add action, use the standalone yuno-tap library.

1. Add Dependency

Add yuno-tap to your build.gradle.kts:

2. Obtain Customer Session

Before starting the tap flow, your backend must create a customer session using Yuno’s server-to-server API:
The response returns a customer_session ID and a session_token. Pass both values to your Android application.

3. Initialize YunoTapConfig

Initialize the SDK in your Application class or main activity:

4. Option 1: Drop-in YunoTapToAddButton

The simplest standalone UI integration uses YunoTapToAddButton. Place it directly in your layout or Composable tree:
Attach your transaction parameters and completion callback in your Activity or Fragment:

4. Option 2: Programmatic YunoTapController

For custom UI or button designs, trigger the tap flow programmatically using YunoTapController:

Result Handling & Outcomes

The callback returns a sealed TapOutcome object:

Error Codes

When TapOutcome.Error is returned, examine outcome.code to handle specific failure scenarios:

ProGuard & R8 Configuration

If your build has code shrinking enabled (minifyEnabled = true), include the following ProGuard rules in your proguard-rules.pro file:

Upcoming Features

  • Tap to Confirm: Support for contactless card authentication during checkout transactions is planned for future SDK releases. Currently, only Tap to Add (TapFlow.Add) for card enrollment is active.