Tim LessOTP

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.

WhatsAppSMS OTPCost ComparisonAuthenticationB2B
Perbandingan Biaya Auth SMS vs Inbound WA
Bagikan artikel:XThreads

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 BiayaSMS OTP TradisionalInbound WhatsApp LessOTP
Model billingBayar per SMS terkirimBayar per verifikasi production sukses
OTP expired/tidak dibukaTetap berbayarTidak ada debit kredit
Bot traffic/AITBerpotensi memicu ribuan SMS berbayarTidak memicu SMS outbound dari platform
Retry penggunaSetiap resend menambah biayaRequest pending tidak langsung dipotong
Staging/testingBiasanya memakai saldo/provider test terpisahSimulator per-App tanpa WhatsApp asli dan tanpa debit
Integrasi hasilPolling atau callback providerWebhook 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
Bagikan artikel:XThreads