Sent logo
Sent TeamMar 8, 2026 / tools / Seychelles

Seychelles SMS Guide: Compliance, Regulations & Best Practices 2025

Complete guide to sending SMS in Seychelles. Learn about SCRA regulations, mobile operators (Airtel, Cable & Wireless), API integrations, compliance requirements, and messaging best practices.

Seychelles SMS Guide: Compliance, Regulations & Best Practices 2025

Seychelles SMS Market Overview

Locale name:Seychelles
ISO code:SC
RegionMiddle East & Africa
Mobile country code (MCC)633
Mobile network codes (MNC)01 (Cable & Wireless), 10 (Airtel)
Dialing Code+248

Source: ITU Operational Bulletin T-SP-OB.1294-2024 (MCC-MNC assignments); Wikipedia Mobile Network Codes in ITU region 6xx.

Market Conditions: Seychelles operates a duopoly mobile telecommunications market with two major operators: Airtel Seychelles (market leader with approximately 55-57% market share) and Cable & Wireless Seychelles (approximately 40-45% market share). While OTT messaging apps gain popularity, SMS remains reliable for business-to-consumer communications and critical notifications due to its universal reach. The Seychelles Communications Regulatory Authority (SCRA), established under the Communications Act 2023, conducts regular performance assessments of both operators' voice and data services across Mahé, Praslin, and La Digue.

Source: SCRA network performance assessments (September-October 2024); market share data from telecommunications industry reports (2024).


Key SMS Features and Capabilities in Seychelles

Seychelles supports basic SMS functionality with limitations on advanced features like two-way messaging and concatenation.

Two-way SMS Support

Two-way SMS is not supported in Seychelles according to current platform capabilities. Businesses can send outbound messages but cannot receive replies through the same channel.

Workarounds for two-way communication needs:

  • Use alternative channels: Email, web forms, or mobile apps for customer responses
  • Include a callback phone number in SMS messages for urgent responses
  • Leverage OTT messaging platforms (WhatsApp Business API, Telegram) that support two-way communication
  • Implement QR codes linking to response forms or chatbots
  • Consider international long codes or virtual numbers that may support inbound messaging (test with specific carriers first)

Concatenated Messages (Segmented SMS)

Support: Concatenated messaging is not supported in Seychelles. Message length rules: Standard SMS length limits apply – messages exceeding these limits may be truncated or fail to deliver. Encoding considerations: Keep messages within single SMS length limits to ensure reliable delivery.

SMS Character Limits by Encoding:

Encoding TypeSingle Message LimitWhen Used
GSM-7160 charactersStandard Latin characters, numbers, basic punctuation
UCS-2 (Unicode)70 charactersEmojis, special characters, non-Latin scripts

Note: Since concatenation is not supported in Seychelles, split messages manually or shorten them if they exceed these limits. If concatenation were supported, segment limits would be 153 characters (GSM-7) and 67 characters (Unicode) per segment.

Character encoding best practices:

  • Check messages for Unicode characters before sending – even one emoji reduces the limit from 160 to 70 characters
  • Avoid curly quotes – use straight quotes instead
  • Test messages with an SMS length calculator to verify encoding type
  • Replace Unicode characters with GSM-7 equivalents where possible (e.g., use straight apostrophes instead of curly ones)

Source: Twilio Messaging Character Limits; AWS SMS Character Limitations.

MMS Support

MMS messages are not directly supported in Seychelles. Instead, MMS content automatically converts to SMS with an embedded URL link where recipients can view the multimedia content. This ensures you can still share rich media while maintaining compatibility with local network capabilities.

MMS-to-SMS conversion details:

  • Your MMS platform (e.g., Twilio, Sinch) hosts the media on their servers and generates a short URL
  • The URL typically expires after 30-90 days (varies by provider)
  • Recipients with limited data plans may hesitate to click links
  • Test the mobile experience – ensure the landing page is mobile-optimized
  • Consider including context in the SMS text (e.g., "View your invoice here: [URL]" instead of just the URL)

Recipient Phone Number Compatibility

Number Portability

Number portability is not currently operationally available in Seychelles, meaning mobile numbers remain tied to their original carrier. However, the Broadcasting and Telecommunication (Mobile Number Portability) Regulations 2023 have been enacted, establishing the legal framework for future MNP implementation under SCRA oversight. Users changing providers currently need to change their numbers.

Timeline for MNP implementation: As of January 2025, SCRA has not announced a specific rollout date for mobile number portability. Based on similar implementations in comparable markets, expect 18-36 months from regulatory framework completion to operational launch. Monitor SCRA's website for official announcements.

Source: Broadcasting and Telecommunication (Mobile Number Portability) Regulations 2023; SCRA regulatory framework (2023-2024).

Sending SMS to Landlines

You cannot send SMS to landline numbers in Seychelles. Attempts to send messages to landline numbers will result in a 400 response with error code 21614. These messages will not appear in logs, and your account will not be charged for failed attempts.

Landline identification and filtering:

  • Seychelles mobile numbers typically begin with specific prefixes (e.g., 2 5XXXXX format for 7-digit local numbers)
  • Implement phone number validation using E.164 format (+248XXXXXXX)
  • Use phone number lookup APIs (e.g., Twilio Lookup, Numverify) to verify number type before sending
  • Maintain a database of known landline prefixes and filter them from SMS campaigns
  • Monitor error code 21614 in delivery reports to identify and suppress landline numbers

Compliance and Regulatory Requirements for SMS in Seychelles

The Seychelles Communications Regulatory Authority (SCRA), established under the Communications Act 2023, oversees electronic communications services including SMS messaging. SCRA began operations in 2024 with Mr. Wilven Jean appointed as Chief Executive Officer (effective January 13, 2025) and Mr. Joyvani Chetty as Board Chairperson. While specific SMS regulations are evolving, adhere to general telecommunications guidelines and international best practices.

Source: SCRA official announcements; Communications Act 2023.

Data Protection and Privacy Requirements

Seychelles enacted the Data Protection Act 2023 (replacing the 2003 Act that was never brought into force), which governs the processing of personal data including phone numbers for SMS marketing. While the Act has not yet been brought into force, prepare for compliance as the regulatory framework takes shape.

Key requirements under the Data Protection Act 2023:

  • Registration: Register as a data user (including businesses holding phone numbers for SMS) with the Data Protection Commissioner
  • Lawful processing: Obtain and process personal data (phone numbers) fairly and lawfully
  • Purpose limitation: Hold data only for specified and lawful purposes
  • Data minimization: Collect only phone numbers adequate, relevant, and not excessive for your purpose
  • Consent: Obtain clear consent before collecting phone numbers for SMS marketing
  • Access rights: Provide individuals the right to access their data and request corrections or deletion
  • Security: Implement appropriate security measures to protect phone number databases
  • Transfer restrictions: The Data Protection Commissioner may prohibit transfers of personal data outside Seychelles if it contravenes data protection principles

During the interim period (before full enforcement): Data protection continues under general principles of privacy and confidentiality in the Civil Code of Seychelles and provisions in the Financial Institutions Act and Revenue Administration Act.

Penalties for non-compliance: While specific penalty structures under the Data Protection Act 2023 await implementation regulations, expect enforcement mechanisms to include fines, suspension of data processing activities, and potential criminal liability for serious violations. The Data Protection Commissioner will have authority to investigate complaints and impose sanctions once the Act is brought into force.

Source: Data Protection Act 2023; DLA Piper Data Protection Laws - Seychelles.

Bulk SMS Sender Registration

Currently, there are no formal registration requirements specifically for bulk SMS senders in Seychelles. However, you should:

  • Register as a data user with the Data Protection Commissioner once the registration system becomes operational
  • Maintain records of consent and opt-in mechanisms
  • Be prepared to demonstrate compliance with data protection principles
  • Consider voluntary registration with SCRA to establish legitimacy
  • Monitor SCRA announcements for any forthcoming SMS-specific regulations

Note: As regulations evolve, SCRA may introduce specific registration or licensing requirements for bulk SMS service providers. Check SCRA's website for updates.

Explicit Consent Requirements:

  • Obtain clear, documented opt-in consent before sending marketing messages
  • Maintain detailed records of when and how you obtained consent
  • Include clear terms of service and privacy policy references
  • Specify the types of messages users will receive and approximate frequency

Sample consent language:

English: "By checking this box, I consent to receive SMS messages from [Company Name] about [specific purpose, e.g., 'promotional offers and product updates']. I understand I can opt out at any time by replying STOP. Message frequency: approximately [X] messages per month. Standard message and data rates may apply."

French: "En cochant cette case, je consens à recevoir des messages SMS de [Company Name] concernant [objectif spécifique]. Je comprends que je peux me désinscrire à tout moment en répondant STOP. Fréquence des messages : environ [X] messages par mois."

Seychellois Creole: "Letan mon tik sa boaz, mon aksepte resevwar mesaz SMS depi [Company Name] lor [objetif spesifik]. Mon konpran mon kapab dezabonnen ninport letan letan mon repond STOP. Konbyin fwa mesaz: anviron [X] mesaz par mwa."

HELP/STOP and Other Commands

  • All SMS campaigns must support standard STOP and HELP commands
  • Messages should be in Seychellois Creole, English, or French (the three official languages recognized by the constitution)
  • Include opt-out instructions in the first message of any new campaign
  • Process STOP requests immediately and send confirmation message

Example HELP/STOP responses in three languages:

English:

  • HELP response: "You are subscribed to [Company Name] updates. Reply STOP to unsubscribe. For support, contact [phone/email]."
  • STOP response: "You have been unsubscribed from [Company Name] messages. You will no longer receive SMS from us."

French:

  • Réponse HELP: "Vous êtes abonné aux mises à jour de [Company Name]. Répondez STOP pour vous désabonner. Pour assistance, contactez [phone/email]."
  • Réponse STOP: "Vous avez été désabonné des messages de [Company Name]. Vous ne recevrez plus de SMS de notre part."

Seychellois Creole:

  • Repons HELP: "Ou abonnen avek [Company Name] update. Repond STOP pou dezabonnen. Pou swiv, kontakte [phone/email]."
  • Repons STOP: "Ou finn dezabonnen depi [Company Name] mesaz. Ou pa pou resevwar SMS ankor."

Source: Constitution of Seychelles; official language status confirmed since 1978 for Seychellois Creole.

Do Not Call / Do Not Disturb Registries

While Seychelles does not maintain an official Do Not Call registry, you should:

  • Maintain your own suppression lists
  • Honor opt-out requests immediately
  • Keep records of opted-out numbers
  • Regularly clean contact lists to remove unsubscribed numbers

Time Zone Sensitivity

Seychelles follows SCT (Seychelles Time, UTC+4).

Recommended Sending Windows:

  • Business messages: 8:00 AM – 8:00 PM SCT
  • Urgent notifications: 24/7 permitted if essential (e.g., security alerts, emergency notifications, transactional confirmations, appointment reminders within 24 hours)
  • Marketing messages: 10:00 AM – 6:00 PM SCT on business days

Phone Number Options and SMS Sender IDs for Seychelles

Alphanumeric Sender ID

Operator network capability: Supported Registration requirements: Dynamic usage allowed without pre-registration Sender ID preservation: May be overwritten on Airtel network with generic alphanumeric ID

Alphanumeric Sender ID formatting rules:

  • Length: 3-11 characters maximum
  • Allowed characters: A-Z (uppercase), a-z (lowercase), 0-9 (digits), and space character (ASCII 32)
  • Restrictions: Cannot be purely numeric (use numeric sender ID instead)
  • Case sensitivity: Mixed case is supported but display may vary by handset
  • Generic IDs prohibited: Terms like "INFO", "SMS", "NOTICE" are typically blocked or replaced

What happens when Airtel overwrites sender IDs: Messages sent with alphanumeric sender IDs may be replaced with a generic identifier on the Airtel network. The exact generic ID varies but typically appears as a short alphanumeric code. Messages are still delivered, but you lose branding. This occurs on a best-effort basis and is beyond the control of SMS platforms.

Best practices for sender ID selection:

  • Choose a recognizable brand name or abbreviation
  • Keep it short (8 characters or less recommended) for better display on all devices
  • Avoid special characters that may cause encoding issues
  • Test sender IDs on both Airtel and Cable & Wireless networks before large campaigns
  • Use the same sender ID consistently to build recipient recognition
  • For critical transactional messages, include company name in the message body as backup

Source: Twilio Alphanumeric Sender ID documentation; BSG World Alphanumeric Sender ID; Vonage Seychelles SMS Features.

Long Codes

Domestic vs. International:

  • Domestic long codes: Supported by operators but not currently available through major platforms
  • International long codes: Limited support

Sender ID preservation: Variable depending on carrier Provisioning time: N/A for domestic, varies for international Use cases: Transactional messaging, alerts, notifications

International long codes for Seychelles: UK, US, and European long codes may work for outbound messaging to Seychelles, but delivery rates and sender ID preservation vary significantly by carrier. Test with specific numbers before deployment. Contact your SMS provider for carrier-specific routing options.

Short Codes

Support: Available through local carriers Provisioning time: Not currently supported through major platforms Use cases: High-volume messaging, marketing campaigns, 2FA

Acquiring short codes directly: Contact Airtel Seychelles or Cable & Wireless Seychelles directly to inquire about short code availability, pricing, and provisioning. Expect a multi-week to multi-month provisioning timeline and higher costs compared to alphanumeric sender IDs. Short codes are ideal for high-volume use cases (>100,000 messages/month) where consistent branding and reliability are critical.

Sender ID type comparison:

TypeCostProvisioning TimeBranding ControlBest For
AlphanumericLowImmediateModerate (may be overwritten)Most use cases, quick deployment
Long CodeMediumDays to weeksHighTwo-way messaging, dedicated number
Short CodeHighWeeks to monthsVery highHigh-volume campaigns, premium services

Restricted SMS Content, Industries, and Use Cases

Restricted Industries and Content:

  • Gambling and betting services
  • Adult content or services
  • Cryptocurrency promotions
  • Unauthorized financial services
  • Political messaging without proper authorization (requires approval from relevant government authority or electoral commission for campaign-related messaging)
  • Pharmaceutical products and health claims (avoid making unverified medical claims or promoting prescription medications without proper authorization)

Example prohibited content:

  • "Win big at [Casino Name]! Click here to claim your bonus"
  • "Buy Bitcoin now – 10x returns guaranteed!"
  • "Miracle cure for diabetes – order today"
  • "Vote for [Candidate] – send your support now" (without electoral commission approval)

Content Filtering

Known Carrier Rules:

  • URLs may trigger spam filters
  • Multiple exclamation marks often flagged (3 or more in a single message)
  • All-caps messages may be blocked or deprioritized
  • Excessive use of symbols (!!!, $$$, etc.)

Best Practices to Avoid Filtering:

  • Use clear, professional language
  • Avoid excessive punctuation (limit to 1-2 exclamation marks maximum)
  • Use mixed case instead of all caps (e.g., "Special Offer" instead of "SPECIAL OFFER")
  • Include company name in sender ID
  • Limit URL usage in messages (maximum 1 URL per message recommended)
  • Avoid spam trigger words: "FREE", "WINNER", "CLICK NOW", "URGENT!!!"

Content filtering checklist:

  • Message uses mixed case (not all caps)
  • Punctuation limited to 1-2 exclamation marks
  • Maximum 1 URL included
  • No spam trigger words ("FREE", "WINNER", etc.)
  • Company name in sender ID or message body
  • Message length within limits (160 GSM-7 or 70 Unicode)
  • No prohibited content (gambling, adult, crypto)

Best Practices for Sending SMS in Seychelles

Messaging Strategy

  • Keep messages under 160 characters when possible (or 70 for Unicode)
  • Include clear call-to-action
  • Use personalization tokens thoughtfully (first name, account number)
  • Maintain consistent sender ID across all campaigns

Effective vs. Ineffective Message Templates:

❌ Ineffective (marketing): "URGENT!!! AMAZING OFFER!!! Click here NOW to WIN BIG PRIZES and save HUGE on everything!!! Limited time only!!! Act fast!!!" Issues: All caps, excessive punctuation, spam trigger words, no clear sender or value proposition

✅ Effective (marketing): "Hi Sarah, enjoy 20% off your next purchase at BeauBelle. Use code SAVE20 at checkout. Valid until March 15. Reply STOP to opt out." Strengths: Personalized, specific offer, clear expiration, professional tone, opt-out included

❌ Ineffective (transactional): "Your order has been processed and will be shipped soon. Thank you for your business." Issues: Vague, no tracking info, no actionable next steps

✅ Effective (transactional): "Your order #12345 shipped! Track it here: [short URL]. Est. delivery: March 10. Questions? Call +248 4 123456." Strengths: Order number, tracking link, delivery estimate, support contact

Sending Frequency and Timing

  • Limit marketing messages to 2-4 per month per recipient
  • Respect local holidays and weekends
  • Avoid sending during major cultural or religious events
  • Space out messages to prevent recipient fatigue

Major Seychelles Public Holidays (2025):

  • January 1-2: New Year's Day & Holiday
  • April 18: Good Friday
  • April 19: Easter Saturday
  • April 21: Easter Monday
  • May 1: Labour Day
  • June 18: Constitution Day
  • June 19: Corpus Christi
  • June 29: Independence (National) Day
  • August 15: Assumption Day
  • November 1: All Saints Day
  • December 8: The Feast of the Immaculate Conception
  • December 25: Christmas Day

Cultural events to avoid (typically October): Kreol Festival (Festival Kreol) – a month-long celebration of Creole culture.

Note: When a public holiday falls on a Sunday, the following Monday becomes a public holiday. Plan SMS campaigns accordingly and avoid sending marketing messages on or immediately before major holidays.

Source: Seychelles Foreign Affairs Department - Public Holidays.

Engagement benchmarks by message frequency:

  • 1-2 messages/month: Typical opt-out rate 0.5-1%
  • 3-4 messages/month: Typical opt-out rate 1-2%
  • 5+ messages/month: Typical opt-out rate 3-5% (indicates over-messaging)

Note: Acceptable opt-out rates vary by industry and relationship strength. Transactional messages typically have lower opt-out rates than marketing messages.

Localization

  • Official languages: Seychellois Creole (spoken natively by ~95% of population), English, and French
  • Seychellois Creole is highly effective for local engagement and cultural resonance
  • English is widely used for formal business communications
  • French is popular among Franco-Seychellois communities
  • Use appropriate date formats (DD/MM/YYYY)
  • Account for local cultural nuances

Language selection strategy:

  • Seychellois Creole: Use for consumer-facing marketing, local community engagement, informal communications, and messages targeting the general population
  • English: Use for formal business communications, B2B messaging, government-related notifications, and international audiences
  • French: Use when targeting Franco-Seychellois communities, tourism sector, or when formality and elegance are desired
  • Mixed approach: For broad campaigns, consider A/B testing messages in different languages to identify which resonates best with your specific audience

Sample messages in all three languages (promotional):

English: "Spring Sale at Island Store! Get 25% off all electronics. Visit us at Victoria or shop online. Offer ends April 30. Reply STOP to opt out."

French: "Soldes de printemps chez Island Store ! 25% de réduction sur tous les appareils électroniques. Visitez-nous à Victoria ou achetez en ligne. Offre valable jusqu'au 30 avril. Répondez STOP pour vous désabonner."

Seychellois Creole: "Spring Sale dan Island Store! Ganyen 25% reduksyon lor tou aparey elektronik. Vizit nou dan Victoria oubyen aset online. Lofr fini 30 Avril. Repond STOP pou dezabonnen."

Source: Constitution of Seychelles; language usage statistics from census and linguistic studies.

Opt-Out Management

  • Process opt-outs within 24 hours
  • Maintain centralized opt-out database
  • Send opt-out confirmation message
  • Regular audit of opt-out compliance

Opt-out database schema recommendations:

sql
CREATE TABLE sms_opt_outs (
  id SERIAL PRIMARY KEY,
  phone_number VARCHAR(20) NOT NULL UNIQUE,
  opt_out_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  opt_out_source VARCHAR(50) NOT NULL, -- 'STOP_REPLY', 'WEB_FORM', 'MANUAL'
  campaign_id VARCHAR(100), -- Campaign from which they opted out
  reason TEXT, -- Optional: User-provided reason
  confirmed BOOLEAN DEFAULT FALSE, -- Confirmation message sent
  INDEX idx_phone (phone_number),
  INDEX idx_date (opt_out_date)
);

Testing and Monitoring

  • Test across major local carriers (Airtel and Cable & Wireless)
  • Monitor delivery rates by carrier
  • Track engagement metrics
  • Regular A/B testing of message content
  • Document and analyze failure patterns

Key Performance Indicators (KPIs):

  • Delivery rate: Target 95%+ for transactional, 90%+ for marketing
  • Bounce rate: Should be <5% (higher rates indicate data quality issues)
  • Opt-out rate: Aim for <2% per campaign (higher rates indicate poor targeting or message relevance)
  • Response rate (for messages with CTAs): Varies by industry, but 5-10% is typical for well-targeted campaigns
  • Time-to-delivery: Should be <30 seconds for 95% of messages

Note: Acceptable thresholds vary by use case. Transactional messages should have higher delivery rates than marketing messages. If delivery rates drop below 85%, investigate carrier issues, sender ID problems, or content filtering.

Monitoring dashboard recommendations:

  1. Real-time metrics: Message volume, delivery rate, error rate by carrier
  2. Trend analysis: Daily/weekly/monthly delivery patterns, seasonal variations
  3. Alerting thresholds:
    • Delivery rate drops below 85%
    • Error rate exceeds 10%
    • Opt-out rate exceeds 3% in single campaign
    • API latency exceeds 5 seconds
  4. Tools to consider: Grafana + Prometheus, Datadog, CloudWatch, custom dashboards using SMS provider APIs

SMS API Integrations for Seychelles: Implementation Guide

Twilio

Twilio provides a robust SMS API for sending messages to Seychelles.

typescript
import * as Twilio from 'twilio';

// Initialize Twilio client with your credentials
const client = new Twilio(
  process.env.TWILIO_ACCOUNT_SID,
  process.env.TWILIO_AUTH_TOKEN
);

// Function to send SMS to Seychelles
async function sendSMSToSeychelles(
  to: string,
  message: string,
  senderId: string
) {
  try {
    // Ensure phone number is in E.164 format for Seychelles (+248)
    const formattedNumber = to.startsWith('+248') ? to : `+248${to}`;

    const response = await client.messages.create({
      body: message,
      from: senderId,  // Your approved sender ID
      to: formattedNumber,
      statusCallback: 'https://your-domain.com/sms/status', // Webhook for delivery status
    });

    console.log(`Message sent successfully! SID: ${response.sid}`);
    return response;
  } catch (error) {
    console.error('Error sending message:', error);
    throw error;
  }
}

Twilio pricing and delivery rates:

  • Pricing: Approximately $0.11-0.13 per message to Seychelles (check current rates on Twilio's pricing page)
  • Typical delivery success rate: 92-96% across both carriers
  • Failed messages are not charged

Twilio rate limits:

  • Default: 1 message per second per phone number (long code)
  • Alphanumeric sender IDs: Varies by destination, typically 10-100 messages per second
  • Contact Twilio to request higher throughput for high-volume use cases

Source: Twilio Rate Limits Documentation.

Sinch

Sinch offers comprehensive SMS capabilities for Seychelles through their REST API:

typescript
import axios from 'axios';

class SinchSMSService {
  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) {
    try {
      // Format phone number in E.164 format
      const formattedNumber = to.startsWith('+248') ? to : `+248${to}`;

      const response = await axios.post(
        `${this.baseUrl}/${this.serviceId}/batches`,
        {
          from: "YourSenderID",
          to: [formattedNumber],
          body: message
        },
        {
          headers: {
            'Authorization': `Bearer ${this.apiToken}`,
            'Content-Type': 'application/json'
          }
        }
      );

      return response.data;
    } catch (error) {
      console.error('Sinch SMS Error:', error);
      throw error;
    }
  }
}

Sinch rate limits:

  • API rate limit: 800 requests per second across all apps
  • Message throughput: Varies by account configuration, contact Sinch for specific limits

Source: Sinch Rate Limits Documentation.

MessageBird

MessageBird provides a straightforward API for SMS delivery to Seychelles:

typescript
import messagebird from 'messagebird';

class MessageBirdService {
  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
      }, (err: any, response: any) => {
        if (err) {
          reject(err);
        } else {
          resolve(response);
        }
      });
    });
  }
}

MessageBird rate limits: Specific rate limits vary by account type and plan. Default limits are typically sufficient for most use cases. Contact MessageBird for enterprise-level throughput requirements.

Plivo

Plivo's API integration for Seychelles SMS messaging:

typescript
import plivo from 'plivo';

class PlivoSMSService {
  private client: any;

  constructor(authId: string, authToken: string) {
    this.client = new plivo.Client(authId, authToken);
  }

  async sendSMS(to: string, message: string, senderId: string) {
    try {
      const response = await this.client.messages.create({
        src: senderId,
        dst: to,
        text: message,
      });
      return response;
    } catch (error) {
      console.error('Plivo SMS Error:', error);
      throw error;
    }
  }
}

Plivo rate limits: Default limits are typically around 100 messages per second. Contact Plivo for higher throughput requirements.

Provider comparison and selection guide:

ProviderBest ForStrengthsPricing Range
TwilioReliability, documentation, ecosystemExcellent docs, large developer community, robust features$0.11-0.13/msg
SinchHigh-volume, global reachVery high throughput, enterprise featuresContact for quote
MessageBirdEuropean companies, multi-channelEasy integration, good European support$0.10-0.12/msg
PlivoCost-conscious, simple use casesCompetitive pricing, straightforward API$0.09-0.11/msg

Note: Pricing estimates are approximate and vary based on volume commitments and account type. Always check current provider rates.

API Rate Limits and Throughput

Provider-specific rate limits summary:

ProviderDefault Rate LimitNotes
Twilio1 MPS (long code), 10-100 MPS (alphanumeric)Can be increased upon request
Sinch800 requests/second (API), varies by accountVery high throughput available
MessageBirdVaries by planContact for specific limits
Plivo~100 MPSEnterprise plans available
Vonage~30 MPSCan be increased for high-volume senders
  • Batch processing recommended for volumes over 1000/hour
  • Implement exponential backoff for retry logic
  • Queue messages during peak times

Throughput Management Strategies:

  • Implement message queuing system (e.g., RabbitMQ, AWS SQS, Redis Queue)
  • Use batch APIs for bulk sending when available
  • Monitor delivery rates and adjust sending speed dynamically
  • Implement circuit breakers for error handling (stop sending after consecutive failures)
  • Distribute load across multiple sender IDs if needed

Example queuing implementation (RabbitMQ with exponential backoff):

typescript
import amqp from 'amqplib';

interface SMSMessage {
  to: string;
  body: string;
  senderId: string;
  retryCount?: number;
}

class SMSQueue {
  private connection: amqp.Connection | null = null;
  private channel: amqp.Channel | null = null;

  async connect() {
    this.connection = await amqp.connect(process.env.RABBITMQ_URL!);
    this.channel = await this.connection.createChannel();
    await this.channel.assertQueue('sms_queue', { durable: true });
  }

  async enqueue(message: SMSMessage) {
    if (!this.channel) throw new Error('Channel not initialized');

    this.channel.sendToQueue(
      'sms_queue',
      Buffer.from(JSON.stringify(message)),
      { persistent: true }
    );
  }

  async processQueue(sendFunction: (msg: SMSMessage) => Promise<void>) {
    if (!this.channel) throw new Error('Channel not initialized');

    this.channel.consume('sms_queue', async (msg) => {
      if (msg) {
        const smsMessage: SMSMessage = JSON.parse(msg.content.toString());

        try {
          await sendFunction(smsMessage);
          this.channel!.ack(msg);
        } catch (error) {
          // Exponential backoff: retry with increasing delay
          const retryCount = (smsMessage.retryCount || 0) + 1;
          const maxRetries = 3;

          if (retryCount < maxRetries) {
            const delay = Math.pow(2, retryCount) * 1000; // 2s, 4s, 8s
            setTimeout(() => {
              this.enqueue({ ...smsMessage, retryCount });
            }, delay);
          }

          this.channel!.ack(msg); // Remove from queue regardless
        }
      }
    });
  }
}

Source: Twilio Rate Limits; Sinch Rate Limits; provider documentation.

Error Handling and Reporting

Common Error Scenarios:

Error TypeHTTP StatusCommon CodesResolution
Invalid phone number40021211, 21614 (landline)Validate E.164 format, check for landlines
Network timeout408, 504-Retry with exponential backoff
Rate limit exceeded42920429 (Twilio)Implement rate limiting, queue messages
Invalid sender ID400, 40321212Use allowed sender ID format (3-11 chars)
Insufficient balance402, 40320003Top up account balance
Carrier rejection400, 500VariesCheck content filters, contact provider

Troubleshooting guide:

  1. Error 21614 (Landline): Filter landline numbers using phone lookup APIs before sending
  2. Error 21211 (Invalid Number): Validate phone numbers match Seychelles format (+248XXXXXXX)
  3. Error 20429 (Rate Limit): Implement message queuing and respect rate limits
  4. Error 21212 (Invalid Sender ID): Ensure sender ID is 3-11 characters, alphanumeric only
  5. High bounce rates: Check for content filtering issues, test message content
  6. Low delivery rates on specific carrier: Contact SMS provider for carrier-specific routing issues

Logging Best Practices:

typescript
interface SMSLog {
  messageId: string;
  timestamp: Date;
  recipient: string;
  status: string;
  errorCode?: string;
  retryCount?: number;
  carrier?: string; // Airtel or Cable & Wireless
  senderId: string;
  messageLength: number;
  encoding: 'GSM-7' | 'UCS-2';
}

class SMSLogger {
  async logEvent(log: SMSLog): Promise<void> {
    // Store in database for analysis
    await db.smsLogs.insert(log);

    // Send to logging service
    console.log(JSON.stringify(log));

    // Alert on critical errors
    if (log.errorCode && ['21614', '20429', '20003'].includes(log.errorCode)) {
      await this.sendAlert(log);
    }
  }

  async sendAlert(log: SMSLog): Promise<void> {
    // Implement alerting logic (e.g., PagerDuty, email, Slack)
  }

  async queryLogs(filters: Partial<SMSLog>): Promise<SMSLog[]> {
    return await db.smsLogs.find(filters);
  }
}

Recap and Additional Resources

Key Takeaways

  1. Compliance Priorities:

    • Obtain explicit consent before sending marketing messages
    • Honor opt-out requests immediately (within 24 hours)
    • Respect sending hours (10 AM – 6 PM SCT for marketing)
    • Maintain proper records of consent and opt-outs
    • Prepare for Data Protection Act 2023 compliance (register as data user, implement security measures)
  2. Technical Considerations:

    • Use E.164 number formatting (+248XXXXXXX)
    • Keep messages within single SMS limits: 160 characters (GSM-7) or 70 characters (Unicode)
    • Implement proper error handling and retry logic
    • Monitor delivery rates by carrier (target 90%+ for marketing, 95%+ for transactional)
    • Test across both Airtel and Cable & Wireless networks
  3. Best Practices:

    • Keep messages concise and within character limits
    • Use approved alphanumeric sender IDs (3-11 characters)
    • Implement rate limiting according to provider guidelines
    • Regular testing and monitoring of delivery metrics
    • Respect Seychelles holidays and cultural events (especially Kreol Festival)
    • Consider language preferences (Creole for local, English for business, French for specific audiences)

Next Steps

  1. Review the Communications Act 2023 for compliance requirements
  2. Set up test accounts with preferred SMS providers (Twilio, Sinch, MessageBird, or Plivo)
  3. Implement proper logging and monitoring with KPI tracking
  4. Develop error handling strategies including retry logic and circuit breakers
  5. Prepare for Data Protection Act 2023 compliance by documenting consent collection processes
  6. Test sender IDs on both Airtel and Cable & Wireless networks

Estimated implementation timeline: 2-4 weeks for basic setup, 4-8 weeks for production-ready system with full compliance, monitoring, and error handling.

Resource requirements:

  • 1 developer (backend) for API integration and error handling
  • 1 developer (frontend/data) for opt-in/opt-out UI and database management
  • Compliance review (legal/compliance team) for consent and data protection
  • Testing across both carriers (budget for test messages)

Implementation checklist:

Phase 1: Planning & Setup (Week 1)

  • Choose SMS provider based on volume, budget, and feature needs
  • Create test account and obtain API credentials
  • Set up development environment with sample code
  • Review compliance requirements (Data Protection Act, SCRA guidelines)
  • Design database schema for contacts and opt-outs

Phase 2: Core Development (Weeks 2-3)

  • Implement API integration with error handling
  • Build phone number validation (E.164 format, landline filtering)
  • Create opt-in/opt-out UI and database
  • Implement message queuing system
  • Set up logging and monitoring dashboard
  • Build HELP/STOP command handling

Phase 3: Testing & Optimization (Weeks 3-4)

  • Test sender IDs on both Airtel and Cable & Wireless
  • Conduct message delivery tests (GSM-7 vs Unicode)
  • Test error handling and retry logic
  • Validate opt-out processing (24-hour SLA)
  • Perform load testing with queuing system

Phase 4: Compliance & Launch (Weeks 4-6)

  • Document consent collection processes
  • Prepare for Data Protection Commissioner registration
  • Create compliance audit procedures
  • Train team on SCRA guidelines and best practices
  • Conduct final security review
  • Deploy to production with monitoring

Phase 5: Monitoring & Iteration (Weeks 6-8)

  • Monitor KPIs daily (delivery rate, opt-out rate, errors)
  • Set up alerting for critical issues
  • Conduct A/B testing on message content
  • Analyze carrier-specific delivery patterns
  • Iterate on message templates based on engagement data

Frequently Asked Questions

Q: Can I send SMS to Seychelles without registering with SCRA? A: Currently, there are no formal registration requirements for bulk SMS senders. However, you must comply with general telecommunications guidelines and prepare for Data Protection Act 2023 compliance.

Q: What happens if I send a message longer than 160 characters? A: Since concatenation is not supported, messages exceeding 160 characters (GSM-7) or 70 characters (Unicode) may be truncated or fail to deliver. Split long messages manually or shorten them.

Q: Why is my sender ID being replaced on Airtel? A: Airtel may overwrite alphanumeric sender IDs with generic identifiers on a best-effort basis. This is beyond your control. Include your company name in the message body as backup for critical messages.

Q: How do I identify mobile vs. landline numbers in Seychelles? A: Use phone number lookup APIs (e.g., Twilio Lookup, Numverify) to verify number type before sending. Monitor error code 21614 to identify landline attempts.

Q: What's the best time to send marketing SMS in Seychelles? A: Send marketing messages between 10:00 AM – 6:00 PM SCT on business days. Avoid public holidays and the Kreol Festival in October.

Q: Which language should I use for SMS in Seychelles? A: Use Seychellois Creole for consumer marketing (highest local engagement), English for formal business communications, and French for Franco-Seychellois communities. Consider A/B testing to determine what works best for your audience.

Q: How quickly must I process opt-out requests? A: Process all opt-out requests within 24 hours and send a confirmation message. Maintain a centralized database of opted-out numbers.

Q: What delivery rate should I expect? A: Target 95%+ for transactional messages and 90%+ for marketing messages. If rates drop below 85%, investigate carrier issues, sender ID problems, or content filtering.

Additional Resources

SCRA Contact Information:

  • Website: https://www.scra.sc/
  • Physical Address: Bel Eau, Mahé, Seychelles
  • For inquiries regarding SMS regulations, telecommunications compliance, or licensing: Contact SCRA through their official website or visit their office during business hours