Selamat datang di VerifyNow — Panduan Onboarding Cepat

Halaman ini akan membantu Anda beralih dari pendaftaran → integrasi API → OTP langsung dalam waktu kurang dari 15 menit.

Verify Now API

Integrasikan API Verifikasi SMS (V3) dengan Pusat Pesan

🔐 Pelajari cara mengotentikasi pengguna dengan SMS OTP API menggunakan Message Central di NodeJS, Python, Java, PHP, Ruby, dan C#!

Parameter API untuk Verifikasi Sekarang

VerifyNowParameter berikut perlu dikirim saat menggunakan API VerifyNow.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
Jenis aliran
Tali
SMS/WHATSAPP/
RCS/SAUTH
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.

URL Dasar API Rest

Semua titik akhir API Platform di bawah ini harus diawali dengan URL berikut:

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.

Kirim OTP

Untuk SendOTP pada nomor ponsel di bawah ini adalah parameter permintaan. Token otentikasi diperlukan untuk mengirim OTP yang dihasilkan oleh token API yang dihasilkan (yang dapat Anda temukan di atas di bagian Pendahuluan).

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)

Validasi OTP

Metode validateOTP adalah titik akhir REST API untuk memvalidasi kata sandi satu kali (OTP) untuk pelanggan.

  • 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

Tanggapan JSON

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}

Kode Respon

  • 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 )

Bantuan dan Dukungan

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. Apakah saya perlu registrasi SMS Masking atau brand name di Indonesia untuk mengirim OTP 2FA?

Tidak perlu. Dengan VerifyNow, Anda tidak harus daftar SMS Masking atau brand name ke operator seperti Telkomsel, XL, Indosat, Smartfren, atau Tri. VerifyNow sudah menggunakan rute A2P resmi dan masking pre-approved, sehingga Anda bisa kirim SMS OTP langsung tanpa proses registrasi yang memakan waktu.

2. Berapa biaya kirim SMS OTP atau WhatsApp OTP ke pengguna Indonesia?

Harga berbeda berdasarkan operator dan channel (SMS atau WhatsApp). VerifyNow menawarkan tarif SMS OTP Indonesia yang kompetitif, tanpa kontrak bulanan, dan menyediakan free test credit untuk uji latency, delivery rate, dan kualitas rute sebelum dipakai produksi.

3. Bisakah saya mengirim SMS OTP dan WhatsApp OTP dari satu OTP API atau SDK saja?

Ya. VerifyNow mendukung SMS OTP, WhatsApp OTP, dan fallback otomatis. Anda bisa pilih channel sendiri atau biarkan sistem beralih otomatis jika SMS gagal—ideal untuk wilayah yang ketat filtering-nya.

4. Apakah saya harus daftar template OTP ke operator sebelum mengirim? (Telkomsel/XL/Indosat)

Tidak. Normalnya, Indonesia mewajibkan approval template untuk SMS Masking. Tetapi VerifyNow menggunakan template OTP yang sudah disetujui, jadi Anda tidak perlu melakukan registrasi template secara manual.

5. Seberapa cepat saya bisa integrasi OTP lewat VerifyNow SDK?

Kebanyakan tim dev Indonesia bisa integrasi VerifyNow OTP SDK dalam kurang dari 10 menit. SDK sudah menangani pembuatan OTP, validasi, retry, fallback, error handling, dan routing otomatis—tanpa perlu menulis backend logic sendiri.

6. Bagaimana cara menghindari filtering SMS OTP oleh operator Indonesia?

Gunakan platform verifikasi dengan rute A2P direct dan masking yang sudah terdaftar. VerifyNow memastikan OTP menggunakan rute berkualitas tinggi yang minim filtering di operator seperti Telkomsel, XL, Indosat, Smartfren, dan Tri.

7. Bisakah VerifyNow dipakai untuk semua jenis 2FA flow di aplikasi Indonesia?

Ya. VerifyNow mendukung verifikasi nomor, login 2FA, reset password, OTP transaksi, device verification, dan aliran multi-factor untuk aplikasi fintech, SaaS, e-commerce, ride-hailing, dan layanan digital lainnya.

8. Apa saja opsi fallback yang tersedia?

VerifyNow mendukung fallback otomatis:
SMS OTP → WhatsApp OTP fallback
Jika SMS ter-filter atau lambat, WhatsApp dikirim otomatis untuk meningkatkan success rate dan mengurangi user drop-off.

9. Apakah saya perlu persetujuan operator atau dokumen telekomunikasi untuk kirim OTP internasional?

Tidak. VerifyNow mengatasi seluruh compliance dengan menyediakan:

  • SMS Masking pre-approved
  • Template OTP siap pakai
  • Rute internasional direct

Anda tidak melakukan pendaftaran apa pun.

10. Seberapa aman OTP API VerifyNow untuk 2FA di Indonesia?

VerifyNow menggunakan OTP time-limited, API terenkripsi, template terkontrol, fraud detection, retry limit, dan fallback channel. Mekanisme ini memastikan keamanan OTP untuk pengguna Indonesia dan global.

Siap untuk memulai?

Lindungi akun pengguna Anda dan bangun kepercayaan dengan pelanggan Anda menggunakan verifikasi SMS. Coba Verifikasi Sekarang tanpa kartu kredit.