# Message Delivery Errors

<table data-full-width="true"><thead><tr><th>Error Type</th><th width="336">Error Code</th><th width="235">Worth Retrying</th><th>Test number for simulated error in Postman Test environment only**</th></tr></thead><tbody><tr><td><code>delivery_error</code></td><td><code>recipient_invalid</code></td><td>No</td><td>65 1111 1111</td></tr><tr><td></td><td><code>recipient_unavailable</code></td><td>Yes</td><td>65 1111 2222</td></tr><tr><td></td><td><code>content_invalid</code></td><td>No</td><td>65 1111 3333</td></tr><tr><td></td><td><code>routing_error</code></td><td>Maybe*</td><td>65 1111 4444</td></tr><tr><td></td><td><code>message_expired</code></td><td>Maybe*</td><td>65 1111 5555</td></tr><tr><td></td><td><code>delivery_unknown_error</code></td><td>Maybe*</td><td>65 1111 9999</td></tr><tr><td><code>server_error</code></td><td><code>server_unknown_error</code></td><td>Maybe*</td><td>65 2222 2222</td></tr></tbody></table>

{% hint style="info" %}
**Important information**\
\*Not all messages are suitable for retries, especially OTPs, as the recipient's next steps will be to request for another OTP.&#x20;

\*\*The test numbers are only available in the [Postman test environment](https://test.postman.gov.sg/login), as they are used to simulate different error messages. **Do not use test numbers in the Postman production environment.**&#x20;
{% endhint %}

## Detailed explanation of error codes for specific troubleshooting steps

### `recipient_invalid` error code

***

The recipient’s mobile number is not recognised by the network operator and cannot receive your SMS.

#### Common causes for **`recipient_invalid`:**&#x20;

1. **Deactivated or invalid number**&#x20;

   The recipient’s number might have been deactivated or is no longer in use.
2. **Incorrect number format**

   The mobile number may be incorrectly formatted when entering the number (e.g. wrong country code, missing digits).

#### <mark style="color:blue;">Steps to troubleshoot:</mark>

1. <mark style="color:blue;">Verify the mobile number.</mark>
2. <mark style="color:blue;">Ensure your database is kept up to date by regularly validating the mobile numbers.</mark>

### `recipient_unavailable` error code

***

The recipient’s device is not currently connected to the mobile network.&#x20;

#### Common causes for **`recipient_unavailable`:**&#x20;

1. **Out of network coverage**&#x20;

   The recipient might be in an area with poor or no mobile network coverage, or there may be an ongoing issue with the telco operator.&#x20;
2. **SIM card issue**

   The recipient’s SIM card may be malfunctioning or damaged, causing the device to fail to connect to the network.
3. **Device issue**

   There might be a technical issue with the handset, preventing it from connecting to the network.

#### <mark style="color:blue;">Steps to troubleshoot:</mark>

1. <mark style="color:blue;">Attempt to resend the message after some time.</mark>&#x20;
2. <mark style="color:blue;">Instruct the recipient to check if their SIM card is functioning properly. They can try inserting the SIM or testing it in another device to rule out SIM issues.</mark>&#x20;
3. <mark style="color:blue;">Ask the recipient to restart their device. If the problem persists, the recipient may need to reset their network settings, or consult their mobile operator for troubleshooting.</mark>

### `content_invalid` error code

***

There is an issue with the message content, such as prohibited content or incorrect encoding.

#### Common causes for `content_invalid`:

1. **Prohibited or sensitive content**

   The message contains inappropriate keywords or phrases that are banned by the service provider.
2. **Special characters or unsupported encoding**&#x20;

   Certain characters or symbols in the message (e.g., non-GSM characters, emojis) are not supported by the declared message encoding.&#x20;

#### <mark style="color:blue;">Steps to troubleshoot:</mark>

1. <mark style="color:blue;">Recreate a new campaign after modifying your content. You can refer</mark> [<mark style="color:blue;">here</mark>](https://postman-v2.guides.gov.sg/postman-v2-general-user-guide-mop/create-campaign/message-content#unsupported-characters) <mark style="color:blue;">for the list of characters which Postman</mark> <mark style="color:blue;"></mark><mark style="color:blue;">**does not support**</mark><mark style="color:blue;">.</mark>&#x20;
2. <mark style="color:blue;">Identify non-GSM characters using</mark> [<mark style="color:blue;">Postman's message segment calculator</mark>](https://message-segment-calculator.postman.gov.sg/) <mark style="color:blue;">tool.</mark>&#x20;

### `routing_error` error code

***

There is a failure in routing the messages to the recipient’s mobile network.&#x20;

#### Common causes for `routing_error`:

1. **Mobile number is not released by the regulator**

   The mobile number is not approved for messaging by the country's telecom regulator.
2. **Networking routing configuration issue**

   There is an issue with the mobile operator's routing infrastructure.

#### <mark style="color:blue;">Steps to troubleshoot:</mark>

1. <mark style="color:blue;">Confirm the mobile number is active and valid in the recipient's country.</mark>

### `message_expired` error code&#x20;

***

When a message from Postman is not delivered to the recipient handset within the 48-hour timeframe set by the SMS aggregators. This means that although the message was dispatched, it was not successfully delivered within the expected period, and its delivery status remains unknown.

#### Common cause for `message_expired`:

1. **Delivery time frame exceeded**

   Due to network delays, temporary issues with the aggregator's infrastructure may have caused delays in the message delivery.&#x20;

#### <mark style="color:blue;">Steps to troubleshoot:</mark>

1. <mark style="color:blue;">It is unknown if the recipient has successfully received the message. You can consider resending critical messages.</mark>&#x20;

### `delivery_unknown_error` error code

***

The exact cause of the failure is not identifiable due to unknown configurations or issues on the recipient’s end. This means that while the message was sent successfully from Postman, the system cannot determine why it was not delivered.

#### Common causes for `delivery_unknown_error`:

1. **Recipient's device configuration**&#x20;

   Unknown settings or configuration (e.g., third party mobile application, expired prepaid card) on the recipient's devices could affect the message delivery.&#x20;
2. **International restrictions**

   Certain countries or regions may have restrictions on SMS delivery to specific number ranges, or certain carries may block messages from external providers.&#x20;

#### <mark style="color:blue;">Steps to troubleshoot:</mark>

1. <mark style="color:blue;">Contact the recipient to confirm if their device is active, properly configured, and connected to the network. If the problem persists, the recipient may need to reset their network settings, or consult their mobile operator for</mark> [<mark style="color:blue;">troubleshooting</mark>](https://file.go.gov.sg/guide-to-troubleshooting.pdf)<mark style="color:blue;">.</mark>&#x20;
2. <mark style="color:blue;">For</mark> <mark style="color:blue;"></mark><mark style="color:blue;">**international restrictions issue**</mark><mark style="color:blue;">, raise it to <btn-ops@open.gov.sg> and provide us with the</mark> <mark style="color:blue;"></mark><mark style="color:blue;">`message_ID`</mark> <mark style="color:blue;"></mark><mark style="color:blue;">of the affected messages.</mark>&#x20;

### `server_unknown_error` error code

***

This occurs when there is an internal error, typically due to an unknown issue with either Postman or the aggregator's server.

#### Common cause for `server_unknown_error`:&#x20;

1. **Temporary server outages**&#x20;

   One of the servers may experience temporary connectivity issues

#### <mark style="color:blue;">Steps to troubleshoot:</mark>

1. <mark style="color:blue;">For server issues, raise it to <btn-ops@open.gov.sg> immediately and provide us with the</mark> <mark style="color:blue;"></mark><mark style="color:blue;">`message_ID`</mark> <mark style="color:blue;"></mark><mark style="color:blue;">of the affected messages.</mark>
2. <mark style="color:blue;">Once we have fixed the issue with the server, you may resend the message after some time.</mark>&#x20;


---

# 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://postman-v2.guides.gov.sg/general-notes-for-api-users/message-delivery-errors.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.
