South Sudan SMS API Guide: Send SMS to +211 Numbers (MTN, Zain)
Complete guide to sending SMS in South Sudan. E.164 formatting, sender ID registration, MTN compliance, API integration with Twilio/Sinch/Plivo, and delivery best practices for +211 numbers.
Send SMS messages to South Sudan (+211) using SMS APIs from Twilio, Sinch, Plivo, and Bird (MessageBird). This comprehensive guide covers everything you need to integrate SMS services in South Sudan: E.164 phone number formatting, MTN and Zain compliance requirements, sender ID pre-registration (3-week approval), character encoding limits, time zone considerations (UTC+3), and technical implementation for the South Sudan telecommunications market.
What Is the SMS Market Like in South Sudan?
Locale name:
South Sudan
ISO code:
SS
Region
Middle East & Africa
Mobile country code (MCC)
659
Dialing Code
+211
Time zone
UTC+3 (East Africa Time)
Market Conditions: South Sudan's telecommunications market is dominated by three mobile operators: MTN South Sudan (59.7% market share with 3.3 million subscribers as of December 2024), Zain South Sudan, and Digitel Telecommunications. (Source: MTN South Sudan market data, verified January 2025)
Network Coverage & Penetration: As of early 2025, mobile penetration stands at 37.1% with 4.47 million cellular connections active – one of the lowest penetration rates in Africa. Network coverage is limited primarily to major towns, with 60.1% of the total population covered. (Source: DataReportal Digital 2025 South Sudan Report, verified March 2025) This makes SMS the most reliable business communication channel due to its universal reach across both urban and rural areas where internet and data services remain limited.
MTN-Specific Requirements: For the MTN network specifically, alphanumeric sender IDs require pre-registration and numeric international sender IDs are not supported – messages sent with numeric sender IDs will result in delivery failure. Avoid generic sender IDs like "InfoSMS," "INFO," "Verify," or "Notify" as these are blocked by MTN and other operators. (Source: Twilio South Sudan SMS Guidelines, verified January 2025)
What SMS Features Are Supported in South Sudan? (Two-Way, MMS, Concatenated SMS)
Two-way SMS
Two-way SMS (receiving replies) is not supported in South Sudan. You cannot receive inbound messages or process user responses to your outbound SMS campaigns.
Concatenated (Long) SMS
Concatenated SMS is not supported in South Sudan. Keep your messages under 160 characters (GSM-7 encoding) or 70 characters (Unicode) to ensure successful delivery. Messages exceeding these limits will be truncated or rejected.
Multimedia Messaging Service (MMS)
MMS is not supported in South Sudan. Send only text-based SMS messages. Attempts to send MMS will fail with error code 21408 (unrecognized message type).
How Do You Format South Sudan Phone Numbers?
E.164 Phone Number Format
Format South Sudan phone numbers according to the E.164 international standard:
Format:+211XXXXXXXXX (country code +211 followed by 9 digits)
Total length: 13 characters including the + symbol
Example:+211912345678
Always include the country code when you send SMS via API
Omit leading zeros in the local number when using E.164 format
Number portability is not available in South Sudan. Mobile numbers remain tied to their original carrier, which simplifies your message routing but limits consumer flexibility in changing providers.
Sending SMS to Landlines
You cannot send SMS to landline numbers in South Sudan. Attempts to send messages to landline numbers will result in failed delivery and an error response (400 error code 21614) from the API. These messages will not appear in your logs, and your account will not be charged for failed attempts.
Messages exceeding these limits are automatically split into multiple segments
Each segment counts as a separate SMS for billing purposes
Use GSM-7 encoding when possible to maximize your character limits
What Are the SMS Compliance Requirements in South Sudan? (Consent, Sender ID, Content)
User Consent
Obtain explicit consent before you send SMS messages to recipients in South Sudan. Implement a clear opt-in process where users actively agree to receive your messages. Document consent timestamps and methods for compliance verification.
Compliant Opt-In Examples:
Web form with checkbox: "I agree to receive SMS notifications from [Brand Name] at the number provided. Message frequency varies. Reply STOP to cancel."
Double opt-in: After initial signup, send a confirmation SMS: "Reply YES to confirm subscription to [Brand Name] alerts. Msg&Data rates may apply."
Point-of-sale consent: Document verbal consent with timestamp, customer number, and employee ID
Opt-Out Mechanism
Provide a clear, simple way for recipients to opt out of your SMS communications. Include opt-out instructions in your messages (e.g., "Reply STOP to unsubscribe"). Honor opt-out requests immediately and maintain a suppression list to prevent future messages to opted-out numbers.
Automated Opt-Out Implementation:
JavaScript
// Example suppression list managementconst suppressionList = newSet();
functionprocessInboundMessage(from, body) {
const normalizedBody = body.trim().toUpperCase();
if (['STOP', 'UNSUBSCRIBE', 'CANCEL', 'END', 'QUIT'].includes(normalizedBody)) {
suppressionList.add(from);
// Send confirmationsendSMS(from, "You have been unsubscribed. You will not receive further messages.");
// Persist to databasesaveToDatabase(from, 'opted_out', newDate());
}
}
functioncanSendTo(phoneNumber) {
return !suppressionList.has(phoneNumber);
}
Time Restrictions
Avoid sending promotional SMS during late night or early morning hours. Recommended sending hours are 9:00 AM to 8:00 PM local time (UTC+3). Adjust your sending schedules to respect recipient time zones and cultural norms.
Time Zone Sensitivity
South Sudan observes UTC+3 (East Africa Time – EAT) year-round with no Daylight Saving Time changes. (Source: Standard East Africa Time zone, verified January 2025)
How Do You Register a Sender ID in South Sudan?
You can use alphanumeric sender IDs in South Sudan, but you must pre-register them with local carriers. Alphanumeric sender IDs (e.g., "YourBrand") display as the message sender instead of a phone number, improving brand recognition and trust.
Registration Requirements:
Submit sender ID registration requests to your SMS provider
Provide business documentation and use case details
Allow 3 weeks for approval (MTN network specifically)
Use only approved sender IDs for your campaigns
Required Documentation:
Business registration certificate or incorporation documents
Sender name (3–11 alphanumeric characters, no spaces recommended)
Sample message content demonstrating intended use
Company website URL
Traffic type classification (transactional, informational, or marketing)
Sender IDs that impersonate government agencies or banks
Promotional content submitted for transactional sender IDs
Incomplete or unverified business documentation
Sender IDs containing special characters or spaces
Fallback Strategy: During the registration period or if registration fails, use an international long code as your sender ID. Note that numeric international sender IDs are not supported on the MTN network – messages will fail delivery. (Source: Twilio South Sudan SMS Guidelines, verified January 2025)
Content Restrictions
South Sudan restricts certain types of SMS content. Avoid sending:
Person-to-Person (P2P) messages: Use only Application-to-Person (A2P) messaging for business communications
Adult content: Prohibited under local regulations
Religious or political content: Subject to strict scrutiny and potential blocking
Misleading or fraudulent content: Results in immediate suspension
Violating content restrictions can result in message blocking, account suspension, or legal penalties. Review your message content carefully before you launch campaigns. (Source: Clickatell South Sudan SMS Regulations, verified January 2025)
How Much Does It Cost to Send SMS in South Sudan? (Twilio, Sinch, Plivo Pricing)
SMS pricing varies by provider and message volume. Contact providers directly for current rates and volume discounts.
Important: SMS pricing changes frequently. Always verify current rates with your chosen provider before you deploy production campaigns. Consider these factors:
Message volume commitments for discounts
Currency conversion rates
Additional fees for premium features
Sender ID registration costs (one-time or annual fees may apply)
How to Integrate SMS APIs for South Sudan (Twilio, Sinch, Plivo, MessageBird)
API Rate Limits & Throttling: Be aware of provider-specific rate limits to avoid throttling:
Twilio: 10 message segments per second (MPS) for international destinations; account-level concurrency limit applies (HTTP 429 errors when exceeded). Messages queue for up to 10 hours based on MPS rate. (Source: Twilio Rate Limits Guide, verified January 2025)
Sinch: Rate limits vary by service plan; messages queue in FIFO order per service plan. Check your plan documentation for specific MPS limits. (Source: Sinch SMS Rate Limits, verified January 2025)
Plivo: Default limit of 300 API requests per 5 seconds; outbound MPS limit of 5 for SMS by default (can be increased upon request). (Source: Plivo Account Limits, verified January 2025)
Testing Strategy: Before production deployment:
Use provider sandbox/test environments where available
Test with a small group of internal phone numbers first
Verify sender ID display on actual South Sudan mobile devices (MTN, Zain)
Test error handling with invalid numbers and unsupported formats
Monitor delivery rates and adjust retry logic as needed
Security Note: Never commit API credentials to version control. Add .env to your .gitignore file:
Bash
# Add to .gitignore
.env
.env.local
.env.*.local
Additional Security Best Practices:
Credential rotation: Rotate API keys every 90 days or immediately if compromised
IP whitelisting: Restrict API access to known server IP addresses where supported
Webhook signature verification: Validate delivery receipt webhooks using HMAC signatures
Least privilege access: Use separate API keys for development, staging, and production
Audit logging: Log all API requests with timestamps for security monitoring
Twilio
Twilio provides reliable SMS delivery to South Sudan through their REST API. Here's how to implement it:
Note: MessageBird rebranded to Bird in 2022. The messagebird npm package may be deprecated. Verify the current SDK at Bird.com or check the MessageBird npm package for the latest integration approach.
MessageBird provides SMS connectivity to South Sudan with detailed delivery reporting:
Use an SMS API like Twilio, Sinch, MessageBird, or Plivo. Ensure the recipient's number starts with +211, use a pre-registered alphanumeric sender ID, and keep the message content within standard SMS length limits.
The Mobile Country Code (MCC) for South Sudan is 659. This code is used in conjunction with the Mobile Network Code (MNC) to identify mobile network operators within the country.
South Sudan's telecommunications infrastructure primarily supports one-way A2P SMS. Businesses should design their messaging strategies around one-way communication, as recipients cannot reply to messages.
The best time to send SMS messages in South Sudan is between 8:00 AM and 8:00 PM local time (UTC+3). Avoid sending during major religious holidays and national observances.
No, short codes are not currently supported in South Sudan. Use international long codes for transactional messaging and two-factor authentication. Domestic long codes are not available.
South Sudan restricts content such as P2P traffic, adult content, religious content, political content, illegal activities, and gambling-related content. Content filtering is applied, especially by MTN.
Pre-registration is mandatory for alphanumeric sender IDs, especially for the MTN network. Generic sender IDs are discouraged and may be blocked. Consult the documentation for your chosen SMS API provider for registration details.
Concatenated (segmented) SMS is not supported. Keep messages within the standard SMS character limit (160 for GSM-7, 70 for UCS-2) to ensure successful delivery.
While South Sudan has no official Do Not Call registry, best practice is to honor and process opt-out requests immediately. Maintain your own suppression list and ensure opted-out numbers are not contacted again.
Both GSM-7 and UCS-2 encoding are supported. UCS-2 is particularly important for sending messages in local languages with extended character sets.
MMS is not directly supported. When sent, MMS messages are converted to SMS with an embedded URL link where recipients can view the multimedia content.
No, number portability is not available. Mobile numbers are tied to the original network operator.
Sending SMS to landlines is not possible and will result in delivery failure. APIs will typically return a 400 error response (code 21614) and you won't be charged.
Support both English and Arabic where possible. Consider local dialects, use appropriate date/time formats, and respect cultural sensitivities in message content.
Send SMS messages to South Sudan (+211) using SMS APIs from Twilio, Sinch, Plivo, and Bird (MessageBird). This comprehensive guide covers everything you need to integrate SMS services in South Sudan: E.164 phone number formatting, MTN and Zain compliance requirements, sender ID pre-registration (3-week approval), character encoding limits, time zone considerations (UTC+3), and technical implementation for the South Sudan telecommunications market.
What Is the SMS Market Like in South Sudan?
Market Conditions: South Sudan's telecommunications market is dominated by three mobile operators: MTN South Sudan (59.7% market share with 3.3 million subscribers as of December 2024), Zain South Sudan, and Digitel Telecommunications. (Source: MTN South Sudan market data, verified January 2025)
Network Coverage & Penetration: As of early 2025, mobile penetration stands at 37.1% with 4.47 million cellular connections active – one of the lowest penetration rates in Africa. Network coverage is limited primarily to major towns, with 60.1% of the total population covered. (Source: DataReportal Digital 2025 South Sudan Report, verified March 2025) This makes SMS the most reliable business communication channel due to its universal reach across both urban and rural areas where internet and data services remain limited.
MTN-Specific Requirements: For the MTN network specifically, alphanumeric sender IDs require pre-registration and numeric international sender IDs are not supported – messages sent with numeric sender IDs will result in delivery failure. Avoid generic sender IDs like "InfoSMS," "INFO," "Verify," or "Notify" as these are blocked by MTN and other operators. (Source: Twilio South Sudan SMS Guidelines, verified January 2025)
What SMS Features Are Supported in South Sudan? (Two-Way, MMS, Concatenated SMS)
Two-way SMS
Two-way SMS (receiving replies) is not supported in South Sudan. You cannot receive inbound messages or process user responses to your outbound SMS campaigns.
Concatenated (Long) SMS
Concatenated SMS is not supported in South Sudan. Keep your messages under 160 characters (GSM-7 encoding) or 70 characters (Unicode) to ensure successful delivery. Messages exceeding these limits will be truncated or rejected.
Multimedia Messaging Service (MMS)
MMS is not supported in South Sudan. Send only text-based SMS messages. Attempts to send MMS will fail with error code 21408 (unrecognized message type).
How Do You Format South Sudan Phone Numbers?
E.164 Phone Number Format
Format South Sudan phone numbers according to the E.164 international standard:
+211XXXXXXXXX(country code +211 followed by 9 digits)+211912345678Note: South Sudan uses Mobile Country Code (MCC) 659. (Source: ITU-T E.164 standard, verified January 2025)
Number Portability
Number portability is not available in South Sudan. Mobile numbers remain tied to their original carrier, which simplifies your message routing but limits consumer flexibility in changing providers.
Sending SMS to Landlines
You cannot send SMS to landline numbers in South Sudan. Attempts to send messages to landline numbers will result in failed delivery and an error response (400 error code 21614) from the API. These messages will not appear in your logs, and your account will not be charged for failed attempts.
Character Encoding and Message Length
Character Encoding Limits:
What Are the SMS Compliance Requirements in South Sudan? (Consent, Sender ID, Content)
User Consent
Obtain explicit consent before you send SMS messages to recipients in South Sudan. Implement a clear opt-in process where users actively agree to receive your messages. Document consent timestamps and methods for compliance verification.
Compliant Opt-In Examples:
Opt-Out Mechanism
Provide a clear, simple way for recipients to opt out of your SMS communications. Include opt-out instructions in your messages (e.g., "Reply STOP to unsubscribe"). Honor opt-out requests immediately and maintain a suppression list to prevent future messages to opted-out numbers.
Automated Opt-Out Implementation:
// Example suppression list management const suppressionList = new Set(); function processInboundMessage(from, body) { const normalizedBody = body.trim().toUpperCase(); if (['STOP', 'UNSUBSCRIBE', 'CANCEL', 'END', 'QUIT'].includes(normalizedBody)) { suppressionList.add(from); // Send confirmation sendSMS(from, "You have been unsubscribed. You will not receive further messages."); // Persist to database saveToDatabase(from, 'opted_out', new Date()); } } function canSendTo(phoneNumber) { return !suppressionList.has(phoneNumber); }Time Restrictions
Avoid sending promotional SMS during late night or early morning hours. Recommended sending hours are 9:00 AM to 8:00 PM local time (UTC+3). Adjust your sending schedules to respect recipient time zones and cultural norms.
Time Zone Sensitivity
South Sudan observes UTC+3 (East Africa Time – EAT) year-round with no Daylight Saving Time changes. (Source: Standard East Africa Time zone, verified January 2025)
How Do You Register a Sender ID in South Sudan?
You can use alphanumeric sender IDs in South Sudan, but you must pre-register them with local carriers. Alphanumeric sender IDs (e.g., "YourBrand") display as the message sender instead of a phone number, improving brand recognition and trust.
Registration Requirements:
Required Documentation:
Common Rejection Reasons:
Fallback Strategy: During the registration period or if registration fails, use an international long code as your sender ID. Note that numeric international sender IDs are not supported on the MTN network – messages will fail delivery. (Source: Twilio South Sudan SMS Guidelines, verified January 2025)
Content Restrictions
South Sudan restricts certain types of SMS content. Avoid sending:
Violating content restrictions can result in message blocking, account suspension, or legal penalties. Review your message content carefully before you launch campaigns. (Source: Clickatell South Sudan SMS Regulations, verified January 2025)
How Much Does It Cost to Send SMS in South Sudan? (Twilio, Sinch, Plivo Pricing)
SMS pricing varies by provider and message volume. Contact providers directly for current rates and volume discounts.
Important: SMS pricing changes frequently. Always verify current rates with your chosen provider before you deploy production campaigns. Consider these factors:
How to Integrate SMS APIs for South Sudan (Twilio, Sinch, Plivo, MessageBird)
API Rate Limits & Throttling: Be aware of provider-specific rate limits to avoid throttling:
Testing Strategy: Before production deployment:
Security Note: Never commit API credentials to version control. Add
.envto your.gitignorefile:# Add to .gitignore .env .env.local .env.*.localAdditional Security Best Practices:
Twilio
Twilio provides reliable SMS delivery to South Sudan through their REST API. Here's how to implement it:
const twilio = require('twilio'); const accountSid = process.env.TWILIO_ACCOUNT_SID; const authToken = process.env.TWILIO_AUTH_TOKEN; const client = twilio(accountSid, authToken); client.messages .create({ body: "Your message here", from: "YourBrand", // Pre-registered alphanumeric sender ID to: "+211912345678", // South Sudan number in E.164 format statusCallback: "https://yourserver.com/sms/status" // Delivery receipt webhook }) .then(message => { console.log(`Message sent: ${message.sid}`); console.log(`Status: ${message.status}`); // queued, sent, delivered, failed }) .catch(error => console.error("Error:", error));Twilio Message Status Codes:
queued: Message accepted and queued for deliverysending: Message is being sent to carriersent: Message sent to carrier (not yet delivered to device)delivered: Message successfully delivered to recipient deviceundelivered: Message failed to deliver (check error code)failed: Message rejected (invalid number, unsupported format, or blocked content)Webhook Implementation for Delivery Receipts:
const express = require('express'); const app = express(); app.post('/sms/status', express.urlencoded({ extended: false }), (req, res) => { const { MessageSid, MessageStatus, ErrorCode } = req.body; console.log(`Message ${MessageSid} status: ${MessageStatus}`); if (MessageStatus === 'failed' || MessageStatus === 'undelivered') { console.error(`Delivery failed. Error code: ${ErrorCode}`); // Handle failure: retry, alert, or update database } res.status(200).send('OK'); });Sinch
Sinch offers SMS connectivity to South Sudan with detailed delivery analytics:
const { SinchClient } = require('@sinch/sdk-core'); const { Sms } = require('@sinch/sdk-sms'); const client = new SinchClient({ projectId: process.env.SINCH_PROJECT_ID, keyId: process.env.SINCH_KEY_ID, keySecret: process.env.SINCH_KEY_SECRET, }); const smsService = client.sms(); smsService.batches.send({ to: ["+211912345678"], // South Sudan number in E.164 format from: "YourBrand", // Pre-registered sender ID body: "Your message here", delivery_report: "per_recipient" // Request delivery reports }) .then(response => console.log("Message sent:", response)) .catch(error => console.error("Error:", error));MessageBird
Note: MessageBird rebranded to Bird in 2022. The
messagebirdnpm package may be deprecated. Verify the current SDK at Bird.com or check the MessageBird npm package for the latest integration approach.MessageBird provides SMS connectivity to South Sudan with detailed delivery reporting:
const messagebird = require('messagebird'); const client = messagebird(process.env.MESSAGEBIRD_ACCESS_KEY); client.messages.create({ originator: "YourBrand", // Pre-registered sender ID recipients: ["+211912345678"], // South Sudan number in E.164 format body: "Your message here" }, (err, response) => { if (err) { console.error("Error:", err); } else { console.log("Message sent:", response); } });Plivo
Plivo delivers SMS to South Sudan with comprehensive API features:
const plivo = require('plivo'); const client = new plivo.Client( process.env.PLIVO_AUTH_ID, process.env.PLIVO_AUTH_TOKEN ); client.messages.create( "YourBrand", // Pre-registered sender ID "+211912345678", // South Sudan number in E.164 format "Your message here" ) .then(response => console.log("Message sent:", response)) .catch(error => console.error("Error:", error));What Are the Best Practices for Sending SMS in South Sudan? (Delivery, Timing, Content)
Message Content
Delivery Optimization
Retry Logic with Exponential Backoff:
async function sendWithRetry(to, body, maxRetries = 3) { let delay = 1000; // Start with 1 second delay for (let attempt = 1; attempt <= maxRetries; attempt++) { try { const message = await client.messages.create({ body: body, from: "YourBrand", to: to }); console.log(`Message sent successfully: ${message.sid}`); return message; } catch (error) { if (attempt === maxRetries) { console.error(`Failed after ${maxRetries} attempts:`, error); throw error; } // Retry on temporary errors (rate limits, network issues) if (error.code === 20429 || error.status >= 500) { console.log(`Attempt ${attempt} failed. Retrying in ${delay}ms…`); await new Promise(resolve => setTimeout(resolve, delay)); delay *= 2; // Exponential backoff: 1s, 2s, 4s } else { // Don't retry permanent errors (invalid number, blocked content) throw error; } } } }Message Queuing for High-Volume Sending:
const Bull = require('bull'); const smsQueue = new Bull('sms-queue', { redis: { host: 'localhost', port: 6379 } }); // Add messages to queue smsQueue.add({ to: '+211912345678', body: 'Your message' }, { attempts: 3, backoff: { type: 'exponential', delay: 2000 } }); // Process queue with rate limiting smsQueue.process(5, async (job) => { // Process 5 messages concurrently const { to, body } = job.data; return await client.messages.create({ to, body, from: 'YourBrand' }); });Error Handling
Implement robust error handling in your application:
client.messages.create({ body: "Your message here", from: "YourBrand", to: "+211912345678" }) .then(message => { console.log(`Success: ${message.sid}`); // Log success metrics }) .catch(error => { // Twilio/Plivo error codes if (error.code === 21614) { console.error("Invalid recipient number (landline or incorrect format)"); } else if (error.code === 21408) { console.error("Message type not supported (MMS not available)"); } else if (error.code === 21610) { console.error("Message blocked: unregistered sender ID or prohibited content"); } else if (error.code === 20429) { console.error("Rate limit exceeded: implement backoff and retry"); } else if (error.code === 21211) { console.error("Invalid \"To\" phone number: verify E.164 format"); } else if (error.code === 21212) { console.error("Invalid \"From\" sender ID: verify pre-registration status"); } else { console.error("Delivery failed:", error.message, "Code:", error.code); } });Common Error Codes & Troubleshooting:
Monitoring and Analytics
Track these key metrics for your SMS campaigns:
Acceptable Benchmarks:
Implementation Example for Tracking Metrics:
const metrics = { sent: 0, delivered: 0, failed: 0, optedOut: 0 }; async function sendAndTrack(to, body) { try { const message = await client.messages.create({ to, body, from: "YourBrand" }); metrics.sent++; // Track delivery via webhook or polling setTimeout(async () => { const status = await client.messages(message.sid).fetch(); if (status.status === 'delivered') { metrics.delivered++; } else if (status.status === 'failed' || status.status === 'undelivered') { metrics.failed++; } }, 60000); // Check after 1 minute return message; } catch (error) { metrics.failed++; throw error; } } // Generate report function getMetrics() { const deliveryRate = (metrics.delivered / metrics.sent * 100).toFixed(2); const failureRate = (metrics.failed / metrics.sent * 100).toFixed(2); console.log(`Delivery Rate: ${deliveryRate}% | Failure Rate: ${failureRate}%`); }Regulatory Compliance
How Do You Troubleshoot Common SMS Issues in South Sudan?
Issue: Messages not delivering to MTN network
Symptoms: Messages return "failed" or "undelivered" status specifically for MTN numbers
Solutions:
+211XXXXXXXXXIssue: High rate of error code 20429 (rate limit exceeded)
Symptoms: Multiple messages failing with "Too Many Requests" errors
Solutions:
Issue: Sender ID not displaying as expected
Symptoms: Recipients see different sender ID than what was sent
Solutions:
Issue: Messages truncated or split unexpectedly
Symptoms: Recipients receive partial messages or multiple SMS segments
Solutions:
Next Steps
1. Technical Implementation
2. Compliance
3. Operations
Additional Resources
Technical Standards:
South Sudan Carriers:
Provider Guidelines:
Related SMS Guides: