Zurück zum Blog
RoutingSMS OTPInfrastruktur

Die OTP-Zustellkette: Was zwischen deinem API-Call und dem Handy deines Nutzers passiert

Novauth Team5 Min. Lesezeit

Aus Sicht deiner Anwendung ist der Versand eines Einmalpassworts eine einzige Zeile Code. Du rufst einen Endpunkt auf, du bekommst ein 200, du machst weiter. Es fühlt sich atomar an.

Ist es aber nicht. Zwischen diesem API-Call und dem Handy in jemandes Hand liegt eine Lieferkette — meist mehrere Firmen lang — in die du keinerlei Einblick hast, die du nicht ausgewählt hast und für die du bei jeder einzelnen Nachricht bezahlst. Die meisten Verifizierungsprobleme, die von innerhalb deiner App mysteriös wirken, sind völlig gewöhnlich, sobald du diese Kette sehen kannst.

Hier steht, was tatsächlich drinsteckt.

Die Hops, die dir niemand zeigt

Eine „SMS senden"-Anfrage reist typischerweise ungefähr so:

  1. Die API deines Anbieters nimmt die Anfrage an und stellt sie in die Warteschlange.
  2. Ein Aggregator — eine Firma, die Messaging-Kapazität im Großen einkauft und weiterverkauft — greift sie ab. Dein Anbieter besitzt womöglich gar keine eigenen Carrier-Verbindungen; er verkauft vielleicht einfach die von jemand anderem weiter.
  3. Möglicherweise ein weiterer Aggregator. Kapazität wird gehandelt. Eine Route, die heute Morgen günstig war, kann bis zur Mittagspause zweimal weiterverkauft sein.
  4. Der Zielcarrier nimmt die Nachricht schließlich an und versucht die Zustellung ans Endgerät.

Jeder dieser Hops ist ein Geschäft, das eine Marge braucht. Keiner davon ist in deinem Dashboard sichtbar. Wenn wir sagen, dass rund 20 Cent von jedem Verifizierungs-Dollar an Zwischenhändler gehen, dann ist diese Kette die Zwischenhändler — keine Metapher.

Was dich jeder Hop kostet

Latenz. Jeder Hop ist eine Warteschlange. Deshalb wird die SMS-OTP-Zustellung typischerweise mit irgendwo zwischen 5 und 30 Sekunden angegeben, je nach Korridor — diese Spanne ist nicht das langsame Funknetz, sondern die Zahl der Zwischenhändler, durch die die Nachricht gereicht werden muss. Ein Flash Call über eine direkte Carrier-Verbindung ist in einem Median von 2–3 Sekunden abgeschlossen, weil er schlicht weniger Stellen zum Warten hat.

Geld. Marge summiert sich bei jedem Hop. Dieselbe Nachricht an dasselbe Endgerät kann wild unterschiedliche Beträge kosten, je nachdem, wie viele Firmen sie unterwegs angefasst haben.

Wahrheit. Das ist die, die weh tut. Eine Zustellquittung (DLR) wird irgendwo in dieser Kette erzeugt und zu dir zurückgereicht. Wenn ein Zwischenhändler „zugestellt" meldet, es aber nicht war, hast du keine unabhängige Möglichkeit, das zu wissen. Du vertraust einem Statusbericht einer Firma, mit der du keinen Vertrag hast, über ein Ereignis, das du nicht beobachten kannst, auf einer Route, die du nicht ausgewählt hast.

Gray Routes, kurz gefasst

Eine Gray Route ist ein Pfad, bei dem die kommerzielle Beziehung nicht zur technischen passt — Traffic, der einen Carrier über einen Kanal erreicht, für den er streng genommen nicht gedacht war, meist weil es billiger ist. Gray Routes sind genau deshalb verbreitet, weil jeder in der Kette über den Preis konkurriert.

Die praktische Konsequenz: Je mehr Hops zwischen dir und dem Carrier liegen, desto mehr Gelegenheiten gibt es für jemanden in der Mitte, von deinem Traffic auf eine Weise zu profitieren, die dir nicht dient. Das ist dieselbe strukturelle Schwäche, die AIT-Betrug so profitabel macht — Betrug ist dort am leichtesten, wo eine Nachricht mehrere Reseller durchläuft, bevor sie einen Carrier erreicht, denn mehr Hops bedeuten mehr Stellen, an denen sich jemand ein Stück vom aufgeblähten Volumen abschneiden kann.

Gray Routes sind kein von den Kosten getrenntes Problem. Sie sind dasselbe Problem, nur von der Betrugsseite betrachtet.

Warum „wir haben eine großartige API" nicht die ganze Geschichte ist

Jeder Verifizierungsanbieter hat eine saubere REST-API. Das ist Grundvoraussetzung, und es sagt dir nichts darüber, was passiert, nachdem die Anfrage deinen Server verlassen hat.

Die Fragen, die deine Rechnung und deine Conversion-Rate wirklich bestimmen, liegen weiter unten:

  • Besitzt dein Anbieter eigene Carrier-Verbindungen, oder verkauft er weiter?
  • Wie viele Parteien fassen eine Nachricht an, bevor sie das Endgerät erreicht?
  • Kannst du die tatsächliche Route und die tatsächlichen Kosten pro Nachricht sehen — oder nur eine Monatssumme?
  • Wenn ein DLR „zugestellt" sagt, wer hat diese Quittung erzeugt?

Ein Anbieter, der diese Fragen nicht beantworten kann, tut nicht zwangsläufig etwas Falsches. Aber er kann auch nicht beweisen, dass er es nicht tut — und du auch nicht.

Was eine direkte Verbindung ändert

Sich direkt mit Carriern zu verbinden — SMPP fürs Messaging, PSTN für Voice — entfernt die Weiterverkaufsebene, statt sie zu optimieren. Die Unterschiede sind strukturell, nicht inkrementell:

  • Weniger Warteschlangen → geringere, vorhersagbarere Latenz.
  • Keine Weiterverkaufsmarge → der Preis, den du zahlst, ist der Preis der Route, nicht der Preis der Route plus dem Anteil aller anderen.
  • First-Party-Datensätze → der Call Detail Record wird von dem Leg erzeugt, das tatsächlich gelaufen ist, nicht von einer Gegenpartei mit einem Interesse an seinem Inhalt an dich weitergereicht.
  • Keine Gray-Route-Exposition → es gibt keine Kette von Zwischenhändlern, in die sich jemand einklinken könnte.

Flash-Call-Verifizierung treibt das noch weiter, indem sie die Messaging-Kette gar nicht erst betritt. Der Code wird nie als Daten versendet; er ist die Anrufer-ID eines echten Sprachanrufs über die Carrier-Infrastruktur. Es gibt nirgends im Pfad einen SMS-Aggregator, weshalb er strukturell immun gegen die Betrugsmuster ist, die auf die SMS-Terminierung zielen.

Was du tatsächlich dagegen tun kannst

Du musst nicht den Anbieter wechseln, um das sehen zu können. Drei Dinge, die diese Woche lohnen, egal bei wem du bist:

  1. Frag deinen Anbieter direkt, ob er seine Carrier-Verbindungen selbst besitzt oder weiterverkauft. Es ist eine faire Frage, und die Antwort ist so oder so aufschlussreich — inklusive, wie er sie beantwortet.
  2. Zieh deine Kosten pro Nachricht, nicht deine Monatssumme. Wenn du die Kosten pro Nachricht nicht nach Ziel aufgeschlüsselt bekommst, ist genau das der Befund.
  3. Vergleiche deine Anzahl an Versänden mit deiner Anzahl abgeschlossener Verifizierungen. Die Lücke zwischen diesen beiden Zahlen ist das, wofür du zahlst und was du nicht bekommst. Die meisten Teams haben nie hingeschaut.

Die Kette ist standardmäßig unsichtbar. Das ist das Problem — nicht weil jeder darin sich schlecht verhält, sondern weil du nicht managen kannst, was dir niemand zeigen will.

Du kannst unsere veröffentlichten Preise pro Versuch für jedes Land, das wir bedienen, auf der Preisseite prüfen — kein Angebotsformular, kein Vertriebsanruf. Was du siehst, ist, was du zahlst, denn es steht niemand dazwischen, der sich ein Stück davon abschneidet.