---
title: Integrating with PingOne MFA
description: Integrate PingOne MFA push notifications and OATH one-time passcodes into your Android and iOS apps using the Orchestration SDK pingonemfa module, so a paired mobile device can approve sign-on requests that start elsewhere.
component: orchsdks
page_id: orchsdks:davinci:use-cases/pingone-mfa/index
canonical_url: https://developer.pingidentity.com/orchsdks/davinci/use-cases/pingone-mfa/index.html
llms_txt: https://developer.pingidentity.com/orchsdks/llms.txt
docs_for_agents: https://developer.pingidentity.com/build-with-ai/docs-for-agents.md
revdate: Mon, 5 Oct 2026 13:30:00 +0100
keywords: ["DaVinci", "MFA", "PingOne", "Push", "OATH", "OTP", "Integration", "SDK"]
section_ids:
  getting_started: Getting started
---

# Integrating with PingOne MFA

[icon: circle-check, set=far]PingOne [icon: android, set=fab]Android [icon: apple, set=fab]iOS

PingOne MFA add strong authentication methods, such as an OATH one-time passcode or a push notification on a client device, when signing on from an accessing device such as a web browser, a kiosk, or another application.

The `pingonemfa` module turns the mobile app into that second factor. The user signs on at the accessing device, and the paired mobile device running your app approves the request, displays a one-time passcode, or responds to a number-matching challenge.

In every PingOne MFA scenario covered here, the mobile app runs on a secondary device:

* Accessing device

  The device where the user signs on, for example a browser, a self-service kiosk, or a web application. The sign-on is protected by a PingOne MFA policy that requires push or OATH authentication.

* Paired mobile device

  The device running your Android or iOS app, that can respond to authentication challenges from PingOne.

The mobile app itself does not run the sign-on flow. Its counterpart is the PingOne MFA service, which it talks to through the `pingonemfa` module. This keeps the integration simple: after the device is paired, the app only reacts to challenges and generates passcodes, independent of how or where the sign-on itself is performed.

The `pingonemfa` module wraps the native PingOne MFA SDKs in a single, consistent API that follows the same patterns as the rest of the Orchestration SDK:

* One SDK to learn, install, and version, alongside the DaVinci and other Orchestration SDK modules you already use.

* Modern asynchronous APIs on both platforms: Kotlin suspend functions that return `Result<T>` on Android, and Swift `async throws` functions on iOS.

* Consistent error handling across platforms, with structured error objects instead of native SDK error types.

* Complete coverage of the secondary-device use cases: device pairing, push notification approval and denial, number matching, and OATH one-time passcode generation.

## Getting started

Select your platform to set up the `pingonemfa` module, pair the device, and authenticate sign-ons:

[icon: android, set=fab, size=3x]

#### [Android](android/index.html)

Integrate PingOne MFA into your Android apps.

[icon: apple, set=fab, size=3x]

#### [iOS](ios/index.html)

Integrate PingOne MFA into your iOS apps.
