Every delivery report carries a statusCode (shown as statuscode on legacy callbacks, for example statuscode=4071&smsoutboxid=123&TimeStamp=…). This page lists what each value means. The same list is in the dashboard under Integrations → Delivery Reports → See what each code means.
The leading digit tells you where the message stopped: 1xxx never left our platform, 4xxx came back from the carrier or the message provider after we sent it.
For how the report itself is delivered (webhook or email, authentication, retries) see Delivery Reports Webhook Documentation.
Delivered
The carrier confirmed the message reached the handset. No action needed.
| Code | What it means |
|---|---|
0 |
Delivered |
4 |
Delivered |
5 |
Seen |
DELIVERED |
Delivered |
DELIVRD |
Delivered |
ESME_ROK |
Delivered |
OK |
Delivered |
Stopped before sending
We did not pass the message to a carrier. These are usually fixable on your side — an opted-out recipient, an invalid number, or an account limit.
| Code | What it means |
|---|---|
1001 |
Blocked due to unsubscribed number |
1002 |
Invalid number length |
1003 |
Blocked internal text number |
1004 |
Sender number not assigned to account |
1010 |
Number not registered for 10DLC |
1012 |
No whatsapp session |
1013 |
Rcs agent missing |
1014 |
Blocked duplicate |
1015 |
ESME_NONWHATSAPP |
1016 |
Account restricted: Daily limits exceeded |
1017 |
Account restricted: Trial can send message to whitelist numbers only |
1018 |
Account restricted: International messaging blocked |
1019 |
Sender paused: WhatsApp quality rating is RED |
1020 |
Destination requires a dedicated number on this account |
1070 |
Invalid mobile number |
1072 |
System error |
1073 |
Unable to download MMS media |
Reported after we sent it
The message left our platform. Most of these are the mobile carrier's verdict and are billable, because they were delivered to the network. A few are the message provider refusing the send — those never reach a carrier and are not billed.
| Code | What it means |
|---|---|
4005 |
ESME_SPAM (carrier) |
4006 |
ESME_UP_VOL |
4007 |
ESME_TMO_VOL |
4008 |
ESME_ATT_VOL |
4009 |
ESME_TFNV |
4010 |
Number not registered for 10DLC |
4011 |
ESME_VOL |
4020 |
Opted out at carrier |
4021 |
Number unreachable or disconnected |
4022 |
Message exceeds size limit |
4070 |
Invalid mobile number |
4071 |
Rejected by carrier |
4072 |
Provider system error |
4073 |
Unable to download MMS media |
4090 |
Message expired before delivery |
4091 |
Handset does not support MMS |
4092 |
Content could not be opened on handset |
4093 |
Invalid message subject |
4094 |
Invalid message type |
4095 |
Text number not set up: contact support |
4096 |
No delivery confirmation received |
4097 |
Failed (Carrier) |
4098 |
Destination not enabled for this number |
4099 |
Number blocked at carrier |
Older status values
Text statuses still returned by some routes. Kept here so older integrations can resolve them.
| Code | What it means |
|---|---|
ESME_RINVDSTADR |
Failed: Invalid mobile number |
ESME_RINVSRCADR |
Failed: Invalid mobile number |
ESME_RSUBMITFAIL |
Failed |
UNDELIV |
Failed: Message not deliverable. |
UNDELIVERED |
Failed: Message not deliverable. |