A technical guide to SMS in Bangladesh, covering compliance, features, and delivery. Learn about sender ID registration (3-week approval for some), GSM-7 (160 chars) vs UCS-2 encoding, and two-way SMS limitations. Includes API integration examples (Twilio, Sinch) and BTRC guidelines.
Market Conditions: Bangladesh has a vibrant mobile communications market with over 180 million mobile subscribers. The major mobile operators include Grameenphone (market leader), Robi, Banglalink, and Teletalk. While OTT messaging apps like WhatsApp and Facebook Messenger are popular in urban areas, SMS remains crucial for business communications, authentication, and reaching rural populations. Android devices dominate the market with over 95% market share, while iOS devices represent less than 5% of mobile users.
Key SMS Features and Capabilities in Bangladesh
Bangladesh supports basic SMS functionality with some limitations on two-way messaging and specific requirements for sender ID registration, particularly for major operators like Robi, Teletalk, and Grameenphone.
Two-way SMS Support
Two-way SMS is not supported in Bangladesh. Recipients cannot reply to messages sent through standard SMS APIs and platforms.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenated messaging is supported, though availability may vary by sender ID type. Message length rules: Standard 160 characters for GSM-7 encoding before splitting occurs. Messages using UCS-2 encoding are limited to 70 characters before concatenation. Encoding considerations: Both GSM-7 and UCS-2 encodings are supported. UCS-2 is required for Bangla text and special characters.
MMS Support
MMS is not directly supported in Bangladesh. When MMS messages are sent, they are automatically converted to SMS messages containing a URL link to view the multimedia content. This ensures compatibility while still allowing rich media sharing.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Bangladesh, allowing users to keep their phone numbers when switching between mobile operators. This feature does not significantly impact SMS delivery or routing as messages are properly directed to the current carrier.
Sending SMS to Landlines
Sending SMS to landline numbers is not possible in Bangladesh. Attempts to send messages to landline numbers will result in a 400 response error (code 21614) from SMS APIs, and the message will not be delivered or charged to the sender's account.
Compliance and Regulatory Guidelines for SMS in Bangladesh
The Bangladesh Telecommunication Regulatory Commission (BTRC) oversees SMS communications and enforces regulations for marketing messages. All A2P SMS providers must be licensed by BTRC, and promotional content must receive approval before distribution. The Digital Security Act 2018 also applies to SMS communications, particularly regarding data privacy and security.
Consent and Opt-In
Explicit Consent Requirements:
Written or digital confirmation required before sending marketing messages
Maintain detailed records of opt-in dates, sources, and methods
Double opt-in recommended for marketing campaigns
Clear disclosure of message frequency and purpose at signup
Best Practices for Documentation:
Store consent records for at least 2 years
Include timestamp and source of consent
Maintain audit trail of consent changes
Regular validation of consent database
HELP/STOP and Other Commands
All SMS campaigns must support standard opt-out keywords: STOP, UNSUBSCRIBE, CANCEL
HELP command must provide customer support information
Keywords must work in both English and Bangla
Response to STOP/HELP commands must be immediate and free of charge
Common Bangla keywords must also be supported: "????????????" (stop), "?????????????????????" (help)
Do Not Call / Do Not Disturb Registries
Bangladesh maintains a National Do Not Call Registry (NDNC) managed by BTRC.
Regular checks against NDNC database required
Maintain internal suppression lists
Update opt-out lists across all campaigns within 24 hours
Implement automated filtering system for NDNC numbers
Quarterly audit of compliance recommended
Time Zone Sensitivity
Bangladesh follows GMT+6 timezone (BST).
Restrict marketing messages to 9 AM - 9 PM BST
Emergency and transactional messages allowed 24/7
Respect religious and national holidays
Avoid sending during prayer times
Consider Ramadan timing adjustments
Phone Numbers Options and SMS Sender Types for Bangladesh
Alphanumeric Sender ID
Operator network capability: Supported by all major operators Registration requirements:
Pre-registration required for Robi, Teletalk, and Grameenphone
3-week approval process
Business documentation required
Dynamic usage supported after registration
Sender ID preservation: Yes, registered IDs are preserved across networks
Long Codes
Domestic vs. International:
Domestic long codes not supported
International long codes blocked on Robi, Teletalk, and Grameenphone
Sender ID preservation: No, international long codes may be modified
Provisioning time: N/A
Use cases: Not recommended for Bangladesh market
Short Codes
Support: Not currently supported in Bangladesh
Provisioning time: N/A
Use cases: N/A
Restricted SMS Content, Industries, and Use Cases
Restricted Industries:
Gambling and betting
Adult content
Unauthorized financial services
Political messaging without approval
Cryptocurrency promotion
Regulated Industries:
Banking (requires BTRC approval)
Insurance (needs regulatory clearance)
Healthcare (patient privacy rules apply)
Education (must follow ministry guidelines)
Content Filtering
Carrier Filtering Rules:
Keywords related to restricted industries
Links from unauthorized domains
Excessive punctuation or capitalization
Multiple consecutive spaces
Suspected spam patterns
Best Practices to Avoid Blocking:
Use registered sender IDs
Avoid URL shorteners
Maintain consistent sending patterns
Keep message format professional
Use approved templates for regulated industries
Best Practices for Sending SMS in Bangladesh
Messaging Strategy
Limit messages to 160 characters when possible
Include clear call-to-action
Personalize using recipient's name
Maintain consistent sender ID
Use templates for common messages
Sending Frequency and Timing
Maximum 3 marketing messages per week per user
Respect religious prayer times
Avoid late night/early morning sends
Plan around Ramadan schedules
Consider Friday as weekly holiday
Localization
Bangla required for promotional messages
English allowed for transactional/OTP
Use proper Bangla font encoding
Consider regional language variations
Test Bangla character rendering
Opt-Out Management
Process opt-outs within 24 hours
Confirm opt-out with acknowledgment
Maintain centralized opt-out database
Regular audit of opt-out lists
Train support staff on opt-out handling
Testing and Monitoring
Test across all major carriers
Monitor delivery rates by operator
Track opt-out rates
Analyze engagement patterns
Regular content compliance checks
SMS API integrations for Bangladesh
Twilio
Twilio provides a robust SMS API with specific support for Bangladesh's requirements. Authentication uses account SID and auth token, with mandatory sender ID registration for major carriers.
TypeScript
import { Twilio } from'twilio';
// Initialize Twilio client with credentialsconst client = newTwilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);
// Function to send SMS to BangladeshasyncfunctionsendSmsToBangladesh(to: string,
message: string,
senderId: string): Promise<void> {
try {
// Ensure proper number formatting for Bangladeshconst formattedNumber = to.startsWith('+880') ? to : `+880${to}`;
const response = await client.messages.create({
body: message,
from: senderId, // Must be pre-registered for Robi, Teletalk, Grameenphoneto: formattedNumber,
// Optional parameters for delivery trackingstatusCallback: 'https://your-webhook.com/status'
});
console.log(`Message sent successfully. SID: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch offers comprehensive SMS capabilities for Bangladesh with support for both transactional and promotional messages.
TypeScript
import { SinchClient } from'@sinch/sdk';
// Initialize Sinch clientconst sinchClient = newSinchClient({
servicePlanId: process.env.SINCH_SERVICE_PLAN_ID,
apiToken: process.env.SINCH_API_TOKEN,
region: 'asia'// Specify Asia region for better latency
});
// Function to send batch SMSasyncfunctionsendBatchSms(recipients: string[],
message: string,
senderId: string): Promise<void> {
try {
const response = await sinchClient.sms.batches.create({
from: senderId,
to: recipients.map(num => num.startsWith('+880') ? num : `+880${num}`),
body: message,
delivery_report: 'summary',
// Support for Bangla charactersencoding: 'UCS2'
});
console.log(`Batch ID: ${response.id}`);
} catch (error) {
console.error('Batch sending failed:', error);
throw error;
}
}
MessageBird
MessageBird provides reliable SMS delivery in Bangladesh with support for local language content.
Use a registered alphanumeric sender ID with an SMS API like Twilio, Sinch, MessageBird, or Plivo. Ensure the recipient number starts with +880 and the content complies with BTRC regulations. Pre-registering your sender ID with major operators like Robi, Teletalk, and Grameenphone is essential.
Bangladesh has over 180 million mobile subscribers. While OTT apps are popular, SMS remains vital, especially for reaching rural areas. Android dominates the market, with iOS holding less than 5% share.
Standard SMS APIs and platforms in Bangladesh do not support two-way messaging. Recipients cannot reply to messages sent via these methods.
Send marketing messages between 9 AM and 9 PM BST, considering religious holidays and Ramadan. Avoid sending during prayer times and respect the weekly holiday on Friday.
No, short codes are not currently supported in Bangladesh. Alphanumeric sender IDs are the preferred option and require registration with major operators.
Registration is required for alphanumeric sender IDs, especially with Robi, Teletalk, and Grameenphone. It involves a 3-week approval process and requires submitting business documentation to the respective operators.
GSM-7 encoding allows 160 characters before splitting, while UCS-2 allows 70 characters. UCS-2 is required for Bangla text and special characters.
Process opt-out requests (STOP, UNSUBSCRIBE, CANCEL, and Bangla equivalents) within 24 hours and send a confirmation. Maintain a centralized opt-out database and regularly audit it.
Gambling, adult content, unauthorized financial services, and political messaging without approval are prohibited. Regulated industries like banking and healthcare have specific content rules.
Use registered sender IDs, personalize messages, limit frequency to 3 per week per user, localize content in Bangla, and respect local time zones and cultural sensitivities.
Initialize the Twilio client with your credentials. Format the recipient number with +880, use a pre-registered sender ID, and utilize the client's messages.create method to send the message.
MMS is not directly supported. They are converted to SMS messages containing a URL to view the multimedia content.
No, sending SMS to landlines in Bangladesh is not possible and will result in a 400 response error (code 21614) from SMS APIs.
The Bangladesh Telecommunication Regulatory Commission (BTRC) oversees SMS communications, enforces regulations, licenses A2P SMS providers, and requires approval for promotional content.
Rate limits vary by provider: Twilio (100/second), Sinch (50/second), MessageBird (75/second), and Plivo (30/second). Use batch APIs and queueing to manage throughput.
Bangladesh SMS Market Overview
Market Conditions: Bangladesh has a vibrant mobile communications market with over 180 million mobile subscribers. The major mobile operators include Grameenphone (market leader), Robi, Banglalink, and Teletalk. While OTT messaging apps like WhatsApp and Facebook Messenger are popular in urban areas, SMS remains crucial for business communications, authentication, and reaching rural populations. Android devices dominate the market with over 95% market share, while iOS devices represent less than 5% of mobile users.
Key SMS Features and Capabilities in Bangladesh
Bangladesh supports basic SMS functionality with some limitations on two-way messaging and specific requirements for sender ID registration, particularly for major operators like Robi, Teletalk, and Grameenphone.
Two-way SMS Support
Two-way SMS is not supported in Bangladesh. Recipients cannot reply to messages sent through standard SMS APIs and platforms.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenated messaging is supported, though availability may vary by sender ID type.
Message length rules: Standard 160 characters for GSM-7 encoding before splitting occurs. Messages using UCS-2 encoding are limited to 70 characters before concatenation.
Encoding considerations: Both GSM-7 and UCS-2 encodings are supported. UCS-2 is required for Bangla text and special characters.
MMS Support
MMS is not directly supported in Bangladesh. When MMS messages are sent, they are automatically converted to SMS messages containing a URL link to view the multimedia content. This ensures compatibility while still allowing rich media sharing.
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Bangladesh, allowing users to keep their phone numbers when switching between mobile operators. This feature does not significantly impact SMS delivery or routing as messages are properly directed to the current carrier.
Sending SMS to Landlines
Sending SMS to landline numbers is not possible in Bangladesh. Attempts to send messages to landline numbers will result in a 400 response error (code 21614) from SMS APIs, and the message will not be delivered or charged to the sender's account.
Compliance and Regulatory Guidelines for SMS in Bangladesh
The Bangladesh Telecommunication Regulatory Commission (BTRC) oversees SMS communications and enforces regulations for marketing messages. All A2P SMS providers must be licensed by BTRC, and promotional content must receive approval before distribution. The Digital Security Act 2018 also applies to SMS communications, particularly regarding data privacy and security.
Consent and Opt-In
Explicit Consent Requirements:
Best Practices for Documentation:
HELP/STOP and Other Commands
Do Not Call / Do Not Disturb Registries
Bangladesh maintains a National Do Not Call Registry (NDNC) managed by BTRC.
Time Zone Sensitivity
Bangladesh follows GMT+6 timezone (BST).
Phone Numbers Options and SMS Sender Types for Bangladesh
Alphanumeric Sender ID
Operator network capability: Supported by all major operators
Registration requirements:
Sender ID preservation: Yes, registered IDs are preserved across networks
Long Codes
Domestic vs. International:
Sender ID preservation: No, international long codes may be modified Provisioning time: N/A Use cases: Not recommended for Bangladesh market
Short Codes
Support: Not currently supported in Bangladesh Provisioning time: N/A Use cases: N/A
Restricted SMS Content, Industries, and Use Cases
Restricted Industries:
Regulated Industries:
Content Filtering
Carrier Filtering Rules:
Best Practices to Avoid Blocking:
Best Practices for Sending SMS in Bangladesh
Messaging Strategy
Sending Frequency and Timing
Localization
Opt-Out Management
Testing and Monitoring
SMS API integrations for Bangladesh
Twilio
Twilio provides a robust SMS API with specific support for Bangladesh's requirements. Authentication uses account SID and auth token, with mandatory sender ID registration for major carriers.
import { Twilio } from 'twilio'; // Initialize Twilio client with credentials const client = new Twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN); // Function to send SMS to Bangladesh async function sendSmsToBangladesh( to: string, message: string, senderId: string ): Promise<void> { try { // Ensure proper number formatting for Bangladesh const formattedNumber = to.startsWith('+880') ? to : `+880${to}`; const response = await client.messages.create({ body: message, from: senderId, // Must be pre-registered for Robi, Teletalk, Grameenphone to: formattedNumber, // Optional parameters for delivery tracking statusCallback: 'https://your-webhook.com/status' }); console.log(`Message sent successfully. SID: ${response.sid}`); } catch (error) { console.error('Error sending message:', error); throw error; } }Sinch
Sinch offers comprehensive SMS capabilities for Bangladesh with support for both transactional and promotional messages.
import { SinchClient } from '@sinch/sdk'; // Initialize Sinch client const sinchClient = new SinchClient({ servicePlanId: process.env.SINCH_SERVICE_PLAN_ID, apiToken: process.env.SINCH_API_TOKEN, region: 'asia' // Specify Asia region for better latency }); // Function to send batch SMS async function sendBatchSms( recipients: string[], message: string, senderId: string ): Promise<void> { try { const response = await sinchClient.sms.batches.create({ from: senderId, to: recipients.map(num => num.startsWith('+880') ? num : `+880${num}`), body: message, delivery_report: 'summary', // Support for Bangla characters encoding: 'UCS2' }); console.log(`Batch ID: ${response.id}`); } catch (error) { console.error('Batch sending failed:', error); throw error; } }MessageBird
MessageBird provides reliable SMS delivery in Bangladesh with support for local language content.
import { MessageBird } from 'messagebird'; // Initialize MessageBird client const messagebird = MessageBird(process.env.MESSAGEBIRD_API_KEY); // Function to send SMS with delivery tracking async function sendSmsWithTracking( recipient: string, message: string, senderId: string ): Promise<void> { const params = { originator: senderId, recipients: [recipient], body: message, // Optional parameters reportUrl: 'https://your-webhook.com/delivery', encoding: 'unicode' // For Bangla text }; try { const response = await new Promise((resolve, reject) => { messagebird.messages.create(params, (err, response) => { if (err) reject(err); else resolve(response); }); }); console.log('Message sent:', response); } catch (error) { console.error('MessageBird error:', error); throw error; } }Plivo
Plivo offers high-throughput SMS capabilities with specific features for Bangladesh market requirements.
import { Client } from 'plivo'; // Initialize Plivo client const plivo = new Client( process.env.PLIVO_AUTH_ID, process.env.PLIVO_AUTH_TOKEN ); // Function to send SMS with retry logic async function sendSmsWithRetry( to: string, message: string, senderId: string, maxRetries = 3 ): Promise<void> { let attempts = 0; while (attempts < maxRetries) { try { const response = await plivo.messages.create({ src: senderId, dst: to.startsWith('+880') ? to : `+880${to}`, text: message, // Optional parameters url_strip_query: false, // Preserve URL parameters method: 'POST' }); console.log(`Message sent successfully. ID: ${response.messageUuid}`); return; } catch (error) { attempts++; if (attempts === maxRetries) throw error; await new Promise(resolve => setTimeout(resolve, 1000 * attempts)); } } }API Rate Limits and Throughput
Throughput Management Strategies:
Error Handling and Reporting
Recap and Additional Resources
Key Takeaways:
Next Steps:
Additional Information: