sms compliance
sms compliance
Send SMS to Sri Lanka: Complete Guide to TRCSL Regulations & Sender ID
Learn how to send SMS to Sri Lanka with proper alphanumeric sender ID registration, TRCSL compliance, Dialog/Mobitel/Hutch operator requirements, and API integration for marketing and transactional messages.
Sri Lanka SMS Best Practices, Compliance, and Features
Sri Lanka SMS Market Overview
| Locale name: | Sri Lanka |
|---|---|
| ISO code: | LK |
| Region | Asia |
| Mobile country code (MCC) | 413 |
| Dialing Code | +94 |
Market Conditions: Sending SMS to Sri Lanka requires understanding the robust mobile telecommunications market with 29.3 million active cellular mobile connections as of early 2025, equivalent to 127% mobile penetration (multiple connections per person are common). The country has several major mobile operators including Dialog (market leader with 50%+ share), Mobitel (24% market share), and Hutch. While OTT messaging apps like WhatsApp and Viber are popular, SMS remains a critical communication channel, especially for business communications and authentication purposes. Internet penetration stands at 53.6% (12.4 million users), while smartphone adoption is strong with approximately 90% of mobile users on Android devices.
SMS Features and Capabilities for Sri Lanka
Sri Lanka supports standard SMS features including concatenated messaging and alphanumeric sender IDs. Two-way SMS functionality is not available.
Two-Way SMS Support
You cannot receive replies through standard A2P SMS channels in Sri Lanka. Major SMS providers don't support two-way messaging.
Alternative Communication Methods:
- WhatsApp Business API for two-way messaging
- Web-based response forms with unique tracking codes in SMS
- Dedicated customer service phone lines for voice responses
- Email response options included in SMS messages
Concatenated Messages (Segmented SMS)
Support: Concatenated messaging is fully supported, though availability varies by sender ID type.
Message length rules: Messages split after 160 characters for GSM-7 encoding or 70 characters for UCS-2 (Unicode).
Segmentation and Billing Examples:
- 161-character English message: Splits into 2 segments of 153 characters each (7 characters reserved for concatenation headers). You're charged for 2 SMS segments.
- 71-character Sinhala/Tamil message: Splits into 2 segments of 67 characters each. You're charged for 2 SMS segments.
- 200-character English message: 2 segments × $0.30-0.38/segment = $0.60-0.76 total cost.
Encoding considerations: GSM-7 encoding allows 160 characters per segment. UCS-2 (for Sinhala and Tamil) limits segments to 70 characters. You're billed separately for each segment in a concatenated message. Learn more about SMS character encoding and message segmentation.
MMS Support
Sri Lanka doesn't support MMS messages directly. MMS content automatically converts to SMS with an embedded URL where recipients view the multimedia content.
Sri Lankan Mobile Number Format and Validation
Mobile Number Format
Sri Lankan mobile numbers must be formatted in E.164 international format for SMS delivery:
- Format: +94 XX XXX XXXX (country code +94 followed by 9 digits)
- Mobile prefixes: 70-78 (major operators)
- Dialog: 76, 77
- Mobitel: 71, 72
- Hutch: 76, 78
- Airtel: 70, 75
- Total length: 12 characters including + symbol
- Example: +94771234567
Number Portability
Sri Lanka doesn't offer number portability. Mobile numbers remain tied to their original carrier, simplifying message routing and delivery.
Sending SMS to Landlines
You cannot send SMS to landline numbers. Attempts to message landlines result in failed delivery with an error response (400 error code 21614) from the SMS API. Failed attempts won't appear in logs or incur charges.
Phone Number Validation Methods:
- Use phone number validation APIs (Twilio Lookup, Plivo Lookup) to verify mobile numbers before sending
- Check that numbers start with mobile prefixes (70-78)
- Validate E.164 format before submission
- Maintain a suppression list of known landline numbers
TRCSL Compliance and Regulatory Guidelines for SMS
The Telecommunications Regulatory Commission of Sri Lanka (TRCSL) regulates SMS communications under the Sri Lanka Telecommunications Act No. 25 of 1991 as amended. Comply with local telecommunications laws and data protection regulations when sending commercial SMS messages to Sri Lanka.
Enforcement and Penalties: TRCSL enforces compliance through license suspensions, financial penalties, and service restrictions. While specific penalty amounts aren't publicly disclosed, violations can result in service disruption and legal action. Failing to register sender IDs may result in message blocking by carriers.
Key Regulatory Bodies:
- TRCSL: Telecommunications Regulatory Commission of Sri Lanka – primary regulator
- CBSL: Central Bank of Sri Lanka – financial services messaging approval
- IRCSL: Insurance Regulatory Commission of Sri Lanka – insurance communications
- Personal Data Protection: Comprehensive data protection legislation is under development. Follow international best practices for data handling and consent management.
Consent and Opt-In Requirements
Explicit Consent Requirements:
- Obtain written or electronic consent before sending marketing messages
- Maintain consent records and keep them easily accessible
- Clearly state the purpose of communication during opt-in
- Use double opt-in for marketing campaigns (recommended)
Best Practices for Documentation:
- Store timestamp and source of consent
- Maintain detailed records of opt-in methods
- Keep consent logs for a minimum of 2 years
- Document the specific services or message types users agreed to receive
HELP/STOP and Other Commands
- All marketing messages must include clear opt-out instructions
- STOP command must be supported in English
- Local language keywords (Sinhala and Tamil) should also be supported
- Common keywords to support:
- STOP/UNSUBSCRIBE
- HELP
- INFO
- නවත්වන්න (Sinhala for STOP)
- நிறுத்து (Tamil for STOP)
Keyword Processing Implementation:
// Example keyword handler
function processInboundKeyword(message: string, phoneNumber: string): void {
const normalized = message.trim().toUpperCase();
const stopKeywords = ['STOP', 'UNSUBSCRIBE', 'නවත්වන්න', 'நிறுத்து'];
const helpKeywords = ['HELP', 'INFO', 'උදව්', 'உதவி'];
if (stopKeywords.some(kw => normalized.includes(kw))) {
addToSuppressionList(phoneNumber);
sendConfirmation(phoneNumber, 'You have been unsubscribed.');
} else if (helpKeywords.some(kw => normalized.includes(kw))) {
sendHelpInfo(phoneNumber);
}
}Learn more about implementing SMS opt-out management best practices.
Do Not Call / Do Not Disturb Registries
Sri Lanka doesn't maintain an official DND registry. Maintain your own suppression lists, honor opt-out requests within 24 hours, implement automated STOP command processing, and regularly clean contact lists.
Time Zone Sensitivity
Sri Lanka follows Sri Lanka Standard Time (SLST, UTC+5:30). Note: Sri Lanka does not observe daylight saving time.
Recommended Sending Hours:
- Business messages: 8:00 AM to 9:00 PM local time
- Marketing messages: 9:00 AM to 7:00 PM local time
- Transactional/OTP messages: 24/7 allowed
Alphanumeric Sender ID Registration for Sri Lanka
Alphanumeric Sender ID
Operator network capability: Fully supported
Registration requirements: Pre-registration required for both international and domestic use
Sender ID preservation: Yes, preserved when properly registered
Provisioning time: Approximately 3 weeks
Special considerations: Mobitel network only allows OTP, OTT, and transactional traffic
Registration Process and Requirements:
- Prepare Documentation (per Twilio requirements):
- Letter of Authorization (LOA) on company letterhead
- Company registration documents
- Authorized signatory details and signature
- Company stamp/seal
- Sample message templates showing intended use
- Submit Registration:
- Sender ID (3-11 alphanumeric characters)
- Use case description (transactional, marketing, OTP)
- Expected monthly volume
- Approval Timeline: 2-3 weeks for processing
- Costs: Registration fees vary by provider; typically $50-200 one-time setup fee, though exact costs should be confirmed with your SMS provider
Learn more about alphanumeric sender ID registration across different countries.
Long Codes
Domestic vs. International Long Codes:
- Domestic long codes: Not supported
- International long codes: Supported with limitations
Sender ID preservation: International long codes may be overwritten
Provisioning time: N/A
Use cases: Not recommended for primary SMS sending
Short Codes
Support: Not currently supported
Provisioning time: N/A
Use cases: N/A
Restricted SMS Content, Industries, and Use Cases
Restricted Industries and Content:
- Gambling and betting
- Adult content
- Cryptocurrency promotions
- Political messaging without proper authorization
- Alcohol and tobacco advertising
Examples of Violations to Avoid:
- Messages promoting online casinos or betting apps
- Content containing explicit language or adult themes
- Unsolicited cryptocurrency investment offers
- Campaign messages without political party registration
- Direct alcohol sales or promotion to unverified audiences
Regulated Industries:
- Financial services (require CBSL approval)
- Healthcare (must comply with PHI guidelines)
- Insurance (require IRCSL compliance)
Approval Process for Regulated Industries:
- Financial services: Submit application to CBSL with business license, message templates, and compliance documentation
- Healthcare: Ensure PHI (Protected Health Information) handling complies with international standards (HIPAA-equivalent practices)
- Insurance: Obtain IRCSL approval with proof of insurance license and message content review
Content Filtering
Known Carrier Rules:
- Use URLs from approved domains only
- Avoid excessive punctuation or special characters
- Match message content to your registered use case
- Don't use misleading sender IDs
Common Filtering Triggers:
- Multiple URLs in a single message
- Excessive use of CAPS or special characters (!!! ???)
- Suspicious keywords related to money transfers or prizes
- Mismatched sender IDs (brand name doesn't match content)
- High-frequency sending from new sender IDs
Tips to Avoid Blocking:
- Use registered sender IDs consistently
- Avoid URL shorteners
- Keep content professional and clear
- Follow character encoding guidelines
Best Practices for Sending SMS in Sri Lanka
Messaging Strategy
- Keep messages under 160 characters when possible
- Include a clear call-to-action
- Use approved sender IDs consistently
- Personalize messages with the recipient's name when appropriate
Sending Frequency and Timing
- Limit marketing messages to 4-5 per month per recipient
- Respect religious and cultural holidays
- Avoid messaging during major festivals
- Space out bulk campaigns to prevent network congestion
Optimal Sending Times: Industry data shows highest engagement rates occur 10:00 AM - 12:00 PM and 6:00 PM - 8:00 PM local time on weekdays.
Localization
- Support English, Sinhala, and Tamil
- Use Unicode for local language characters
- Consider bilingual messages for important communications
- Test rendering on various devices
Major Cultural Holidays to Avoid:
- Sinhala and Tamil New Year (April 13-14): Most significant national holiday
- Vesak Poya (May, full moon day): Buddhist celebration, public holiday
- Poson Poya (June, full moon day): Buddhist holiday
- Esala Poya (July/August, full moon day): Kandy Perahera festival period
- Deepavali (October/November): Hindu festival of lights
- Christmas (December 25): Christian holiday
- All Poya Days (monthly full moon): Buddhist public holidays, send only essential messages
Opt-Out Management
- Process opt-outs within 24 hours
- Maintain a centralized opt-out database
- Include clear opt-out instructions
- Send an acknowledgment message confirming opt-out
Testing and Monitoring
- Test across all major carriers (Dialog, Mobitel, Hutch)
- Monitor delivery rates by carrier
- Track opt-out rates and patterns
- Regularly test opt-out functionality
Key Metrics to Track:
- Delivery rate by carrier (target: >95%)
- Opt-out rate (healthy: <2% per campaign)
- Message latency (target: <30 seconds for OTP)
- Error rate by error type (21614, 30007)
- Conversion rate by time of day
Alerting Thresholds:
- Set alerts if delivery rate drops below 90%
- Alert on opt-out rate exceeding 5% for any campaign
- Monitor for carrier filtering (error 30007) exceeding 1%
Learn more about SMS delivery rate optimization.
SMS API integrations for Sri Lanka
Twilio
Twilio provides comprehensive SMS API support for Sri Lanka. Authenticate using your account SID and auth token.
import { Twilio } from 'twilio';
// Initialize client with your credentials
const client = new Twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);
// Function to send SMS to Sri Lanka
async function sendSMSToSriLanka(
to: string,
message: string,
senderId: string
): Promise<void> {
try {
// Ensure proper formatting for Sri Lankan numbers
const formattedNumber = to.startsWith('+94') ? to : `+94${to.substring(1)}`;
const response = await client.messages.create({
body: message,
from: senderId, // Must be pre-registered alphanumeric sender ID
to: formattedNumber,
// Optional parameters for delivery tracking
statusCallback: 'https://your-webhook-url.com/status'
});
console.log(`Message sent successfully! SID: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}Sinch
Sinch delivers reliable SMS to Sri Lanka with support for both transactional and marketing messages.
import axios from 'axios';
class SinchSMSClient {
private readonly apiToken: string;
private readonly serviceId: string;
private readonly baseUrl = 'https://sms.api.sinch.com/xms/v1';
constructor(apiToken: string, serviceId: string) {
this.apiToken = apiToken;
this.serviceId = serviceId;
}
async sendSMS(to: string, message: string, senderId: string): Promise<void> {
try {
const response = await axios.post(
`${this.baseUrl}/${this.serviceId}/batches`,
{
from: senderId,
to: [to],
body: message,
delivery_report: 'summary'
},
{
headers: {
'Authorization': `Bearer ${this.apiToken}`,
'Content-Type': 'application/json'
}
}
);
console.log('Message sent successfully:', response.data);
} catch (error) {
console.error('Failed to send message:', error);
throw error;
}
}
}MessageBird
MessageBird provides a straightforward API for Sri Lankan SMS with delivery reporting support.
import messagebird from 'messagebird';
class MessageBirdClient {
private client: any;
constructor(apiKey: string) {
this.client = messagebird(apiKey);
}
sendSMS(
to: string,
message: string,
senderId: string
): Promise<any> {
return new Promise((resolve, reject) => {
this.client.messages.create({
originator: senderId,
recipients: [to],
body: message,
datacoding: 'auto' // Automatically handles Unicode
}, (err: any, response: any) => {
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
}
}Plivo
Plivo delivers reliable SMS with support for Unicode messages and delivery tracking.
import plivo from 'plivo';
class PlivoSMSClient {
private client: any;
constructor(authId: string, authToken: string) {
this.client = new plivo.Client(authId, authToken);
}
async sendSMS(
to: string,
message: string,
senderId: string
): Promise<void> {
try {
const response = await this.client.messages.create({
src: senderId,
dst: to,
text: message,
url_strip_query_params: false
});
console.log('Message sent:', response);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
}API Rate Limits and Throughput
Rate Limits:
- Twilio: 100 messages per second
- Sinch: 30 messages per second
- MessageBird: 60 messages per second
- Plivo: 50 messages per second
Throughput Management Strategies:
- Implement exponential backoff for retries
- Use queue systems (Redis/RabbitMQ) for high volume
- Batch messages when possible
- Monitor delivery rates and adjust sending speed
Error Handling and Reporting
Common Error Codes and Meanings:
- 21614: Invalid mobile number (landline, incorrect format, or IoT/M2M number)
- 30007: Message filtered by carrier or Twilio (spam/policy violation)
- 30008: Unknown destination (number doesn't exist or is inactive)
- 30005: Unknown destination handset (number unreachable)
Error Handling Implementation Example:
async function sendWithErrorHandling(to: string, message: string): Promise<void> {
try {
await sendSMS(to, message);
} catch (error: any) {
const errorCode = error.code;
switch(errorCode) {
case 21614:
console.error(`Invalid number ${to} - likely landline or bad format`);
await addToInvalidList(to);
break;
case 30007:
console.error(`Message filtered for ${to} - content policy violation`);
await reviewMessageContent(message);
break;
case 30008:
console.error(`Unknown destination ${to} - number inactive`);
await addToSuppressionList(to);
break;
default:
console.error(`Unexpected error ${errorCode}:`, error);
await retryWithBackoff(to, message);
}
}
}Best Practices:
- Implement comprehensive error logging
- Monitor delivery receipts
- Set up automated alerts for high failure rates
- Store message status updates
- Implement retry logic with exponential backoff
Frequently Asked Questions (FAQ)
How do I send SMS to Sri Lanka mobile numbers?
Send SMS to Sri Lankan mobile numbers using E.164 international format (+94XXXXXXXXX). Register an alphanumeric sender ID with your SMS provider (3-week process), ensure numbers use correct mobile prefixes (70-78), and choose a provider like Twilio, Sinch, MessageBird, or Plivo. Obtain explicit consent before sending marketing messages and comply with TRCSL regulations.
What is the alphanumeric sender ID registration process for Sri Lanka?
Alphanumeric sender ID registration in Sri Lanka takes approximately 3 weeks. Pre-register sender IDs for both international and domestic use through your SMS provider. Submit a Letter of Authorization (LOA) on company letterhead with company stamp and authorized signature, your sender ID (3-11 characters), business documentation, use case details, and sample message templates. Registration typically costs $50-200 one-time. Once approved, your sender ID will be preserved across Dialog, Mobitel, and Hutch networks (Mobitel restricts usage to OTP, OTT, and transactional traffic only).
What are the SMS compliance requirements in Sri Lanka?
Sri Lankan SMS compliance requires: obtaining explicit written or electronic consent before sending marketing messages, maintaining consent records for a minimum of 2 years, including clear opt-out instructions in all marketing messages, honoring opt-out requests within 24 hours, respecting sending time restrictions (8 AM – 9 PM for business messages), supporting STOP commands in English, Sinhala, and Tamil, and obtaining CBSL approval for financial services messaging. The Telecommunications Regulatory Commission of Sri Lanka (TRCSL) regulates commercial SMS with enforcement authority including license suspensions and service restrictions.
What mobile number prefixes do Sri Lankan operators use?
Sri Lankan mobile operators use these prefixes: Dialog (76, 77), Mobitel (71, 72), Hutch (76, 78), and Airtel (70, 75). All numbers follow E.164 format with country code +94 followed by 9 digits. Number portability isn't available – numbers remain tied to their original carrier. Always validate numbers match these prefixes before sending.
Can I send two-way SMS in Sri Lanka?
Two-way SMS isn't supported in Sri Lanka through major SMS providers. You cannot receive replies through standard A2P SMS channels. For two-way communication, use alternative channels like WhatsApp Business API, web-based forms, or dedicated customer service numbers.
What character encoding should I use for Sinhala and Tamil SMS?
Use UCS-2 encoding for Sinhala (සිංහල) and Tamil (தமிழ்) messages. UCS-2 limits messages to 70 characters per segment compared to 160 for GSM-7 encoded English. Cost implications: A 150-character Sinhala message splits into 3 segments (67 chars each), costing 3× the single-segment price. At typical rates ($0.30-0.38/segment), this equals $0.90-1.14 versus $0.30-0.38 for a single English message. For bilingual messages, the entire message uses UCS-2 encoding. Test rendering on various devices before launching campaigns.
What are the SMS rate limits for Sri Lanka providers?
SMS rate limits vary by provider: Twilio supports 100 messages/second, Sinch 30 messages/second, MessageBird 60 messages/second, and Plivo 50 messages/second. Implement exponential backoff for retries, use queue systems (Redis or RabbitMQ) for high-volume campaigns, batch messages when possible, and monitor delivery rates to adjust sending speed.
What content is restricted in Sri Lankan SMS campaigns?
Sri Lanka restricts SMS content in gambling and betting, adult content, cryptocurrency promotions, unauthorized political messaging, and alcohol/tobacco advertising. Financial services require CBSL approval, healthcare messages must comply with PHI guidelines, and insurance requires IRCSL compliance. Use approved domain URLs only, avoid excessive punctuation, match content to your registered use case, and never use misleading sender IDs.
Recap and Additional Resources
Key Takeaways:
- Pre-register alphanumeric sender IDs (3-week process)
- Implement proper opt-out handling
- Follow time zone restrictions for messaging
- Support local languages (Sinhala/Tamil)
- Monitor delivery rates and handle errors properly
Next Steps:
- Review TRCSL regulations at www.trc.gov.lk
- Consult local legal counsel for compliance
- Set up test accounts with your preferred SMS provider
- Implement error handling and monitoring
- Establish an opt-out management system
Additional Resources:
- Telecommunications Regulatory Commission: www.trc.gov.lk
- Data Protection Guidelines: www.cert.gov.lk
- SMS Marketing Best Practices: www.caalanka.lk
Related Resources
Country-Specific SMS Guides:
SMS API Integration Tutorials:
- Twilio SMS Integration Guide
- Sinch SMS API Setup
- MessageBird SMS Configuration
- Plivo SMS Implementation
Compliance & Best Practices:
- SMS Compliance Global Guide
- E.164 Phone Number Format
- SMS Opt-Out Management
- SMS Character Encoding Guide
Technical Documentation: