Skip to main content
The Yuno Android SDK supports running 3D Secure (3DS) challenges natively inside your app using Netcetera’s 3DS SDK. Native 3DS gives a smoother UX than the WebView-based fallback (no in-app browser jump) and may be required by some acquirers for frictionless authentication.
Payment flows only: Native 3DS via Netcetera is currently supported for payment flows only. It does not apply to enrollment flows.
Native 3DS is opt-in: you only need to install the provider module if your integration runs 3DS challenges in-app. If you are not enabling 3DS, you can skip this guide.
This is a separate module (roughly 3-4 MB) so you only add it if you need native 3DS. If your app already customizes the Yuno SDK’s styles, those styles propagate automatically to the challenge screen, no additional UI configuration is needed.

Requirements

  • Android API level 21 (Lollipop) or higher.
  • Yuno Payments SDK 2.16.0 or higher already installed in your app (com.yuno.payments:android-sdk).
  • The Netcetera 3DS provider module (com.yuno.payments:yuno-sdk-3ds-netcetera), installed via Gradle (see below).

Compatibility

Each release of this module is built and tested against a minimum version of the Yuno Payments SDK. The module’s POM does not pin a specific core version. Versions below the minimum may not expose the APIs this module relies on and can fail at runtime with NoSuchMethodError / NoSuchFieldError. When upgrading either dependency, bump both sides together so the combination stays within a supported pair.

Step 1: Declare the Netcetera Maven repository

The Netcetera 3DS SDK is hosted on Netcetera’s public Maven server. Because Gradle does not propagate transitive repositories through POM metadata, your app must declare the repo explicitly so it can resolve the Netcetera SDK dependency. Add the entry to your project’s settings file inside dependencyResolutionManagement.repositories:
In settings.gradle:
You may still be using the legacy allprojects { repositories { … } } block in your root build.gradle. If so, add the same Netcetera maven { url "…" } line there instead.

Step 2: Add the dependency

Add the Yuno 3DS Netcetera dependency to your app module’s build file:
In build.gradle:
The upstream Netcetera 3DS SDK wrapped by yuno-sdk-3ds-netcetera and its required androidx.startup dependency are pulled in transitively. You don’t need to declare them yourself.

Activating the 3DS provider

The module auto-registers with the Yuno Payments SDK when your app process starts (via Jetpack App Startup). No extra code is required: just initialize the Yuno SDK as usual:
Once registered, the Yuno Payments SDK automatically routes any 3DS challenge during checkout through the Netcetera provider.

Permissions

android.permission.INTERNET is declared by the module’s manifest and merged into your app automatically. No action required.

Sandbox certificate

When testing against the Yuno sandbox environment, the Netcetera SDK requires a card scheme certificate to be present in your app.
Contact your Yuno TAM (Technical Account Manager) to obtain the certificate. It is not distributed publicly.
This is only required for sandbox testing, not for production.