Skip to main content
These are the errors the OTPless Headless SDK reports on the client via its callbacks during the SNA-only flow. They are surfaced in the SDK response — on FAILED (initialization), on a non-200 INITIATE, or on AUTH_TERMINATED.
These are client/SDK errors. For the server-side verification outcome (SP* codes in auths[].error) and gateway request errors, see API Error Codes. The SDK callback is not the source of truth — always confirm the final result with the Status Check API.

Error response structure

{
    "responseType": RESPONSE_TYPE_ENUM,
    "statusCode": INTEGER_STATUS_CODE,
    "response": {
        "errorCode": "ERROR_CODE",
        "errorMessage": "ERROR_MESSAGE"
    }
}
  • responseType — the callback the error arrived on. Errors are carried only on FAILED, INITIATE, and AUTH_TERMINATED. (SDK_READY and ONETAP are success callbacks and never carry an error.)
  • statusCode — the HTTP status or an OTPless-curated status code.
  • errorCode — the OTPless error code (see tables below).
  • errorMessage — a human-readable description of the error.

AUTH_TERMINATED errors

In the SNA-only flow, a terminal failure is delivered on the AUTH_TERMINATED callback. Common to Android and iOS.
Error coderesponseTypeMeaning
7160INITIATEAUTH_TERMINATEDSNA could not be initiated.
7161AUTH_TERMINATEDSNA verification failed.
7160 first surfaces on an INITIATE callback (with the error code) and is then followed by AUTH_TERMINATED; 7161 is delivered directly on AUTH_TERMINATED. In an SNA-only configuration there is no fallback channel — treat both as terminal and rely on the Status Check API result.

SNA verification errors

Outcomes from carrier verification (the silent-auth status). In an SNA-only flow these surface on the INITIATE (with error code) and AUTH_TERMINATED callbacks. Common to both platforms unless noted.
Status codeError codeMeaning
7122Carrier-level IP mismatch.
7128Carrier failed to verify the number.
7169Duplicate request — verification already completed concurrently.
A timeout or exhausted poll ends the flow on AUTH_TERMINATED (7161).

Initialization errors

Reported on the FAILED callback when the SDK cannot initialize. Common to both platforms.
Status codeError codeMeaning
50035003SDK initialization failed (all retries exhausted). Re-call initialize().

Request & configuration errors

Surfaced on the INITIATE callback when statusCode != 200. Common to both platforms unless noted.
Status codeError codeMeaning
4007101Malformed request body.
4007102Invalid mobile number format.
4007139Neither a valid mobile number nor email was provided.
4007035Country code not configured for this merchant.
4007025International verification disabled for this merchant.
4007001Identity is blocked.
4007005Invalid auth state (expired or not found) — the SDK retries automatically.
4007009Request origin does not match the configured login URI.
4044003Channel not active in the dashboard. For SNA-only, ensure SNA is the only enabled channel.
4007039Android only. App’s Android version is deprecated.
4004000iOS only. The request values are incorrect.
4004001iOS only. 2FA is not supported by the headless SDK.
4005900iOS only. The feature requires a newer iOS version.
401401Unauthorized request — check your App ID.

Transaction state errors

Surfaced on the INITIATE callback when the request or token has expired. Call start() again with a fresh requestId.
Status codeError codeMeaning
4007304Transaction expired.
4007301Token expired or missing.
4007302Auth code expired.

Rate-limit errors

Surfaced on the INITIATE callback with statusCode 429. Common to both platforms.
Error codeLimit dimension
7020General rate limit.
7022Per phone/email identity.
7023Per IP address.
7024Per app.
7036Per auth state.
7037Per auth session.
7040Per country code.
7041Per device ID.
7417Identity — too many requests.

Network connectivity errors (iOS)

iOS surfaces granular network errors via the INITIATE response. On Android, a network failure during silent auth is not reported with a distinct code in an SNA-only flow — it ends the flow on AUTH_TERMINATED (7160 / 7161).
Status codeError codeMeaning
4089100Request timeout.
5039101Network connection was lost.
5039102DNS lookup failed.
5039103Cannot connect to server.
5039104No internet connection.
5039105Secure connection failed (SSL issue).
9110OTPless authentication request cancelled.