Perbandingan Biaya Auth SMS vs Inbound WA
Bandingkan struktur biaya SMS OTP tradisional yang berbayar per pengiriman dengan inbound WhatsApp LessOTP yang hanya memotong kredit saat verifikasi sukses.

Kenapa biaya autentikasi SMS sulit diprediksi?
Model biaya SMS OTP menghitung setiap pesan yang dikirim oleh aplikasi. Artinya, budget tetap terpakai saat OTP terlambat, tidak dibuka, salah nomor, atau dipicu bot. Seiring pertumbuhan traffic, biaya pengiriman dan mitigasi fraud bertambah secara bersamaan.
Inbound WhatsApp Authentication LessOTP membalik mekanisme ini: pengguna memulai pesan /START dari aplikasi WhatsApp mereka dan kredit production hanya dipotong setelah verifikasi valid selesai.
Struktur biaya: SMS Auth vs Inbound WhatsApp
| Faktor Biaya | SMS OTP Tradisional | Inbound WhatsApp LessOTP |
|---|---|---|
| Model billing | Bayar per SMS terkirim | Bayar per verifikasi production sukses |
| OTP expired/tidak dibuka | Tetap berbayar | Tidak ada debit kredit |
| Bot traffic/AIT | Berpotensi memicu ribuan SMS berbayar | Tidak memicu SMS outbound dari platform |
| Retry pengguna | Setiap resend menambah biaya | Request pending tidak langsung dipotong |
| Staging/testing | Biasanya memakai saldo/provider test terpisah | Simulator per-App tanpa WhatsApp asli dan tanpa debit |
| Integrasi hasil | Polling atau callback provider | Webhook HMAC bertanda tangan dengan retry |
Cara membuat proyeksi biaya yang lebih jelas
SMS OTP
Proyeksikan seluruh OTP yang dikirim, termasuk retry, pesan gagal, dan traffic berisiko. Angka verifikasi sukses tidak cukup untuk mewakili biaya akhir.
Inbound WhatsApp LessOTP
Proyeksikan verifikasi production yang berhasil. Request yang expired, mismatch, atau tidak selesai tidak memotong kredit.
Uji kontrak API tanpa biaya messaging
Sebelum memperbarui proyeksi, uji flow end-to-end dengan App staging. Endpoint, response, verification engine, dan client webhook sama dengan production; hanya pengiriman pesan asli serta debit kredit yang dinonaktifkan.
curl -X POST https://lessotp.com/api/v1/staging/auth/request \
-H "Authorization: Bearer YOUR_STAGING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channel": "whatsapp"
}'Respons request staging:
{
"status": "success",
"data": {
"request_id": "req_8f7d6c5b4a",
"unique_code": "A7X92",
"channel": "whatsapp",
"wa_link": "https://wa.me/628999999999?text=/START+A7X92",
"expires_in": 180,
"mode": "frictionless"
}
}Simulator kemudian mengirim event verification ke webhook Anda:
{
"event": "verification.success",
"channel": "whatsapp",
"request_id": "req_8f7d6c5b4a",
"phone_number": "6281234567890",
"timestamp": "2026-08-24T10:00:00Z"
}Pastikan webhook tidak memproses biaya atau login dua kali
Gunakan signing secret App untuk memvalidasi HMAC dari raw request body dan simpan Idempotency-Key sebelum memproses event:
import { createHmac, timingSafeEqual } from "node:crypto";
function verifyLessOTPWebhook(rawBody: string, signature: string, secret: string) {
const expected = createHmac("sha256", secret).update(rawBody).digest("hex");
const received = Buffer.from(signature, "hex");
const expectedBuffer = Buffer.from(expected, "hex");
return received.length === expectedBuffer.length &&
timingSafeEqual(received, expectedBuffer);
}
// Simpan Idempotency-Key dan abaikan delivery yang sudah pernah diproses.Baca kontrak billing dan webhook lengkap di dokumentasi API LessOTP.
Bayar saat verifikasi benar-benar berhasil
Migrasikan flow OTP Anda ke inbound WhatsApp atau Telegram, lalu uji dahulu dengan Staging Simulator LessOTP tanpa biaya messaging.
Uji integrasi staging