---
title: PingOne MFA SDK error codes
description: The pairing object always returns both a push authenticator status and an OTP status. If the status is FAILED, a Push authenticator error code and message or an OTP error code and message is returned with the status.
component: pingone-api
page_id: pingone-api:native-sdks:pingone-mfa-mobile-sdks/pingone_mfa_sdk_errror_codes
canonical_url: https://developer.pingidentity.com/pingone-api/native-sdks/pingone-mfa-mobile-sdks/pingone_mfa_sdk_errror_codes.html
section_ids:
  pairing-object-error-codes: Pairing object error codes
  push-authenticator-error-codes: Push authenticator error codes
  otp-error-codes: OTP error codes
---

# PingOne MFA SDK error codes

## Pairing object error codes

The pairing object always returns both a push authenticator status and an OTP status. If the status is `FAILED`, a *Push authenticator error code and message* or an *OTP error code and message* is returned with the status.

## Push authenticator error codes

| Error code                                                      | Description                                                                                                                                                                                                                                                             |
| --------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Any error string returned from APNS, for example `Unregistered` | Refer to more error codes and descriptions in [Handling notification responses from APNs](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/handling_notification_responses_from_apns) in the Apple developer portal. |
| Any error string returned from FCM, for example `Unregistered`  | Refer to more error codes and descriptions in [Error codes for FCM failure conditions](https://firebase.google.com/docs/reference/fcm/rest/v1/ErrorCode) in the Firebase portal.                                                                                        |
| `MissingPushCredentials`                                        | There are no push credentials on the PingOne server.                                                                                                                                                                                                                    |
| `MissingDeviceToken`                                            | There is no device token on the PingOne server.                                                                                                                                                                                                                         |
| `PushDisabled`                                                  | The push was disabled via the native SDK API.                                                                                                                                                                                                                           |

## OTP error codes

| Error code                       | Description                                                                                                                                        |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OneTimePasscodeRetriesExceeded` | On device pairing, the OTP can be verified within 3 attempts. On `checkOTP`, the OTP can be verified within 3 attempts in every 15 minutes.        |
| `InvalidOneTimePasscode`         | The user entered an invalid OTP.                                                                                                                   |
| `OneTimePasscodeExpired`         | On device pairing, the OTP can be verified within 15 minutes. On `checkOTP`, there are no limitations except for `OneTimePasscodeRetriesExceeded`. |
| `UnSynchronizedClock`            | The native clock not synchronized with the generated secret.                                                                                       |
