Nepal SMS Best Practices, Compliance, and Features
Nepal SMS Market Overview
Locale name: | Nepal |
---|---|
ISO code: | NP |
Region | Asia |
Mobile country code (MCC) | 429 |
Dialing Code | +977 |
Market Conditions: Nepal's mobile market is dominated by two major operators - Nepal Telecom (Namaste) and Ncell, with a growing penetration of smartphones and increasing reliance on SMS for business communications and notifications. While OTT messaging apps like Viber and WhatsApp are popular in urban areas, SMS remains crucial for reaching the broader population, especially in rural regions where internet connectivity may be limited. Android devices significantly outnumber iOS devices in the market, reflecting broader Asian market trends.
Key SMS Features and Capabilities in Nepal
Nepal supports basic SMS functionality with some limitations on sender IDs and requires pre-registration for most messaging services, while offering support for concatenated messages and various encoding options.
Two-way SMS Support
Two-way SMS is not supported in Nepal according to current regulations and technical infrastructure. Businesses should plan their messaging strategies around one-way communication only.
Concatenated Messages (Segmented SMS)
Support: Yes, concatenation is supported, though availability may vary based on sender ID type.
Message length rules: Standard SMS length limits apply - 160 characters for GSM-7 encoding and 70 characters for UCS-2 encoding before splitting occurs.
Encoding considerations: Both GSM-7 and UCS-2 encodings are supported, with UCS-2 recommended for messages containing Nepali characters or other non-Latin scripts.
MMS Support
MMS messages are not directly supported in Nepal. When attempting to send MMS, the message will be automatically converted to SMS with an embedded URL link where recipients can view the multimedia content. This ensures message delivery while maintaining compatibility with all devices.
Recipient Phone Number Compatibility
Number Portability
Number portability is not available in Nepal. Mobile numbers remain tied to their original network operators, which simplifies message routing but means customers cannot keep their numbers when changing providers.
Sending SMS to Landlines
Sending SMS to landline numbers is not possible in Nepal. Attempts to send messages to landline numbers will result in a failed delivery and may trigger a 400 response error (error code 21614) from messaging APIs. These messages will not appear in logs and accounts will not be charged for failed attempts.
Compliance and Regulatory Guidelines for SMS in Nepal
Nepal's telecommunications sector is regulated by the Nepal Telecommunications Authority (NTA), which oversees SMS marketing and communications. While specific SMS marketing laws are still evolving, businesses must adhere to general telecommunications guidelines and international best practices for message sending.
Consent and Opt-In
Explicit Consent Required: You must obtain and document clear, explicit consent from recipients before sending any marketing or promotional messages. Best practices include:
- Maintaining detailed records of how and when consent was obtained
- Using double opt-in processes for marketing lists
- Clearly stating the type and frequency of messages recipients will receive
- Providing transparent terms and conditions during the opt-in process
HELP/STOP and Other Commands
All SMS campaigns must support standard opt-out commands in both English and Nepali:
- STOP/BAND (बन्द)
- HELP/SAHAYOG (सहयोग)
- CANCEL/RADDA (रद्द)
Messages should include clear opt-out instructions, preferably in both English and Nepali languages.
Do Not Call / Do Not Disturb Registries
Nepal currently does not maintain an official DND registry. However, businesses should:
- Maintain their own suppression lists
- Honor opt-out requests within 24 hours
- Keep records of opted-out numbers
- Implement systems to prevent messaging to previously opted-out numbers
Time Zone Sensitivity
Nepal operates in a single time zone (UTC+5:45). Best practices for message timing include:
- Sending messages between 8:00 AM and 8:00 PM Nepal time
- Avoiding messages during major holidays and festivals
- Only sending urgent messages (like OTP or security alerts) outside these hours
Phone Numbers Options and SMS Sender Types for Nepal
Alphanumeric Sender ID
Operator network capability: Supported with pre-registration
Registration requirements: Pre-registration required for both Ncell and Nepal Telecom networks. Documentation and business verification needed.
Sender ID preservation: Yes, for pre-registered IDs; unregistered IDs will be overwritten with generic alphanumeric sender ID
Long Codes
Domestic vs. International: Domestic long codes not supported; international long codes supported but with limitations
Sender ID preservation: No, numeric sender IDs are typically overwritten
Provisioning time: N/A for domestic, immediate for international
Use cases: Not recommended for primary messaging; better to use pre-registered alphanumeric sender IDs
Short Codes
Support: Not currently supported in Nepal
Provisioning time: N/A
Use cases: N/A
Restricted SMS Content, Industries, and Use Cases
The following content types and industries face restrictions:
- Gambling and betting services
- Adult content or explicit material
- Unauthorized financial services
- Political messaging without proper authorization
- Social invites (explicitly prohibited)
Content Filtering
Known carrier filtering rules:
- Messages containing certain keywords related to restricted industries
- URLs from suspicious or blacklisted domains
- Messages appearing to impersonate financial institutions
Tips to avoid blocking:
- Avoid excessive punctuation and special characters
- Use registered and approved sender IDs
- Keep URLs from reputable domains
- Maintain consistent sending patterns
Best Practices for Sending SMS in Nepal
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-actions
- Use personalization thoughtfully (e.g., recipient's name)
- Maintain consistent branding across messages
Sending Frequency and Timing
- Limit marketing messages to 2-3 per week per recipient
- Respect local holidays and festivals
- Schedule messages during business hours
- Space out bulk sends to avoid network congestion
Localization
- Support both English and Nepali languages
- Use Unicode (UCS-2) encoding for Nepali script
- Consider regional dialects for targeted campaigns
- Include language preference in opt-in process
Opt-Out Management
- Process opt-outs within 24 hours
- Maintain centralized opt-out database
- Confirm opt-out with one final message
- Regular audit of opt-out list compliance
Testing and Monitoring
- Test messages across both major carriers (Ncell and Nepal Telecom)
- Monitor delivery rates by carrier
- Track engagement metrics and opt-out rates
- Regular testing of opt-out functionality
SMS API integrations for Nepal
Twilio
Twilio provides a robust SMS API with specific support for Nepal's messaging requirements. Authentication uses account SID and auth token, with region-specific endpoints available.
import { Twilio } from 'twilio';
// Initialize Twilio client with credentials
const client = new Twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
async function sendSMSToNepal(
to: string,
message: string,
alphanumericSenderId: string
) {
try {
// Ensure phone number is in E.164 format for Nepal (+977)
const formattedNumber = to.startsWith('+977') ? to : `+977${to}`;
const response = await client.messages.create({
body: message,
from: alphanumericSenderId, // Pre-registered sender ID
to: formattedNumber,
// Optional parameters for delivery tracking
statusCallback: 'https://your-webhook.com/status'
});
console.log(`Message sent successfully! SID: ${response.sid}`);
return response;
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
Sinch
Sinch offers comprehensive SMS capabilities for Nepal with support for pre-registered sender IDs and delivery reporting.
import axios from 'axios';
class SinchSMSService {
private readonly baseUrl: string;
private readonly apiToken: string;
private readonly servicePlanId: string;
constructor(servicePlanId: string, apiToken: string) {
this.baseUrl = 'https://sms.api.sinch.com/xms/v1';
this.apiToken = apiToken;
this.servicePlanId = servicePlanId;
}
async sendSMS(to: string, message: string, senderId: string) {
try {
const response = await axios.post(
`${this.baseUrl}/${this.servicePlanId}/batches`,
{
from: senderId,
to: [to],
body: message,
delivery_report: 'summary'
},
{
headers: {
'Authorization': `Bearer ${this.apiToken}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
} catch (error) {
console.error('Sinch SMS Error:', error);
throw error;
}
}
}
Bird
Bird's API provides streamlined SMS functionality for Nepal with support for both English and Nepali text.
import axios from 'axios';
interface BirdSMSConfig {
workspaceId: string;
channelId: string;
accessKey: string;
}
class BirdSMSService {
private readonly config: BirdSMSConfig;
constructor(config: BirdSMSConfig) {
this.config = config;
}
async sendSMS(phoneNumber: string, messageText: string) {
const url = `https://api.bird.com/workspaces/${this.config.workspaceId}/channels/${this.config.channelId}/messages`;
try {
const response = await axios.post(
url,
{
receiver: {
contacts: [{ identifierValue: phoneNumber }]
},
body: {
type: 'text',
text: { text: messageText }
}
},
{
headers: {
'Authorization': `AccessKey ${this.config.accessKey}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
} catch (error) {
console.error('Bird SMS Error:', error);
throw error;
}
}
}
API Rate Limits and Throughput
Nepal's carriers implement various rate limits:
- Maximum Messages Per Second: 10-20 messages/second per sender ID
- Daily Limits: Vary by carrier and sender ID type
- Concurrent Requests: Usually limited to 5-10 simultaneous connections
Strategies for Large-Scale Sending:
- Implement queuing systems (Redis/RabbitMQ)
- Use exponential backoff for retries
- Batch messages when possible
- Distribute load across multiple sender IDs
Error Handling and Reporting
Common Error Scenarios:
- Invalid sender ID (pre-registration required)
- Network congestion
- Invalid phone number format
- Content filtering triggers
Logging Best Practices:
interface SMSLogEntry {
messageId: string;
timestamp: Date;
recipient: string;
status: 'sent' | 'failed' | 'delivered';
errorCode?: string;
errorMessage?: string;
}
// Example logging implementation
async function logSMSActivity(entry: SMSLogEntry) {
// Log to your preferred storage (database/monitoring system)
console.log(JSON.stringify(entry));
}
Recap and Additional Resources
Key Takeaways
-
Compliance Priorities:
- Pre-register sender IDs
- Maintain opt-out lists
- Respect time zone restrictions
-
Technical Considerations:
- Use proper character encoding
- Implement retry mechanisms
- Monitor delivery rates
-
Best Practices:
- Localize content
- Test across carriers
- Maintain proper documentation
Next Steps
-
Technical Setup:
- Register with preferred SMS provider
- Set up monitoring systems
- Implement error handling
-
Compliance:
- Review NTA regulations
- Document consent processes
- Set up opt-out handling
-
Testing:
- Verify sender ID registration
- Test message delivery
- Validate opt-out functionality
Additional Resources
Industry Resources:
- Nepal Telecom Developer Portal
- Ncell Business Solutions
- SMS Providers' Nepal Compliance Guides