Guía para builders
OTP gratis para tu SaaS:
códigos de acceso por WhatsApp, SMS o email, sin coste por código
Twilio Verify cobra 0,05 $ por cada código validado, más el SMS. Para un side project o un SaaS que empieza, puedes enviar los mismos códigos desde tu propio número de WhatsApp, tu móvil Android o tu correo con una llamada gratis a la API. Aquí tienes el código, el prompt para tu herramienta de código con IA y el punto en que un servicio de verificación de pago empieza a compensar.
¿Con prisa? Resume este artículo con una IA
La respuesta corta
¿Se pueden enviar códigos OTP gratis?
Sí. Tu backend genera el código, guarda su hash y lo envía con una llamada POST /message a Unlimited Messaging, que lo entrega desde tu propio número de WhatsApp, la SIM de tu móvil Android o tu correo. El plan gratis no cobra por código ni tiene tope de mensajes. El truco: una breve firma en cada mensaje y un ritmo de envío humano que no encaja con picos enormes.
La vía habitual es una API de verificación. Twilio Verify cobra 0,05 $ por verificación correcta más el coste del canal: 0,0083 $ por SMS en EE. UU., unos 58 $ por 1.000 accesos. Montarlo tú sobre una API de SMS pura sale más barato por mensaje (0,0083 $ más un recargo del operador en EE. UU.), pero exige el registro A2P 10DLC antes del primer SMS.
Para un SaaS indie, la lógica del código es lo fácil: unas 30 líneas para enviar y verificar, aquí abajo. Lo que cuesta dinero es la entrega. Enviar desde cuentas que ya tienes elimina esa partida: WhatsApp desde tu número (sin plantilla de autenticación de Meta), SMS con tu tarifa, email desde Gmail o el correo de tu dominio.
Esta página es la guía práctica. Si buscas los argumentos de WhatsApp frente al SMS (entrega, SIM swap, SMS pumping), lee el artículo sobre OTP por WhatsApp enlazado abajo. Precios consultados en las páginas de cada proveedor el 9 de noviembre de 2026.
Relacionado: por qué el OTP por WhatsApp supera a los códigos SMS, una API de SMS gratis desde tu móvil y enviar desde Gmail con una contraseña de aplicación.

La factura
¿Cuánto cuesta un OTP con las API habituales?
Por código y para 1.000 accesos correctos al mes, números de EE. UU. Verify solo cobra las verificaciones correctas; el SMS puro cobra cada envío.
| Coste por código | 1.000 códigos al mes | Qué tienes que configurar | |
|---|---|---|---|
| Twilio Verify, SMS | 0,05 $ + 0,0083 $ por SMS | Unos 58 $ | Cuenta de Twilio, servicio Verify; protección antifraude incluida |
| Twilio Verify, WhatsApp | 0,05 $ + la tarifa de autenticación de Meta | Desde unos 53 $ | Remitente de WhatsApp aprobado por Meta |
| API de SMS de Twilio, tu propio código | 0,0083 $ + recargo del operador (0,0035 $ a 0,005 $) | Unos 12 $ a 13 $ | Registro A2P 10DLC de marca y campaña |
| Resend, códigos por email | 0 $ en el plan gratis | 0 $ mientras no pases de 100 emails al día | Registros DNS en tu dominio |
| Unlimited Messaging Free | 0 € en WhatsApp, SMS y email | 0 € | Vincula tu número, móvil o correo; los códigos llevan una breve firma |
| Unlimited Messaging Medium | 19 € al mes fijos, sin coste por código | 19 € | Misma configuración, sin firma |
Precios de Twilio Verify, SMS y WhatsApp en las páginas de precios de Twilio y de Resend en resend.com/pricing, consultados el 9 de noviembre de 2026. La tarifa de autenticación de Meta depende del país del destinatario (Twilio indica utility y authentication desde 0,0034 $). Los SMS enviados con Unlimited Messaging se descuentan de tu propia tarifa móvil.
La receta
¿Cómo se construye la verificación OTP en cuatro pasos?
La misma lógica sirve para SMS, WhatsApp y email; solo cambia el canal de la petición.
- 01
Generar y guardar
Crea un código de 6 dígitos con un generador aleatorio criptográfico y guarda solo su hash, con una caducidad de unos 5 minutos y un contador de intentos.
- 02
Enviar en una llamada
POST /message con to: { phone } o { email } y el canal que eligió el usuario: WHATSAPP, SMS o EMAIL.
- 03
Verificar
Calcula el hash de lo que escribió el usuario, compara en tiempo constante, rechaza los códigos caducados y bloquea tras 5 fallos. Borra el código cuando se use.
- 04
Limitar la frecuencia
Un código nuevo por minuto y usuario, y unos pocos por hora e IP. Frena el SMS pumping y evita que tu número parezca de spam.
- dígitos, suficientes con bloqueo a los 5 intentos
- 6dígitos, suficientes con bloqueo a los 5 intentos
- vida típica de un código
- 5 minvida típica de un código
- llamada a la API para enviar por cualquier canal
- 1llamada a la API para enviar por cualquier canal
El código
¿Cómo es el código de envío y verificación?
Dos route handlers en TypeScript (estilo Next.js App Router; la misma lógica vale para Express, Hono o una edge function de Supabase). Sustituye db por tu propio almacenamiento.
// app/api/otp/send/route.ts
import { createHash, randomInt } from 'node:crypto';
import { db } from '@/lib/db'; // your own storage
export async function POST(req: Request) {
const { phone } = await req.json();
const code = String(randomInt(0, 1_000_000)).padStart(6, '0');
await db.otp.save(phone, {
hash: createHash('sha256').update(code).digest('hex'),
expiresAt: Date.now() + 5 * 60_000,
attempts: 0,
});
await fetch('https://api.unlimitedmessaging.app/message', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.UM_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
to: { phone },
channels: [{ channel: 'WHATSAPP' }],
text: `${code} es tu código de verificación de Acme. Caduca en 5 minutos.`,
}),
});
return Response.json({ sent: true });
}// app/api/otp/verify/route.ts
import { createHash, timingSafeEqual } from 'node:crypto';
import { db } from '@/lib/db';
export async function POST(req: Request) {
const { phone, code } = await req.json();
const row = await db.otp.get(phone);
if (!row || row.expiresAt < Date.now() || row.attempts >= 5) {
return Response.json({ ok: false }, { status: 400 });
}
const hash = createHash('sha256').update(String(code)).digest('hex');
if (!timingSafeEqual(Buffer.from(hash), Buffer.from(row.hash))) {
await db.otp.incrementAttempts(phone);
return Response.json({ ok: false }, { status: 401 });
}
await db.otp.delete(phone);
return Response.json({ ok: true });
}Añade a esta app códigos de verificación (OTP) por teléfono y email con Unlimited Messaging. Lee UM_API_KEY solo del entorno del servidor. Crea dos rutas de servidor. 1) POST /api/otp/send: recibe { phone } o { email } y channel ('WHATSAPP', 'SMS' o 'EMAIL'); genera un código de 6 dígitos con crypto.randomInt, guarda su hash SHA-256 con caducidad de 5 minutos y un contador de intentos, permite un código nuevo por minuto y usuario; envíalo con POST https://api.unlimitedmessaging.app/message, cabecera Authorization: Bearer UM_API_KEY, cuerpo { to: { phone } o { email }, channels: [{ channel }], subject (solo email), text: '<código> es tu código de verificación. Caduca en 5 minutos.' }. 2) POST /api/otp/verify: compara los hashes con crypto.timingSafeEqual, rechaza códigos caducados, bloquea tras 5 fallos y borra el código si es correcto. Añade una interfaz sencilla: elegir WhatsApp, SMS o email, escribir el destino y luego un campo de 6 dígitos. Referencia: https://unlimitedmessaging.app/llms-full.txtEl canal
WhatsApp, SMS o email: ¿qué canal debe llevar el código?
Deja que el usuario elija cuando puedas. Cada canal tiene un alcance y un límite distintos.
| SMS | |||
|---|---|---|---|
| El usuario necesita | Una cuenta de WhatsApp en ese número | Cualquier número móvil | Un correo que pueda abrir |
| Se envía desde | Tu número de WhatsApp vinculado | La SIM de tu móvil Android | Tu Gmail o el correo de tu dominio |
| Coste con Unlimited Messaging | Sin coste por mensaje | Tu tarifa móvil | Sin coste por mensaje |
| Límite de ritmo | Ritmo humano, envíos espaciados | 30 SMS cada 30 minutos (Android) | 500 al día en Gmail, 2.000 en Workspace |
| Ideal para | Usuarios internacionales, acceso por teléfono | Usuarios sin WhatsApp, números locales | Verificar registros, acceso con código mágico |
Juego limpio
¿Cuándo no basta una solución OTP gratis?
La entrega gratis desde tus propias cuentas encaja con un side project o un SaaS que empieza. Estos son los casos en que una API de verificación de pago se gana lo que cuesta.
Picos del día de lanzamiento
Android pide confirmación a partir de 30 SMS en 30 minutos, y los WhatsApp salen a ritmo humano. Cientos de códigos por minuto son cosa de Twilio Verify o un servicio parecido.
Una firma en el plan gratis
En el plan gratis, cada código termina con "Sent with UnlimitedMessaging.app". El plan Medium a 19 € al mes la quita.
WhatsApp no es oficial
Tu número se vincula como un dispositivo, así que no hay plantilla de autenticación de Meta ni botón de copiar código. El abuso puede hacer que bloqueen el número: limita cada envío.
Sin escudo antifraude incluido
Los servicios Verify detectan por ti el SMS pumping y los registros de bots. Con tus propias cuentas, los límites de frecuencia y un CAPTCHA en la ruta de envío son cosa tuya.
2FA de alta seguridad
El NIST SP 800-63B clasifica el OTP por la red telefónica como autenticador restringido. Para cuentas de administración, ofrece una app de autenticación (TOTP) o passkeys, que no necesitan ningún mensaje.
FAQ
Preguntas sobre API OTP gratis
Fuentes
Fuentes y referencias
Para verificar por ti mismo la información de este artículo:
- Precios de Verify (0,05 $ por verificación correcta más el coste del canal)Twilio
- Precios de SMS en Estados Unidos (0,0083 $ por segmento, recargos del operador)Twilio
- Precios de WhatsApp (0,005 $ por mensaje más la tarifa de plantilla de Meta)Twilio
- Registro de marca A2P 10DLCTwilio Docs
- Precios de WhatsApp Business Platform (categoría authentication, nivel gratis solo para mensajes de servicio)Meta for Developers
- Precios de Resend (gratis: 3.000 emails al mes, 100 al día)Resend
- SmsUsageMonitor (umbral de 30 SMS en 30 minutos)Android Open Source Project
- NIST SP 800-63B, autenticadores fuera de banda por la red telefónica (restringidos)NIST

Escrito por
Ilian · Ingeniero de software senior
Ingeniero de software senior, funda y dirige varias empresas tecnológicas. Diseña productos en torno a las API de mensajería, la automatización y la integración de la IA, y comparte aquí lo que aprende construyendo.
Códigos de acceso hoy mismo, sin pagar por código.
Vincula tu número de WhatsApp, tu móvil Android o tu correo, crea una clave API y envía tu primer código de verificación gratis.
