> ## Documentation Index
> Fetch the complete documentation index at: https://onextel-09023014.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# DLR Callback

> The delivery receipt OneXtel posts to your URL after an international SMS reaches its final state.

When an international SMS reaches its final state, OneXtel posts a **delivery receipt (DLR)** to
the callback URL registered against your API key.

Register that URL under **Configuration → Add New Callback** — see
[Callback configuration](/guides/platform/callback-configuration).

<Note>
  This receipt uses **UPPERCASE** field names. SMS sent to India through the
  [India send endpoint](/api-reference/sms/send-sms-omni) produces a different, camelCase receipt —
  see [the India DLR](/api-reference/sms/dlr-callback).
</Note>

## Payload

<CodeGroup>
  ```json Delivered theme={null}
  {
    "STATUS": "success",
    "STATUSDATETIME": "2025-12-04 13:32:04",
    "MSGID": "36NIhMgNvTJDx21HSsuZzF0XD4C",
    "ERRORCODE": "000",
    "ERRORDESP": "DELIVRD",
    "CLIENTMSID": "123456789",
    "MOBILENUMBER": "971502829916"
  }
  ```

  ```json Failed theme={null}
  {
    "STATUS": "failed",
    "STATUSDATETIME": "2025-12-04 13:30:47",
    "MSGID": "36NIY3sBLynZlLiMLAAudI1CzhY",
    "ERRORCODE": "011",
    "ERRORDESP": "UNDELIV",
    "CLIENTMSID": "123456789",
    "MOBILENUMBER": "971111111111"
  }
  ```

  ```json With custom references theme={null}
  {
    "STATUS": "failed",
    "STATUSDATETIME": "2026-08-26 16:17:49",
    "MSGID": "3IS8ZJzf2W9RGj2VgD6kGfsAHzL",
    "ERRORCODE": "027",
    "ERRORDESP": "UNDELIV",
    "MOBILENUMBER": "918872725225",
    "custref1": "1111",
    "custref2": "111111",
    "custref3": "11111111",
    "custref4": "111111111",
    "custref5": "1111111111"
  }
  ```
</CodeGroup>

## Fields

<ResponseField name="STATUS" type="string">
  Final delivery state — `success` or `failed`.
</ResponseField>

<ResponseField name="STATUSDATETIME" type="string">
  When the delivery status was finalised, formatted `YYYY-MM-DD HH:mm:ss`.
</ResponseField>

<ResponseField name="MSGID" type="string">
  The platform's message identifier — the same value returned as `messageid` on the
  [submission response](/api-reference/sms-international/send-sms#response).
</ResponseField>

<ResponseField name="ERRORCODE" type="string">
  The specific outcome. `000` is delivered; everything else is a failure reason. See
  [Error codes](/api-reference/sms-international/error-codes).
</ResponseField>

<ResponseField name="ERRORDESP" type="string">
  The outcome *class* — `DELIVRD`, `UNDELIV`, `REJECTD`, or `EXPIRED`. Coarser than `ERRORCODE`
  and useful for reporting buckets.
</ResponseField>

<ResponseField name="MOBILENUMBER" type="string">
  Recipient mobile number, with country code.
</ResponseField>

### Your reference fields

Whichever reference fields you sent on the original submission come back here unchanged — the
two mechanisms are independent, so a message sent with both returns both. If you sent none, none
appear.

<ResponseField name="CLIENTMSID" type="string">
  The `clientsmsid` from your submission.
</ResponseField>

<ResponseField name="custref1" type="string">
  The first custom reference from your submission. `custref2` through `custref5` follow the same
  pattern. See [Reference IDs](/api-reference/sms-international/send-sms#reference-ids).
</ResponseField>

## Reading the receipt

Branch on **`ERRORCODE`** for anything that drives logic — retries, suppression lists,
diagnostics. Use `ERRORDESP` for reporting buckets and `STATUS` only for a delivered/not-delivered
split.

<Note>
  This receipt carries no sender, template, or message content — only the outcome and your own
  references. Store what you need against `MSGID` at submission time, or carry it in
  `custref1`–`custref5`.
</Note>

<Warning>
  **The callback is the only programmatic source of delivery status for international traffic.**
  There is no status-lookup endpoint to poll as a fallback — the equivalent of
  [Message Status](/api-reference/omnichannel/message-status) exists for India but not here. If your
  endpoint is unreachable when a receipt is sent, recover the outcome from the portal reports rather
  than from an API.
</Warning>

## Related

* [Error codes](/api-reference/sms-international/error-codes)
* [Send SMS](/api-reference/sms-international/send-sms)
* [Callback configuration](/guides/platform/callback-configuration)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.