La chaîne de livraison OTP : ce qui se passe entre votre appel API et le téléphone de votre utilisateur
Du point de vue de votre application, envoyer un mot de passe à usage unique tient en une ligne de code. Vous appelez un endpoint, vous recevez un 200, vous passez à autre chose. Cela paraît atomique.
Ce n'est pas le cas. Entre cet appel API et le téléphone dans la main de quelqu'un se trouve une chaîne d'approvisionnement — généralement longue de plusieurs entreprises — sur laquelle vous n'avez aucune visibilité, que vous n'avez pas choisie, et que vous payez à chaque message. La plupart des problèmes de vérification qui paraissent mystérieux depuis l'intérieur de votre app sont parfaitement ordinaires dès que vous pouvez voir cette chaîne.
Voici ce qu'elle contient réellement.
Les sauts que personne ne vous montre
Une requête « envoyer un SMS » suit généralement un chemin de ce type :
- L'API de votre fournisseur accepte la requête et la met en file d'attente.
- Un agrégateur — une entreprise qui achète de la capacité de messagerie en gros et la revend — la récupère. Votre fournisseur ne possède peut-être aucune connexion opérateur en propre ; il se peut qu'il revende simplement celles de quelqu'un d'autre.
- Peut-être un autre agrégateur. La capacité s'échange. Une route bon marché ce matin peut avoir été revendue deux fois avant midi.
- L'opérateur de destination accepte enfin le message et tente de le livrer au combiné.
Chacun de ces sauts est une entreprise qui a besoin d'une marge. Aucun n'est visible dans votre tableau de bord. Quand nous disons qu'environ 20 cents de chaque dollar de vérification vont aux intermédiaires, cette chaîne, ce sont les intermédiaires — pas une métaphore.
Ce que chaque saut vous coûte
Latence. Chaque saut est une file d'attente. C'est pourquoi la livraison d'un SMS OTP est généralement annoncée entre 5 et 30 secondes selon le corridor — cette fourchette n'est pas due à la lenteur du réseau radio, mais au nombre d'intermédiaires par lesquels le message doit transiter. Un flash call via une connexion opérateur directe s'accomplit en 2–3 secondes en médiane, tout simplement parce qu'il a moins d'endroits où attendre.
Argent. La marge se cumule à chaque saut. Le même message vers le même combiné peut coûter des montants radicalement différents selon le nombre d'entreprises qui l'ont touché en chemin.
Vérité. C'est celui qui fait mal. Un accusé de réception (DLR) est généré quelque part dans cette chaîne et vous est remonté. Si un intermédiaire déclare « livré » alors que ce n'était pas le cas, vous n'avez aucun moyen indépendant de le savoir. Vous faites confiance à un rapport de statut émis par une entreprise avec laquelle vous n'avez aucun contrat, à propos d'un événement que vous ne pouvez pas observer, sur une route que vous n'avez pas choisie.
Les routes grises, en bref
Une route grise est un chemin où la relation commerciale ne correspond pas à la relation technique — du trafic qui atteint un opérateur par un canal qui ne lui était pas strictement destiné, généralement parce que c'est moins cher. Les routes grises sont courantes précisément parce que tout le monde dans la chaîne se livre une concurrence par les prix.
La conséquence pratique : plus il y a de sauts entre vous et l'opérateur, plus il existe d'occasions pour quelqu'un au milieu de profiter de votre trafic d'une manière qui ne vous sert pas. C'est la même faiblesse structurelle qui rend la fraude AIT si rentable — la fraude est plus facile là où un message passe par plusieurs revendeurs avant d'atteindre un opérateur, car plus il y a de sauts, plus il y a d'endroits où quelqu'un peut prélever une part du volume gonflé.
Les routes grises ne sont pas un problème distinct du coût. C'est le même problème, vu du côté de la fraude.
Pourquoi « nous avons une super API » ne dit pas tout
Chaque fournisseur de vérification a une API REST propre. C'est le minimum vital, et cela ne vous dit rien de ce qui se passe une fois la requête partie de votre serveur.
Les questions qui déterminent réellement votre facture et votre taux de conversion se situent plus loin :
- Votre fournisseur détient-il ses propres connexions opérateur, ou revend-il ?
- Combien de parties touchent un message avant qu'il n'atteigne le combiné ?
- Pouvez-vous voir la route réelle et le coût réel par message — ou seulement un total mensuel ?
- Quand un DLR indique « livré », qui a généré cet accusé ?
Un fournisseur incapable de répondre à ces questions ne fait pas nécessairement quelque chose de répréhensible. Mais il ne peut pas non plus prouver le contraire, et vous non plus.
Ce qu'une connexion directe change
Se connecter directement aux opérateurs — SMPP pour la messagerie, PSTN pour la voix — supprime la couche de revente plutôt que de l'optimiser. Les différences sont structurelles, pas incrémentales :
- Moins de files d'attente → une latence plus faible et plus prévisible.
- Aucune marge de revente → le prix que vous payez est le prix de la route, pas le prix de la route plus la part de chacun.
- Enregistrements de première main → le call detail record est généré par le segment qui s'est réellement exécuté, pas relayé par une contrepartie qui a un intérêt dans ce qu'il indique.
- Aucune exposition aux routes grises → il n'y a aucune chaîne d'intermédiaires dans laquelle quiconque puisse s'insérer.
La vérification par flash call va plus loin en n'entrant pas du tout dans la chaîne de messagerie. Le code n'est jamais envoyé sous forme de donnée — il est l'identifiant d'appelant d'un véritable appel vocal via l'infrastructure opérateur. Il n'y a aucun agrégateur SMS dans le chemin, et c'est pourquoi il est structurellement immunisé contre les schémas de fraude qui ciblent la terminaison SMS.
Que faire concrètement
Vous n'avez pas besoin de changer de fournisseur pour commencer à voir cela. Trois choses valent la peine d'être faites cette semaine, quel que soit votre fournisseur :
- Demandez directement à votre fournisseur s'il possède ses connexions opérateur ou s'il les revend. C'est une question légitime et la réponse est instructive dans les deux cas — y compris la manière dont il y répond.
- Sortez votre coût par message, pas votre total mensuel. Si vous ne pouvez pas obtenir le coût par message ventilé par destination, c'est là qu'est le constat.
- Comparez votre nombre d'envois à votre nombre de vérifications abouties. L'écart entre ces deux chiffres correspond à ce que vous payez sans l'obtenir. La plupart des équipes n'ont jamais regardé.
La chaîne est invisible par défaut. C'est ça le problème — non pas parce que tout le monde y agit mal, mais parce que vous ne pouvez pas gérer ce que personne ne veut vous montrer.
Vous pouvez consulter nos tarifs publiés par tentative pour chaque pays que nous desservons sur la page tarifs — sans formulaire de devis, sans appel commercial. Ce que vous voyez est ce que vous payez, car il n'y a personne entre les deux pour en prélever une part.