Zum Inhalt springen
OmniChannels.ai

Kostenloses Tool

SMS-Zustellbericht-Decoder (DLR)

Fügen Sie einen SMPP-Zustellbericht oder einen ganzen Stapel ein. Sie sehen, was jedes Feld bedeutet, wie lange die Zustellung dauerte, welcher Webhook-Status passt und was ein SMPP-command_status-Fehler aussagt.

Kostenlos · ohne Anmeldung · im Browser

Fügen Sie den short_message-Text eines oder mehrerer deliver_sm-Zustellberichte ein, einen pro Zeile. Ein einzelner command_status wie 0x00000058 wird ebenfalls entschlüsselt.

Entschlüsselte Berichte

Berichte: 4 · Zustellquote: 25 %

Berichte
4
Zustellquote
25 %
DELIVRD ÷ Berichte mit bekanntem stat
Mittlere Laufzeit (Median)
1 Std. 7 Min.
Zu prüfen
0

Nach stat

  • DELIVRD1
  • ACCEPTD1
  • UNDELIV1
  • EXPIRED1

Nach nächstliegendem Webhook-Status

  • SENT1
  • DELIVERED1
  • FAILED2
  1. Zeile 1stat:DELIVRDNächstliegender Webhook-Status: DELIVEREDEndgültig

    Auf dem Endgerät zugestellt.

    Unverbindliche Zuordnung zu den normalisierten Status unserer API.

    Nachrichten-ID
    2610101200457381
    Entspricht der message_id aus submit_sm_resp.
    sub (eingereicht)
    001
    Ursprünglich eingereichte Nachrichten, meist 001.
    dlvrd (zugestellt)
    001
    Zugestellte Nachrichten, meist 001 oder 000. Viele SMSCs befüllen das Feld ungenau – verlassen Sie sich auf stat.
    Einreichungsdatum
    10.10.2026, 12:00:05261010120005
    Uhr des SMSC. Der Bericht enthält keine Zeitzone (meist UTC).
    Abschlussdatum
    10.10.2026, 12:00:09261010120009
    Uhr des SMSC. Der Bericht enthält keine Zeitzone (meist UTC).
    Zustelldauer
    4 Sek.
    err
    000
    Kein Fehler.
    text
    Your code is 482913
    Die ersten 20 Zeichen der ursprünglichen Nachricht, oft gekürzt oder leer.
  2. Zeile 2stat:UNDELIVNächstliegender Webhook-Status: FAILEDEndgültig

    Nicht zustellbar: ungültige oder inaktive Nummer, gesperrter Teilnehmer oder Netzfehler.

    Unverbindliche Zuordnung zu den normalisierten Status unserer API.

    Nachrichten-ID
    2610101200457382
    Entspricht der message_id aus submit_sm_resp.
    sub (eingereicht)
    001
    Ursprünglich eingereichte Nachrichten, meist 001.
    dlvrd (zugestellt)
    000
    Zugestellte Nachrichten, meist 001 oder 000. Viele SMSCs befüllen das Feld ungenau – verlassen Sie sich auf stat.
    Einreichungsdatum
    10.10.2026, 12:002610101200
    Uhr des SMSC. Der Bericht enthält keine Zeitzone (meist UTC).
    Abschlussdatum
    10.10.2026, 14:152610101415
    Uhr des SMSC. Der Bericht enthält keine Zeitzone (meist UTC).
    Zustelldauer
    2 Std. 15 Min.
    err
    001
    err-Werte ungleich null sind SMSC- oder netzspezifisch (oft aus GSM-Netzursachen abgeleitet). Prüfen Sie die Fehlerliste Ihres Anbieters.
    text
    Your order has shipp
    Die ersten 20 Zeichen der ursprünglichen Nachricht, oft gekürzt oder leer.
  3. Zeile 3stat:expiredNächstliegender Webhook-Status: FAILEDEndgültig

    Die Gültigkeitsdauer lief ab, bevor das Endgerät erreichbar war (oft ausgeschaltet oder ohne Empfang).

    Unverbindliche Zuordnung zu den normalisierten Status unserer API.

    Nachrichten-ID
    2610101200457383
    Entspricht der message_id aus submit_sm_resp.
    sub (eingereicht)
    001
    Ursprünglich eingereichte Nachrichten, meist 001.
    dlvrd (zugestellt)
    000
    Zugestellte Nachrichten, meist 001 oder 000. Viele SMSCs befüllen das Feld ungenau – verlassen Sie sich auf stat.
    Einreichungsdatum
    10.10.2026, 12:012610101201
    Uhr des SMSC. Der Bericht enthält keine Zeitzone (meist UTC).
    Abschlussdatum
    11.10.2026, 00:012610110001
    Uhr des SMSC. Der Bericht enthält keine Zeitzone (meist UTC).
    Zustelldauer
    12 Std.
    err
    000
    Kein Fehler.
    text
    Flash sale ends toni
    Die ersten 20 Zeichen der ursprünglichen Nachricht, oft gekürzt oder leer.
  4. Zeile 4stat:ACCEPTDNächstliegender Webhook-Status: SENTZwischenstand

    Vom Netz angenommen. In der Regel folgt ein endgültiger Bericht.SMPP v3.4 definiert ACCEPTD formal als „vom Kundenservice im Namen des Teilnehmers manuell gelesen“, doch die meisten SMSCs und Aggregatoren senden es als Zwischenbericht „vom Netz angenommen“.

    Unverbindliche Zuordnung zu den normalisierten Status unserer API.

    Nachrichten-ID
    2610101200457384
    Entspricht der message_id aus submit_sm_resp.
    sub (eingereicht)
    001
    Ursprünglich eingereichte Nachrichten, meist 001.
    dlvrd (zugestellt)
    000
    Zugestellte Nachrichten, meist 001 oder 000. Viele SMSCs befüllen das Feld ungenau – verlassen Sie sich auf stat.
    Einreichungsdatum
    10.10.2026, 12:022610101202
    Uhr des SMSC. Der Bericht enthält keine Zeitzone (meist UTC).
    Abschlussdatum
    10.10.2026, 12:022610101202
    Uhr des SMSC. Der Bericht enthält keine Zeitzone (meist UTC).
    Zustelldauer
    0 Sek.
    err
    000
    Kein Fehler.
    text
    —
    Die ersten 20 Zeichen der ursprünglichen Nachricht, oft gekürzt oder leer.
  5. Zeile 5 · command_status0x00000058ESME_RTHROTTLEDVorübergehend

    Throttling error (ESME has exceeded allowed message limits)

    Später mit exponentiellem Backoff erneut versuchen, nie in einer engen Schleife.

SMPP-v3.4-command_status-Codes

48 Codes

CodeNameBedeutung (Spezifikation)Was tun
0x00000000ESME_ROKNo errorErfolg
0x00000001ESME_RINVMSGLENMessage length is invalidAnfrage korrigieren
0x00000002ESME_RINVCMDLENCommand length is invalidAnfrage korrigieren
0x00000003ESME_RINVCMDIDInvalid command IDAnfrage korrigieren
0x00000004ESME_RINVBNDSTSIncorrect bind status for given commandBind oder Sitzung
0x00000005ESME_RALYBNDESME already in bound stateBind oder Sitzung
0x00000006ESME_RINVPRTFLGInvalid priority flagAnfrage korrigieren
0x00000007ESME_RINVREGDLVFLGInvalid registered delivery flagAnfrage korrigieren
0x00000008ESME_RSYSERRSystem errorVorübergehend
0x0000000AESME_RINVSRCADRInvalid source addressAnfrage korrigieren
0x0000000BESME_RINVDSTADRInvalid destination addressAnfrage korrigieren
0x0000000CESME_RINVMSGIDMessage ID is invalidAnfrage korrigieren
0x0000000DESME_RBINDFAILBind failedBind oder Sitzung
0x0000000EESME_RINVPASWDInvalid passwordBind oder Sitzung
0x0000000FESME_RINVSYSIDInvalid system IDBind oder Sitzung
0x00000011ESME_RCANCELFAILcancel_sm failedAnfrage korrigieren
0x00000013ESME_RREPLACEFAILreplace_sm failedAnfrage korrigieren
0x00000014ESME_RMSGQFULMessage queue fullVorübergehend
0x00000015ESME_RINVSERTYPInvalid service typeAnfrage korrigieren
0x00000033ESME_RINVNUMDESTSInvalid number of destinationsAnfrage korrigieren
0x00000034ESME_RINVDLNAMEInvalid distribution list nameAnfrage korrigieren
0x00000040ESME_RINVDESTFLAGDestination flag is invalid (submit_multi)Anfrage korrigieren
0x00000042ESME_RINVSUBREPInvalid 'submit with replace' request (submit_sm with replace_if_present_flag set)Anfrage korrigieren
0x00000043ESME_RINVESMCLASSInvalid esm_class field dataAnfrage korrigieren
0x00000044ESME_RCNTSUBDLCannot submit to distribution listAnfrage korrigieren
0x00000045ESME_RSUBMITFAILsubmit_sm or submit_multi failedVorübergehend
0x00000048ESME_RINVSRCTONInvalid source address TONAnfrage korrigieren
0x00000049ESME_RINVSRCNPIInvalid source address NPIAnfrage korrigieren
0x00000050ESME_RINVDSTTONInvalid destination address TONAnfrage korrigieren
0x00000051ESME_RINVDSTNPIInvalid destination address NPIAnfrage korrigieren
0x00000053ESME_RINVSYSTYPInvalid system_type fieldBind oder Sitzung
0x00000054ESME_RINVREPFLAGInvalid replace_if_present flagAnfrage korrigieren
0x00000055ESME_RINVNUMMSGSInvalid number of messagesAnfrage korrigieren
0x00000058ESME_RTHROTTLEDThrottling error (ESME has exceeded allowed message limits)Vorübergehend
0x00000061ESME_RINVSCHEDInvalid scheduled delivery timeAnfrage korrigieren
0x00000062ESME_RINVEXPIRYInvalid message validity period (expiry time)Anfrage korrigieren
0x00000063ESME_RINVDFTMSGIDPredefined message invalid or not foundAnfrage korrigieren
0x00000064ESME_RX_T_APPNESME receiver temporary app error codeVorübergehend
0x00000065ESME_RX_P_APPNESME receiver permanent app error codeAnfrage korrigieren
0x00000066ESME_RX_R_APPNESME receiver reject message error codeAnfrage korrigieren
0x00000067ESME_RQUERYFAILquery_sm request failedVorübergehend
0x000000C0ESME_RINVOPTPARSTREAMError in the optional part of the PDU bodyAnfrage korrigieren
0x000000C1ESME_ROPTPARNOTALLWDOptional parameter not allowedAnfrage korrigieren
0x000000C2ESME_RINVPARLENInvalid parameter lengthAnfrage korrigieren
0x000000C3ESME_RMISSINGOPTPARAMExpected optional parameter missingAnfrage korrigieren
0x000000C4ESME_RINVOPTPARAMVALInvalid optional parameter valueAnfrage korrigieren
0x000000FEESME_RDELIVERYFAILUREDelivery failure (used for data_sm_resp)Vorübergehend
0x000000FFESME_RUNKNOWNERRUnknown errorVorübergehend

Die Beschreibungen folgen der SMPP-v3.4-Spezifikation, Abschnitt 5.1.3 (auf Englisch).

Sie möchten Berichte nicht selbst parsen? Unsere SMS-API sendet normalisierte Zustellstatus an Ihren Webhook, und für hohe Volumen stehen SMPP-Binds bereit. Webhook-DokuSMPP-LeitfadenSMS-API für Unternehmen

Ihre Eingaben werden nicht an unsere Server gesendet.

Kurze Antwort

Ein SMPP-Zustellbericht (DLR) ist die Bestätigung, die ein SMSC nach dem Versand einer SMS in einer deliver_sm-PDU zurückschickt. Der Text folgt dem Muster id, sub, dlvrd, submit date, done date, stat, err und text. Das Feld stat enthält das Ergebnis: DELIVRD heißt auf dem Endgerät zugestellt; UNDELIV, EXPIRED, DELETED und REJECTD sind endgültige Fehlschläge; ENROUTE und ACCEPTD sind Zwischenstände. Datumsangaben folgen JJMMTThhmm, teils mit Sekunden.

So entschlüsseln Sie einen SMS-Zustellbericht

  1. 1

    Berichtstext kopieren

    Kopieren Sie das short_message der deliver_sm-PDU aus Ihrem SMPP-Client oder dem SMSC-Log, etwa id:… sub:001 dlvrd:001 … stat:DELIVRD err:000. Log-Präfixe werden ignoriert.

  2. 2

    Einen pro Zeile einfügen

    Fügen Sie einen einzelnen Bericht oder Hunderte ein. Auch ein command_status-Wert wie 0x00000058 oder ESME_RTHROTTLED in einer eigenen Zeile wird erkannt.

  3. 3

    Entschlüsselte Felder lesen

    Jeder Bericht zeigt die Bedeutung des Status, ob er endgültig ist, den nächstliegenden Webhook-Status, lesbare Zeitangaben, die Zustelldauer und Hinweise auf fehlende oder widersprüchliche Felder.

  4. 4

    Stapelübersicht prüfen

    Sehen Sie die Anzahl je stat und Webhook-Status, die Zustellquote und die mittlere Laufzeit, und kopieren Sie alles als JSON für ein Ticket oder Testdaten.

Aufbau eines SMPP-Zustellberichts

Wenn Sie eine SMS mit registered_delivery = 1 senden, schickt das SMSC später eine deliver_sm-PDU über einen Receiver- oder Transceiver-Bind zurück. Bit 0x04 im esm_class kennzeichnet sie als Zustellbericht statt als eingehende Nachricht, und ihr short_message enthält den Bericht als Text. Anhang B der SMPP-v3.4-Spezifikation nennt dieses Format als Beispiel, und fast alle SMSCs halten sich daran: id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm stat:DDDDDDD err:E text:….

Da Anhang B nur ein Beispiel und keine feste Regel ist, weichen echte Berichte ab: Schlüssel in Kleinbuchstaben, zusätzliche Leerzeichen, submit_date mit Unterstrich, zwölfstellige Zeitangaben mit Sekunden oder fehlendes text. Dieser Decoder akzeptiert all diese Varianten und meldet fehlende Felder.

  • id: die Nachrichten-ID, die das SMSC in submit_sm_resp zurückgegeben hat. Damit ordnen Sie den Bericht Ihrer Nachricht zu. Das Beispiel der Spezifikation zeigt 10 Zeichen, viele SMSCs verwenden aber längere IDs, teils hexadezimal.
  • sub und dlvrd: die Anzahl eingereichter und zugestellter Nachrichten, dreistellig. Sie sind vor allem für Verteilerlisten relevant; bei einer einzelnen SMS steht meist 001 und 001 (oder 000).
  • submit date und done date: wann die Nachricht eingereicht wurde und wann sie ihren Endstatus erreichte, nach der Uhr des SMSC.
  • stat: der End- oder Zwischenstatus als Code aus 7 Buchstaben, etwa DELIVRD.
  • err: ein dreistelliger Fehlercode, netz- oder SMSC-spezifisch; 000 bedeutet kein Fehler.
  • text: die ersten 20 Zeichen der ursprünglichen Nachricht, oft gekürzt oder leer.
  • Optionale TLVs liefern diese Daten teils sauberer: receipted_message_id (0x001E), message_state (0x0427) und network_error_code (0x0423).

DLR-stat-Codes und ihre Bedeutung

SMPP v3.4 definiert acht Nachrichtenstatus. ENROUTE und ACCEPTD sind Zwischenstände, alle anderen endgültig. Unsere API normalisiert alle Kanäle auf sechs Webhook-Status (SUBMITTED, SENT, DELIVERED, READ, FAILED, REJECTED), und der Decoder zeigt für jeden stat-Wert die nächstliegende Entsprechung. Diese Zuordnung ist unverbindlich: Die genaue Regel für Ihr Konto wird beim Onboarding bestätigt.

  • DELIVRD (message_state 2): auf dem Endgerät zugestellt. Nächstliegender Webhook-Status: DELIVERED.
  • ACCEPTD (6): formal „vom Kundenservice im Namen des Teilnehmers manuell gelesen“, doch die meisten SMSCs senden es als Zwischenbericht „vom Netz angenommen“. Nächstliegend: SENT.
  • ENROUTE (1): noch unterwegs, etwa für einen erneuten Versuch eingereiht. Nächstliegend: SENT.
  • UNDELIV (5): nicht zustellbar, etwa eine ungültige oder inaktive Nummer. Nächstliegend: FAILED.
  • EXPIRED (3): die Gültigkeitsdauer lief ab, bevor das Endgerät erreichbar war, oft weil es ausgeschaltet oder ohne Empfang war. Nächstliegend: FAILED.
  • DELETED (4): vor der Zustellung gelöscht, etwa per cancel_sm. Nächstliegend: FAILED.
  • REJECTD (8): vom Netz oder einer SMS-Firewall abgelehnt, etwa wegen einer nicht registrierten Absenderkennung oder gesperrter Inhalte. Nächstliegend: REJECTED.
  • UNKNOWN (7): das SMSC hat keinen Endstatus. Werten Sie es als unbestätigt, nicht als nachgewiesenen Fehlschlag.

err-Codes: warum es keine allgemeingültige Liste gibt

Das Feld err ist drei Zeichen breit, und die SMPP-Spezifikation legt seine Werte nicht fest. 000 bedeutet immer kein Fehler, alle anderen Werte stammen vom SMSC-Hersteller, vom Netzbetreiber oder von einem zwischengeschalteten Aggregator. Manche SMSCs reichen GSM-MAP-Fehlerursachen durch (zum Beispiel ist MAP-Fehler 1 ein unbekannter Teilnehmer und 27 ein abwesender Teilnehmer), andere verwenden eigene Tabellen.

Enthält der Bericht das TLV network_error_code (0x0423), ist es verlässlicher: Das erste Oktett gibt den Netztyp an (3 steht für GSM), die nächsten beiden den Fehlercode. Ein DELIVRD-Bericht mit err ungleich null ist widersprüchlich und sollte mit Ihrem Anbieter geklärt werden; der Decoder markiert ihn.

command_status-Fehler und Zustellberichte

SMPP meldet Probleme zu zwei Zeitpunkten. Der command_status in submit_sm_resp kommt nach Millisekunden und sagt, ob das SMSC Ihre Anfrage angenommen hat; 0x00000000 (ESME_ROK) heißt angenommen, nicht zugestellt. Der Zustellbericht folgt Sekunden bis Tage später und enthält das endgültige Ergebnis.

Die command_status-Werte sind in Abschnitt 5.1.3 von SMPP v3.4 definiert. Im Betrieb am häufigsten sind 0x00000058 ESME_RTHROTTLED (vereinbarte Nachrichten pro Sekunde überschritten: drosseln und mit exponentiellem Backoff erneut senden), 0x00000014 ESME_RMSGQFUL (Warteschlange voll: abwarten), 0x0000000A und 0x0000000B (ungültige Absender- oder Zieladresse) sowie 0x0000000D oder 0x0000000E (Bind fehlgeschlagen oder falsches Passwort). Die Werte 0x00000400 bis 0x000004FF sind für herstellerspezifische SMSC-Fehler reserviert; fragen Sie dazu Ihren Anbieter.

Zeitangaben, Zeitzonen und Zustelldauer

Zeitangaben im Bericht folgen JJMMTThhmm, viele SMSCs hängen Sekunden an (JJMMTThhmmss). Eine Zeitzone fehlt: Maßgeblich ist die Uhr des SMSC, meist UTC. Der Decoder zeigt die Zeiten so, wie sie im Bericht stehen, und berechnet die Laufzeit als done date minus submit date. Das ist unabhängig von der Zeitzone, solange beide Werte von derselben Uhr stammen.

Die Laufzeit ist ein guter Qualitätsindikator. Ein OTP an ein erreichbares Endgerät ist normalerweise in Sekunden zugestellt. Lange Laufzeiten mit anschließendem EXPIRED deuten auf ausgeschaltete oder roamende Geräte hin, und ein done date vor dem submit date bedeutet, dass die Uhren abweichen. Minutengenaue Zeitangaben können keine Laufzeiten unter einer Minute messen; SMSCs mit Sekunden sind daher vorzuziehen.

Zustellberichte im Betrieb zuverlässig verarbeiten

Beantworten Sie jede deliver_sm mit deliver_sm_resp, auch wenn Ihre Verarbeitung scheitert; sonst sendet das SMSC sie erneut und drosselt womöglich den Bind. Speichern Sie den Rohbericht und verarbeiten Sie ihn asynchron und idempotent anhand der Nachrichten-ID, denn Berichte können doppelt oder in falscher Reihenfolge eintreffen: Ein verspätetes ENROUTE darf nie ein DELIVRD überschreiben.

Wenn Sie lieber keine Berichte parsen möchten, liefert unsere REST-SMS-API dieselben Informationen als normalisierte Webhook-Status, und verpasste Berichte lassen sich mit POST /sms/resendDlr erneut zustellen. SMPP-Binds über TLS stehen für hohe Volumen und Reseller bereit.

Fragen zu Zustellberichten

Was bedeutet stat:DELIVRD in einem SMS-Zustellbericht?

DELIVRD ist der SMPP-Status „zugestellt“: Das SMSC hat die Bestätigung, dass die Nachricht das Endgerät des Empfängers erreicht hat. Geöffnet oder gelesen wurde sie damit nicht unbedingt; klassische SMS kennt keine Lesebestätigung. In unseren Webhooks entspricht das DELIVERED.

Was ist der Unterschied zwischen UNDELIV, EXPIRED und REJECTD?

UNDELIV heißt, das Netz konnte die Nachricht nicht zustellen, etwa weil die Nummer ungültig oder inaktiv ist. EXPIRED heißt, die Zustellversuche liefen bis zum Ende der Gültigkeitsdauer, meist weil das Gerät ausgeschaltet oder ohne Empfang war. REJECTD heißt, das Netz oder eine Firewall hat die Nachricht abgelehnt, etwa wegen einer nicht registrierten Absenderkennung oder gesperrter Inhalte.

Was bedeutet ACCEPTD in einem SMPP-DLR?

Laut SMPP-v3.4-Spezifikation bedeutet ACCEPTD, dass der Kundenservice die Nachricht im Namen des Teilnehmers manuell gelesen hat. In der Praxis nutzen die meisten SMSCs und Aggregatoren es als Zwischenbericht „vom Netz angenommen“; ein endgültiger DELIVRD- oder Fehlerbericht folgt.

Was ist der SMPP-Fehler 0x00000058?

0x00000058 ist ESME_RTHROTTLED: Sie haben mehr Nachrichten pro Sekunde gesendet, als Ihr Bind erlaubt. Der Fehler ist vorübergehend. Senken Sie die Senderate, halten Sie ein sinnvolles Fenster offener submit_sm und senden Sie abgelehnte Nachrichten mit exponentiellem Backoff erneut, nicht sofort.

Was bedeutet err:000, und wo finde ich andere err-Codes?

err:000 bedeutet kein Fehler. Werte ungleich null definiert die SMPP-Spezifikation nicht; sie stammen vom SMSC-Hersteller, vom Netzbetreiber oder von einem Aggregator, manche geben GSM-MAP-Fehlerursachen weiter. Fragen Sie Ihren Anbieter nach seiner Fehlertabelle und prüfen Sie das TLV network_error_code, falls vorhanden.

Welches Datumsformat verwendet ein SMPP-Zustellbericht?

submit date und done date folgen JJMMTThhmm, etwa 2610101201 für den 10. Oktober 2026 um 12:01 Uhr. Viele SMSCs ergänzen Sekunden (JJMMTThhmmss). Eine Zeitzone ist nicht enthalten; es gilt die Uhr des SMSC, meist UTC.

Warum habe ich keinen Zustellbericht erhalten?

Häufige Ursachen: registered_delivery in submit_sm nicht auf 1, ein reiner Transmitter-Bind ohne Receiver-Bind, ein Zielnetz ohne Zustellberichte oder ein Client, der deliver_sm nicht bestätigt. Manche Routen liefern nur Zwischenberichte. Bei REST-Verkehr prüfen Sie Ihren Webhook und lassen Berichte mit /sms/resendDlr erneut senden.

Wird der Text meiner Berichte irgendwohin gesendet?

Nein. Der Decoder läuft vollständig in Ihrem Browser. Nichts, was Sie einfügen, auch keine Nachrichten-IDs oder Nachrichtentexte, wird an unsere Server gesendet.

Weitere kostenlose Tools