Welcome to VerifyNow SDK Integration Guide

This page will help you go from signup → API integration → live OTPs in less than 15 minutes.

Verify Now API

Integrate SMS Verification APIs (V3) with Message Central

🔐 Learn how to authenticate users with SMS OTP APIs using Message Central in NodeJS, Python, Java, PHP, Ruby, and C#!

Overview

VerifyNow is a mobile number verification and authentication service developed by Message Central. It provides a fast, reliable, and cost-effective way to verify mobile numbers and perform multi-factor authentication (MFA) across SMS and WhatsApp channels.

In the digital ecosystem, mobile numbers have become the universal user identity. VerifyNow enables your application—whether web or mobile—to authenticate users’ mobile numbers with ease and security.

Workflow diagram illustrating how VerifyNow SDK processes OTP verification, including token generation, sending OTP via SMS or WhatsApp, validating OTP, and returning verification response.

Key Features

  • Multi-channel verification: VerifyNow supports OTP delivery via both SMSand WhatsApp channels.
  • Pre-approved templates and sender IDs: Sender IDs and message templates are already approved, so you don’t have to wait for regulatory clearance.
  • Automatic fallback: If message delivery fails on the primary channel, the system automatically retries using an alternate supported channel.
  • SDK & API options: Choose between streamlined SDK installation or direct integration with the flexible API, depending on your implementation needs

Use Case: OTP-Based Authentication

With VerifyNow, you can authenticate users by having the platform generate and send OTPs directly to them, streamlining your verification process.

OTP Generation and Delivery

Channel
Sender ID / Brand Name
Notes
SMS (International)
U2 INFO
Default sender ID for International destinations
SMS (India)
UTOMOB
Default sender ID for India
WhatsApp
Message Central (Brand: MessageCentral by U2opia Mobile)
Branded sender forWhatsApp messages

When you trigger OTP delivery through VerifyNow, the platform handles OTP generation and sends the message using its built-in sender ID and template. You can'tset your own sender ID or customize the message template—these settings are fixed by the service.

Message Template Parameters

The following parameters are required when using VerifyNow APIs:

Parameter
Type
Description
Example
flowType
String
Specifies delivery channel
SMS or WHATSAPP
type
String
Specifies verification type
OTP

The enterprise application integrates OTP verification into its authentication workflow, ensuring secure and reliable user authentication. This approach delivers a consistent OTP experience for users across all supported regions.

Verification Flow

General workflow when integrating the VerifyNow SDK on iOS, Android, or JavaScript:

  • Initiate Verification: Invoke the SDK method with the user’s phone number and preferred verification channel (SMS or WhatsApp) to start the process
  • OTP Delivery: The VerifyNow service automatically sends an OTP using the selected channel, utilizing only system-approved sender IDs and templates.
  • OTP Entry: The user inputs the received OTP within your application
  • Verification Check: The SDK communicates with VerifyNow’s service to validate the entered OTP
  • Success / Failure Response: Your application receives the validation result and can proceed with user login, account registration, or access control accordingly
Simple flow diagram illustrating the VerifyNow OTP process where the app triggers the SDK, the SDK calls VerifyNow API, and the result is returned to the user via callback.

Why Use VerifyNow

Before sending any SMS or WhatsApp message internationally, businesses must obtain sender ID and   approvals from telecom regulators — a process that can take weeks

VerifyNow eliminates this step by providing pre-approved sender IDs and templates across 200+ countries, allowing partners to integrate and go live instantly.

With VerifyNow, a single integration opens your app to a global audience while ensuring compliance and reliability.

Fallback Mechanism

VerifyNow includes a Fallback feature to ensure OTP delivery.If the primary channel (e.g., SMS) fails, VerifyNow automatically retries using an alternate channel (e.g., WhatsApp).

Currently supported fallback channels:

  1. SMS → WhatsApp
  2. WhatsApp → (Planned for future release)

Additional delivery methods are part of the roadmap — contact your Account Manager for updates.

Benefits of SDK Integration (vs API)

Aspect
API Integration
SDK Integration
Setup Complexity
Requires server-to-server setup and API orchestration
One-line SDK invocation
Code Volume
High — multiple steps (UI → Backend → VerifyNow)
Low-code integration
Flow Management
Developer must handle verification flow manually
SDK automates OTP send and validation
Future Readiness
OTP-only
Supports future authentication types (Network Auth, Flash Call)

Summary

Using the VerifyNow SDK provides:

  • Faster development and integration time
  • Built-in verification flow management
  • Automatic fallback and error handling
  • Future-proof authentication methods

Next Steps

To integrate using SDKs, see:

  • VerifyNow Android SDK Guide – Learn how to integrate the VerifyNowSDK-release-1.0.0.aar file, initialize the SDK, and perform mobile number verification on Android.
  • VerifyNow iOS SDK Guide – Follow steps to add the VerifyNowSDK-release-1.0.0.xcframework and verify users via the iOS SDK.

If you already have a Message Central account, retrieve your credentials from the console. For enterprise onboarding or custom integration support, contact your Message Central account manager.

Integration Steps

Prerequisites for Integration 

Before integrating the SDK, ensure you have an active account on Message Central. Messagecentral console

You’ll need the following credentials:

  • customerId: A unique identifier for your Message Central account. You can find this on the Message Central home console.
  • authToken: Secure token for SDK API authentication; valid for 24 hours and can be renewed. Store securely and refresh via the provided API when it expires.

These credentials are required for initiating verification requests. You will receive them once your account is created and approved.

Get customerId or authToken

Login to Message Central console.Messagecentral console

Message Central dashboard view showing the sections where users can locate their customerId and generate authToken needed for OTP verification setup.
Screenshot of the Message Central console displaying customerId and authToken fields with buttons to retrieve both for OTP integration.

Or Generate authToken API

Before using the VerifyNow SDK to verify, you should have “authToken”. This API returns a token that must be included in all subsequent calls. An authentication token is needed to validate the user and should be included in the header section of each request.

Request Parameters:

Field
Type
Mandatory?
Description
customerId
String
yes
Customer identifier (need to login on message central website to get your customer id
country
Integer
no
Country code to send OTP to
email
String
no
Email
key
String
yes
Base-64 encrypted password
scope
String
no
Use ‘NEW’ for first time

Request URL Path:

1/auth/v1/authentication/token

cURL

1cURL curl --location 'https://cpaas.messagecentral.com/auth/v1/authentication/token?customerId=< CustomerId>&key=&scope=NEW&country=91&email=test@messagecentral.com' \ --header 'accept: */*'

🚨 NOTE: To convert a cURL command into code using Postman, open Postman, import the cURL command via the "Import" button, and then generate the code in your preferred language by clicking the "Code" button on the right side of the request.

Response JSON

A successful response will return a 200 status code

1{
2       "status": Integer,
3       "token": "String"
4}

SDK Integration Android (Using .aar File)

  • SDK Name: VerifyNowSDK
  • File: VerifyNowSDK-release-1.0.0.aar

This guide walks you through integrating the VerifyNowSDK into your Android project using the local .aar file.

Android SDK – v1.0.0

  • Release Type: Initial public release – February 2025
  • Compatibility: Designed for Android platforms; minimum SDK version not explicitly mentioned but assumed to support standard Android 7.0+ (API 24+)
  • Features:
    • Core functionality for OTP verification via SMS and WhatsApp
    • Callback structure defined
    • ProGuard rules included for consumer-side integration
  • Limitations:
    • No sandbox/mock testing support

Step 1: Add the .aar File

Copy the VerifyNowSDK-release-1.0.0.aar file into your app module's libs/ directory.

Project structure should look like:

Step 2: Add the AAR Dependency

Add this to your app’s build.gradle.kts dependencies:

dependencies {
 implementation("com.squareup.retrofit2:retrofit:2.11.0")
 implementation("com.squareup.retrofit2:converter-gson:2.11.0") 
 implementation(files("libs/ VerifyNowSDK-release.aar"))
 }

Make sure the name matches the file name (without .aar extension)

Step 3: Initialize the SDK

After syncing the project and before using any verification features, ensure the SDK is properly initialized in your Application class or main activity.

Function Signature

VerifyNowSDK.init(
     context: Context
 )

Step 4: Invoke and Use the SDK

Once initialized, you can begin the verification process using the available methods.

Function Signature

VerifyNowSDK.verify(
countryCode: String,
mobileNo: String,
customerId: String,
authToken: String,
isFallbackEnable: Boolean = false, // optional
callback: VerificationCallback )

Request Parameters:

Field
Type
Mandatory?
Description
countryCode
String
yes
The mobile number's country code 
(e.g., "91" for India)
mobileNo
String
yes
The mobile number to be verified 
(without country code)
customerId
String
yes
A unique identifier assigned to your 
account in MessageCentral
authToken
String
yes
A secure token used to authenticate 
SDK API requests
isFallbackEnable
Boolean
optional
(default 
 value = false)
This flag determines whether to use OTP fallback in case the primary verification method fails
callback
VerificationCallback
yes
Callback interface to receive success or failure response
isFallbackEnable (Optional)
isFallbackEnable: Boolean = false

This flag determines whether to use OTP fallback in case the primary verification fails.

  • Set to true →The SDK will automatically switch to alternate OTP-based verification if Verify Now fails
  • Set to false → No fallback is triggered; verification fails

Callback: VerificationCallback

You need to provide an implementation of VerificationCallback to handle the result of the verification.

object : VerificationCallback {
override fun success(success: VerificationSuccess)
{// Called when verification succeeds}override fun failure(error: VerificationError)
{// Called when verification fails}
}
  • success(success: VerificationSuccess): Invoked on successful verification. The VerificationSuccess may include a status(200), message and verified (true).
class VerificationSuccess(val status: Int, val verified: Boolean, val message: String)
  • failure(error: VerificationError): Invoked when verification fails. The VerificationError contains the errorMessage or errorCode.
data class VerificationError(val errorCode: Int, val errorMessage: String?)
import com.messagecentral.verifynow.VerificationCallback
import com.messagecentral.verifynow.VerifyNowSDK
import com.messagecentral.verifynow.network.VerificationError
import com.messagecentral.verifynow.network.VerificationSuccess
VerifyNowSDK.verify(
countryCode
mobileNo
customerId
authToken
isFallbackEnable
callback = object : VerificationCallback
override fun success(success: VerificationSuccess
Toast.makeText(this@MainActivity, "Verified: ${success .verified} message:
${success.message}
",
).show()
}
override fun failure(error: VerificationError) {
Toast.makeText(this@MainActivity, "Failed: ${error.errorMsg}",
).show
}
)

SDK Integration IOS(Using .xcframework File)

  • SDK Name: VerifyNowSDK-release-1.0.0.xcframework
  • File: VerifyNowSDK-release-1.0.0.xcframework

This guide walks you through integrating the VerifyNowSDK into your IOS project using the local .xcframework file.

iOS SDK – v1.0.0

  • Release Type: Initial public release – February 2025
  • Compatibility:
    • Supports iOS 16+
  • Features:
    • Core OTP verification functionality
    • Unified callback structure (language syntax differs from Android)
  • Limitations:
    • No sandbox/mock testing support

Step 1: Add the VerifyNowSDK-release-1.0.0.xcframework Files

  1. In Xcode, open your app project or workspace
  2. Right-click on your project in the Project Navigator → select → “Add Files to [YourProjectName]...”
  3. Choose your .xcframework folder (e.g. VerifyNowSDK-release-1.0.0.xcframework).
  4. In the dialog:
  5. Check “Copy items if needed”
  6. Choose “Add to targets” → select your app target

Step 2: Link the Framework

  1. Select your project in Xcode → select your app target
  2. Go to the “General” tab
  3. Scroll to Frameworks, Libraries, and Embedded Content
  4. Click + → select your .xcframework
  5. Set the Embed option to “Embed & Sign” (important for device builds)

Step 3: Invoke and Use the SDK

Once initialized, you can begin the verification process using the available methods.

Function Signature

VerifyNowSDK.verify(
countryCode: String,
mobileNo: String,
customerId: String,
authToken: String,
isFallbackEnable: Bool = false,
completion: @escaping (VerificationResult<VerificationSuccess, VerificationError>)
)
Field
Type
Mandatory?
Description
countryCode
String
yes
The mobile number's country code 
(e.g., "91" for India)
mobileNo
String
yes
The mobile number to be verified 
(without country code)
customerId
String
yes
A unique identifier assigned to your 
account in MessageCentral
authToken
String
yes
A secure token used to authenticate 
SDK API requests
isFallbackEnable
Boolean
optional
(default 
 value = false)
This flag determines whether to use OTP fallback in case the primary verification method fails
completion
@escaping (VerificationResult<VerificationSuccess, VerificationError>)
yes
Callback interface to receive success or failure response

isFallbackEnable: Boolean = false

This flag determines whether to use OTP fallback in case the primary verification fails.

  • Set to true → The SDK will automatically switch to OTP-based verification if Verify Now fails.
  • Set to false → No fallback is triggered; verification fails if USSD is unsuccessful.

Callback: completionHandler

You need to provide an implementation of completion to handle the result of the verification.

switch result {
        case .success(let success):
             print("Verification result: \(success.status), message: \(success.message)")
        case .failure(let error):
             switch error {
                  case .verificationFailed(let errorCode, let errorMessage):
                      print("Verification failed - Code: \(errorCode), Message: \ (errorMessage)")
            }
           @unknown default:
               print("Unknown")
         } 

success(success: VerificationSuccess): Invoked on successful verification. The VerificationSuccess may include a status(200), message and verified(true)message

public struct VerificationSuccess: Codable {
    public let status:Int
    public let verified: Bool
    public let message: String
}

failure(error: VerificationError): Invoked when verification fails. The VerificationError contains the errorCode and errorMessage.

public enum VerificationError: Error {
    case verificationFailed(errorCode: Int, errorMsg: String)
}

Example Usage:

import VerifyNowSDK
VerifyNowSDK.verify(countryCode: countryCode,
                    mobileNo: mobileNo,
                    customerId: customerId,
                     authToken: authToken,
                     isFallbackEnable: isFallbackEnable) { result in
   switch result {
        case .success(let success):
                 print("Verification result: \(success.status), message: \(success.message)")
        case .failure(let error):
                 switch error {
                      case .verificationFailed(let errorCode, let errorMsg):
                            print("Verification failed - Code: \(errorCode), Message: \ (errorMsg)")
            }
           @unknown default:
               print("Unknown")
         }

🚨 NOTE:

  • Ensure you have a valid authToken provided by MessageCentral.
  • If isFallbackEnable is true, the SDK may use alternate methods like WhatsappOtp verification if primary method fails.
  • Always handle both success and failure gracefully to improve UX.

SDK Capabilities

Feature / Aspect
VerifyNow SDK - iOS
VerifyNow SDK - Android
Platform Support
iOS 12+ with SwiftUI 5 andXcode 16.0+
Android 6.0+ with Android Studio4.0+, Java 8+, Kotlin
SMS Handling
No programmatic SMS readdue to OS restrictions
Automatic SMS retrieval usingSMS Retriever API (noSMS_READ permission needed)
Typical Use Cases
User identity verification atlogin, transaction approvals,multi-factor auth
User identity verification at login, transaction approvals, multi-factor auth
Backend Integration
Calls Verify API for device and user management
Calls Verify API for device and user management
SMS Permissions
Not applicable (no SMS readprogrammatically)
Minimal permissions needed, SMS auto-capture
Developer Tools
Xcode, Swift
Android Studio, Java/Kotlin

Error codes

Code
Message
Cause
Developer Action
200
SUCCESS
Verification Success
Proceed useronboarding
700
VERIFICATION_FAILED
Reason received in callback with message in failure
Prompt user to retry
705
VERIFICATION_EXPIRED
Insert OTP after verification expired
Prompt user to retry
508/ 805
insufficient credits
Message central balance exhaust
Contact admin or top up
501
INVALID_CUSTOMER_ID
Provided customerId is not valid
Provide valid customerId
506
REQUEST_ALREADY_EXISTS
Request for verification already exist.
Wait some time before new request
511
INVALID_COUNTRY_CODE
Provided countryCode is not valid
Provide valid countryCode
800
MAXIMUM_LIMIT_REACHED
Limit reached for OTP verification for particular number on a day
Prompt user to try again for next day

Support

Contact email: support@messagecentral.com

Frequently Asked Questions

1. How can I send OTP SMS in India without DLT registration?

You can use VerifyNow, which provides pre-registered DLT headers and pre-approved OTP templates. This means you do not need your own DLT entity, header, or template. Just call the OTP API or SDK and send OTPs instantly across India.

2. Do I still need to register my own sender ID on DLT for OTP SMS?

No. VerifyNow uses its already-approved OTP headers and templates to deliver OTPs in India. Your brand name appears inside the OTP message body, so you avoid all DLT paperwork and waiting periods.

3. Can I send OTP SMS in India without template approval?

Yes. VerifyNow sends OTPs using operator-approved templates, so you do not need to go through the template approval process. Just integrate the API and start sending.

4. Will OTP SMS work in India if my business is not registered on DLT?

Yes. VerifyNow’s DLT-compliant routes allow businesses without DLT registration to deliver OTPs instantly across Indian carriers including Jio, Airtel, and VI.

5. How fast is OTP delivery in India?

Most OTPs sent via VerifyNow reach users in under 3–5 seconds, thanks to direct operator routes and priority DLT templates. This helps maintain high login completion rates.

6. How much does it cost to send OTP SMS in India?

VerifyNow offers transparent pay-as-you-go pricing with no monthly fees. Pricing varies by OTP channel (SMS or WhatsApp), and you get free test credits to validate deliverability before going live.

7. Can I send WhatsApp OTP if SMS fails in India?

Yes. VerifyNow supports automatic fallback:
SMS OTP → WhatsApp OTP
This improves OTP success rates in low-signal or high-filtering regions.

8. How do you prevent OTP failures due to DLT filtering?

VerifyNow uses pre-approved templates, registered headers, strict OTP formatting rules, and operator-approved routes. This ensures OTPs pass DLT scrubbing and reach users reliably.

9. Can VerifyNow be used for authentication flows like signup, login and device verification in India?

Absolutely. VerifyNow works across all authentication steps including signup verification, login OTP, password reset OTP, and device-binding OTP flows.

  • Pre-approved sender IDs
  • Pre-approved OTP templates
  • Pre-configured international routes

You only integrate the OTP API or SDK; no paperwork needed.

10. How secure is VerifyNow for OTP delivery in India?

VerifyNow uses encrypted API calls, short-lived OTP codes, fraud detection, retry limits, and fallback logic, ensuring secure 2FA OTP delivery across all Indian networks.

Ready to get started?

Safeguard your user accounts and build trust with your customers using SMS verification. Try Verify Now without any credit card.