# SMPP Message PDU

## Supported PDU&#x20;

* bind\_transmitter
* bind\_receiver
* bind\_transceiver
* unbind
* submit\_sm
* deliver\_sm
* enquire\_link

{% hint style="info" %}
You can bind as a transmitter, receiver or a transceiver. However, if you want to receive delivery reports, you must bind as a **transceiver** or a **receiver**.
{% endhint %}

## Command Status

We use SMPP command status as per the SMPP v 3.4 standard. Below are some of the HollaTags's specific command\_status response codes:

| **command\_status** | Description                                                                                                   |
| ------------------- | ------------------------------------------------------------------------------------------------------------- |
| 0x00000400          | Message Not Routeable                                                                                         |
| 0x00000401          | Out of Credit                                                                                                 |
| 0x00000402          | Maximum Credit Exceeded                                                                                       |
| 0x00000403          | Account Frozen                                                                                                |
| 0x00000404          | Bad Data                                                                                                      |
| 0x00000405          | ESME Client Error                                                                                             |
| 0x0000040a          | Subscriber on DND or Restricted SenderID                                                                      |
| 0x00000430          | Invalid Payload Length. Used to Limit Short\_message and Message\_payload to GSM PDU Length.                  |
| 0x00000431          | Internal Error                                                                                                |
| 0x00000432          | Restricted PDU. Means Message Denied in SPAM Filter                                                           |
| 0x00000433          | DCS Inconsistency. Which Means the the Data\_coding Value Does not Seem to Match the Encoding in the Payload. |
| 0x000004ff          | Internal Error                                                                                                |
| 0x00000045          | Subscriber on DND                                                                                             |
| 0x00000058          | Throughput Exceeded                                                                                           |

## Delivery Report Format

The short\_message field will contain the contents relevant information on the delivery status of your message for DLR and contents of the messaage for MO.

The format is as below:

```python
id:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} sub:{NNN} dlvrd:{NNN} submit date:{YYMMDDHHMMSS} done date:{YYMMDDHHMMSS} stat:{STATUS} err:{NNN} text:{NONE}
```

An example below:

```python
id:187b876a-ee61-44d8-9086-40631a25fce6 sub:001 dlvrd:001 submit date:200506111011 done date:200507121720 stat:DELIVRD err:000 text: Hello world
```

Below is the description of each field&#x20;

* **id** - the unique message ID allocated to the message, this will be hexadecimal in most case except if otherwise required by the upsream MNO.
* **sub** - the number of short messages originally submitted
* **dlvrd** - the number of short messages delivered
* **submit date** - the date and time at which the short message was submitted in YYMMDDHHMMSS
* **done date** - the date and time at which the short message reached its final state in YYMMDDHHMMSS
* **stat** - the final status of the message
* **err** - SMPP DLR error code.
* **text** - none

## Delivery Status

* DELIVRD&#x20;
* UNDELIV&#x20;
* EXPIRED&#x20;
* ACCEPTD&#x20;
* UNKNOWN&#x20;
* ENROUTE&#x20;
* REJECTD


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hollatags.com/smpp/message-pdu.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
