La cadena de entrega del OTP: qué ocurre entre tu llamada a la API y el teléfono de tu usuario
Desde el punto de vista de tu aplicación, enviar una contraseña de un solo uso es una línea de código. Llamas a un endpoint, recibes un 200 y sigues adelante. Parece algo atómico.
No lo es. Entre esa llamada a la API y el teléfono en la mano de alguien hay una cadena de suministro —normalmente de varias empresas de longitud— sobre la que no tienes visibilidad, que no elegiste y por la que pagas en cada mensaje. La mayoría de los problemas de verificación que parecen misteriosos desde dentro de tu app son perfectamente ordinarios en cuanto puedes ver esa cadena.
Esto es lo que hay realmente en ella.
Los saltos que nadie te muestra
Una petición de "enviar SMS" suele viajar más o menos así:
- La API de tu proveedor acepta la petición y la pone en cola.
- Un agregador —una empresa que compra capacidad de mensajería al por mayor y la revende— la recoge. Puede que tu proveedor no tenga ninguna conexión propia con operadores; puede que simplemente esté revendiendo la de otro.
- Posiblemente otro agregador. La capacidad se negocia. Una ruta que esta mañana era barata puede haberse revendido dos veces antes de comer.
- El operador de destino acepta por fin el mensaje e intenta entregarlo al terminal.
Cada uno de esos saltos es un negocio que necesita un margen. Ninguno de ellos es visible en tu panel de control. Cuando decimos que aproximadamente 20 centavos de cada dólar de verificación van a parar a intermediarios, esta cadena son los intermediarios, no una metáfora.
Qué te cuesta cada salto
Latencia. Cada salto es una cola. Por eso la entrega de un SMS OTP suele estimarse en cualquier punto entre 5 y 30 segundos según el corredor: ese rango no es que la red de radio sea lenta, es el número de intermediarios por los que el mensaje tiene que pasar de mano en mano. Un flash call sobre una conexión directa con el operador se completa en una mediana de 2–3 segundos, sencillamente porque tiene menos sitios donde esperar.
Dinero. El margen se acumula en cada salto. El mismo mensaje al mismo terminal puede costar cantidades enormemente distintas según cuántas empresas lo hayan tocado por el camino.
Verdad. Esta es la que duele. Un acuse de entrega (DLR) se genera en algún punto de esa cadena y se te devuelve hacia arriba. Si un intermediario informa de "entregado" y no lo estaba, no tienes ninguna forma independiente de saberlo. Estás confiando en un informe de estado de una empresa con la que no tienes contrato, sobre un evento que no puedes observar, en una ruta que no elegiste.
Las rutas grises, brevemente
Una ruta gris es un camino donde la relación comercial no coincide con la técnica: tráfico que llega a un operador a través de un canal por el que no debía pasar estrictamente, normalmente porque es más barato. Las rutas grises son habituales precisamente porque todos en la cadena compiten por precio.
La consecuencia práctica: cuantos más saltos haya entre tú y el operador, más oportunidades existen para que alguien intermedio se beneficie de tu tráfico de formas que no te sirven. Esta es la misma debilidad estructural que hace que el fraude AIT sea tan rentable: el fraude es más fácil donde un mensaje pasa por varios revendedores antes de llegar a un operador, porque más saltos significan más sitios donde alguien puede quedarse una parte del volumen inflado.
Las rutas grises no son un problema separado del coste. Son el mismo problema, visto desde el lado del fraude.
Por qué "tenemos una gran API" no es toda la historia
Todo proveedor de verificación tiene una API REST limpia. Eso es lo mínimo exigible, y no te dice nada sobre lo que ocurre después de que la petición salga de tu servidor.
Las preguntas que realmente determinan tu factura y tu tasa de conversión están más abajo:
- ¿Tu proveedor tiene sus propias conexiones con operadores, o está revendiendo?
- ¿Cuántas partes tocan un mensaje antes de que llegue al terminal?
- ¿Puedes ver la ruta real y el coste real por mensaje, o solo un total mensual?
- Cuando un DLR dice "entregado", ¿quién generó ese acuse?
Un proveedor que no puede responder a eso no está necesariamente haciendo nada malo. Pero tampoco puede demostrar que no lo hace, y tú tampoco.
Qué cambia una conexión directa
Conectarse directamente a los operadores —SMPP para mensajería, PSTN para voz— elimina la capa de reventa en lugar de optimizarla. Las diferencias son estructurales, no incrementales:
- Menos colas → latencia más baja y más predecible.
- Sin margen de reventa → el precio que pagas es el precio de la ruta, no el precio de la ruta más la parte de cada uno.
- Registros de primera mano → el registro de detalle de llamada lo genera el tramo que realmente se ejecutó, no te lo transmite una contraparte con interés en lo que dice.
- Sin exposición a rutas grises → no hay una cadena de intermediarios en la que nadie pueda insertarse.
La verificación por flash call lleva esto más lejos al no entrar en absoluto en la cadena de mensajería. El código nunca se envía como dato: es el identificador de llamada de una llamada de voz real sobre infraestructura de operador. No hay ningún agregador de SMS en ningún punto del camino, y por eso es estructuralmente inmune a los patrones de fraude que atacan la terminación de SMS.
Qué hacer realmente al respecto
No necesitas cambiar de proveedor para empezar a ver esto. Tres cosas que vale la pena hacer esta semana, sea cual sea tu proveedor:
- Pregunta a tu proveedor directamente si es dueño de sus conexiones con operadores o si revende. Es una pregunta justa y la respuesta es informativa en cualquier caso, incluido cómo la responden.
- Saca tu coste por mensaje, no tu total mensual. Si no puedes obtener el coste por mensaje desglosado por destino, ese es el hallazgo.
- Compara tu número de envíos con tu número de verificaciones completadas. La brecha entre esas dos cifras es lo que estás pagando y no estás recibiendo. La mayoría de los equipos nunca la ha mirado.
La cadena es invisible por defecto. Ese es el problema, no porque todos en ella actúen mal, sino porque no puedes gestionar lo que nadie te va a mostrar.
Puedes consultar nuestras tarifas publicadas por intento para cada país que servimos en la página de precios: sin formulario de presupuesto, sin llamada comercial. Lo que ves es lo que pagas, porque no hay nadie en medio que se quede una parte.