---
updatedAt: 2025-08-26T19:58:40.000Z
agentTools:
  projectIndex: https://developer-aggregation.vibes.com/llms.txt
---

# Send & Receive Messages

# Sending a Message

To send a message with SMPP, you’ll use the `submit_sm` operation, which will submit an SMS to the <Glossary>SMSC</Glossary> to be send to the destination. Note that Vibes only supports messages up to 900 characters. Messages over 900 characters may be truncated.

<Callout icon="📘" theme="info">
  The `submit_sm` protocol does not support the transaction message mode.
</Callout>

## TON/NPI & Other Settings

TON and NPI values may change from aggregator to aggregator, so we’ve created the below table to help you properly set the TON and NPI values on your message sends.

<Table align={["left","left"]}>
  <thead>
    <tr>
      <th>

      </th>

      <th>

      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        Source TON
      </td>

      <td>
        0 - for messages sent via Shortcode or Longcode
        5 - for messages sent via Alphanumeric Code (non-US)
      </td>
    </tr>

    <tr>
      <td>
        Source NPI
      </td>

      <td>
        Always 0
      </td>
    </tr>

    <tr>
      <td>
        Destination TON
      </td>

      <td>
        Always 0 - Non-US/Canada <Glossary>MDN</Glossary>s must be sent in <Glossary>E.164</Glossary> format.
      </td>
    </tr>

    <tr>
      <td>
        Destination NPI
      </td>

      <td>
        Always 0
      </td>
    </tr>

    <tr>
      <td>
        System Type
      </td>

      <td>
        Not used - Leave blank.
      </td>
    </tr>

    <tr>
      <td>
        Service Type
      </td>

      <td>
        Not used - Leave blank.
      </td>
    </tr>

    <tr>
      <td>
        Validity Period
      </td>

      <td>
        Not used - Leave blank.
      </td>
    </tr>
  </tbody>
</Table>

<br />

For more on the required message settings, please see [Encoding & Message Settings](https://developer-aggregation.vibes.com/reference/encoding-message-settings).

For optional [Optional Vibes TLVs](https://developer-aggregation.vibes.com/reference/optional-vibes-tlvs).

# Receiving a message

The `deliver_sm` operation is sent by the SMSC to your <Glossary>ESME</Glossary>, which your ESME can then route for delivery, if applicable.

In addition to sending messages, the SMSC uses the` deliver_sm` operation to transfer the following types of short messages to the ESME:

* **SMSC Delivery Receipt**: A delivery receipt relating to a message which had been previously submitted with the `submit_sm` operation. This will only be sent if the ESME had requested a delivery receipt via the `registered_delivery` parameter. The delivery receipt data relating to the original short message will be included in the `short_message `field of the `deliver_sm`.
* **SME Delivery Acknowledgement**: The user data of the SME delivery acknowledgement is included in the `short_message` field of the `deliver_sm`.
* **SME Manual/User Acknowledgement**: The user data of the SME delivery acknowledgement is included in the `short_message` field of the `deliver_sm`.
* **Intermediate Notification**: The user data of the SME delivery acknowledgement is included in the `short_message` field of the` deliver_sm`.

<br />