sms compliance

Sent logo
Sent TeamMay 3, 2025 / sms compliance / Article

Thailand SMS Guide: NBTC & PDPA Compliance, Sender ID Registration & API Setup

Complete Thailand SMS messaging guide: NBTC regulations, PDPA compliance requirements, alphanumeric sender ID registration (2-week process), Thai language encoding (UCS-2), and API integration for Twilio, Sinch, MessageBird, and Plivo.

Thailand SMS Best Practices, Compliance, and Features

Send SMS messages to Thailand mobile numbers with full regulatory compliance. This guide covers NBTC (National Broadcasting and Telecommunications Commission) regulations, PDPA (Personal Data Protection Act) requirements, and technical implementation for Thai SMS messaging. Learn how to register alphanumeric sender IDs, implement proper Thai language encoding (UCS-2), and integrate SMS APIs for Thailand's three major mobile carriers: AIS, DTAC, and True Move.

This guide covers compliance requirements, technical specifications, and production-ready code examples for Twilio, Sinch, MessageBird, and Plivo SDKs. Whether you're implementing authentication messages, marketing campaigns, or transactional notifications, you'll find essential information about time restrictions, opt-out management, and content filtering rules specific to Thailand's telecommunications ecosystem.

Thailand SMS Market Overview & Mobile Network Information

Locale name:Thailand
ISO code:TH
RegionAsia
Mobile country code (MCC)520
Dialing Code+66

Market Conditions: Thailand operates a vibrant mobile market with high SMS adoption rates alongside popular OTT messaging apps like LINE and WhatsApp. Three major mobile operators – AIS, DTAC, and True Move – serve a predominantly Android user base (approximately 75% market share as of 2024). While OTT messaging apps dominate personal communications, SMS remains crucial for business communications, particularly authentication, notifications, and marketing due to its reliability and universal reach.

Note: Verify market share statistics with recent industry reports, as mobile market dynamics change frequently.


SMS Features and Technical Capabilities for Thailand

Thailand offers robust SMS capabilities with support for concatenated messages and alphanumeric sender IDs. Two-way messaging is not supported, and MMS requires URL conversion.

Two-Way SMS Support in Thailand (A2P Messaging)

Two-way SMS is not supported in Thailand for A2P (Application-to-Person) messaging. Use one-way messaging for your communications – you cannot receive replies from recipients.

Alternative approaches for customer responses:

  • Direct customers to a web form or support portal
  • Use a dedicated support phone line for inquiries
  • Integrate with WhatsApp or LINE for two-way conversations
  • Include a customer service email address in your messages

Concatenated Messages (Segmented SMS)

Support: Yes, concatenation works for most sender ID types, though support may vary based on your specific sender ID.

Message length rules: Standard 160 characters per message segment using GSM-7 encoding.

Encoding considerations: Messages use GSM-7 encoding for Latin characters (160 characters) or UCS-2 for Thai language and special characters (70 characters per segment).

MMS Support

MMS messages automatically convert to SMS with an embedded URL link. When you send rich media content, the system generates a URL where recipients can access the media and includes this URL in the SMS message body. Use full-length URLs rather than shortened ones – URL shorteners are considered prohibited content in Thailand.

Recipient Phone Number Compatibility

Number Portability

Number portability is available in Thailand, allowing users to keep their phone numbers when switching between mobile operators. This feature does not significantly impact SMS delivery or routing, as messages route properly to the current carrier.

Sending SMS to Landlines

You cannot send SMS to landline numbers in Thailand. Attempts to send messages to landline numbers result in a 400 response with error code 21614. The message will not appear in logs, and your account will not be charged.

Validate mobile numbers before sending:

typescript
function isValidThaiMobile(phoneNumber: string): boolean {
  // Thai mobile numbers start with 6, 8, or 9 after country code
  const mobilePattern = /^\+66[689]\d{8}$/;
  return mobilePattern.test(phoneNumber);
}

Thailand SMS Compliance: NBTC Regulations & PDPA Requirements

Thailand's SMS communications are regulated by the National Broadcasting and Telecommunications Commission (NBTC), which enforces guidelines for commercial messaging. The Personal Data Protection Act (PDPA), effective May 2022, governs how businesses handle customer data and consent management. (NBTC Official Website | Thailand PDPA, accessed January 2025)

Important: The PDPA B.E. 2562 (2019) came into full enforcement on June 1, 2022. Maintain compliance with both NBTC telecommunications regulations and PDPA data protection requirements.

Explicit Consent Requirements:

  • Obtain written or electronic consent before sending any marketing messages
  • Maintain consent records for at least 3 months (recommended: retain for audit purposes)
  • Clearly state the purpose of messaging during opt-in
  • Specify the types of messages customers will receive

Best Practices for Documentation:

  • Store timestamp and source of consent
  • Maintain audit trails of consent changes
  • Use double opt-in for marketing lists
  • Provide clear terms and conditions during signup

HELP/STOP and Other Commands

Support both English and Thai opt-out keywords:

English keywords:

  • STOP (unsubscribe)
  • CANCEL (unsubscribe)
  • HELP (information)

Thai keywords:

  • หยุด (stop)
  • ยกเลิก (cancel)
  • ช่วยเหลือ (help)

Implementation requirements:

  • Send opt-out confirmation messages in the same language as the opt-out request
  • Process commands within 24 hours of receipt
  • Include your company name and contact information in HELP responses
  • Provide clear instructions on how to opt back in

Example HELP response structure:

[Company Name] SMS Service. Reply STOP to unsubscribe. Support: [email/phone]. Msg&data rates may apply.

Note: While there is no centralized opt-out standard in Thailand, implementing bilingual opt-out support is considered best practice for compliance and user experience.

Do Not Call / Do Not Disturb Registries

Thailand does not maintain a centralized Do Not Call registry. Maintain your own suppression lists:

  • Honor opt-out requests immediately
  • Remove numbers within 24 hours of receiving an opt-out request
  • Regularly clean contact lists to remove inactive numbers

Time Zone Sensitivity

Prohibited hours for marketing messages: 9 PM – 9 AM (ICT – UTC+7)

Exempt message types: Emergency and transactional messages are exempt from time restrictions.

Holiday considerations: Avoid sending marketing messages during major Buddhist holidays and weekends.

Validate sending time before dispatching:

typescript
function isValidSendingTime(): boolean {
  const now = new Date();
  const bangkokTime = new Date(now.toLocaleString('en-US', { timeZone: 'Asia/Bangkok' }));
  const hour = bangkokTime.getHours();

  // Marketing messages allowed between 9 AM and 9 PM
  return hour >= 9 && hour < 21;
}

Thailand SMS Sender ID Options: Alphanumeric, Long Codes & Short Codes

Alphanumeric Sender ID Registration for Thailand

Operator network capability: Fully supported

Registration requirements: Pre-registration required; 2-week approval process typically required

Sender ID preservation: Yes, displayed as registered

Additional requirements:

  • Must be 11 characters or less
  • Cannot contain special characters
  • Must match registered business name

Important: Allow adequate lead time for sender ID registration before campaign launches. Registration timelines may vary by operator and may be longer during high-volume periods.

Long Codes

Domestic vs. International:

  • Domestic long codes supported but not available to international businesses
  • International long codes not supported

Sender ID preservation: No, international numbers are typically overwritten

Provisioning time: N/A for international businesses

Use cases: Not recommended for international businesses

Short Codes

Support: Not available for international businesses

Provisioning time: N/A

Use cases: Reserved for domestic entities only


Prohibited Content & Industry Restrictions for Thailand SMS

Prohibited Content and Industries:

  • Gambling and betting services
  • Adult content or explicit material
  • Political messaging
  • Religious content
  • Financial loan solicitations
  • Controlled substances
  • Cannabis products
  • Alcohol-related content
  • Firearms and weapons

Financial Services Restrictions:

  • Obtain Bank of Thailand license for loan-related content
  • Prohibit URLs in banking/financial messages

Content Filtering

Carrier Filtering Rules:

  • URL shorteners automatically blocked
  • Keywords related to restricted industries filtered
  • Messages containing spam indicators blocked

Best Practices to Avoid Filtering:

  • Use full-length, registered URLs only
  • Avoid excessive punctuation
  • Don't use all caps
  • Maintain consistent sender IDs
  • Register URLs with carriers before use

Best Practices for Thailand SMS Campaigns & Delivery Optimization

Messaging Strategy

Structure your messages for clarity:

  • Keep messages under 160 characters when possible
  • Include clear call-to-action
  • Use registered sender IDs consistently
  • Avoid promotional language in transactional messages

Message template examples:

Authentication/OTP:

Your [Company] verification code is 123456. Valid for 5 minutes. Do not share this code.

Transactional notification:

[Company]: Your order #12345 has shipped. Track at [URL]. Questions? Contact [support].

Marketing message:

[Company]: 20% off all items this weekend. Shop now at [URL]. Reply STOP to unsubscribe.

Bilingual message formatting:

  • English first, Thai second (or vice versa based on audience preference)
  • Separate languages with a clear delimiter (e.g., " | ")
  • Keep total character count under encoding limits

Sending Frequency and Timing

  • Limit to one promotional message per day per recipient
  • Respect quiet hours (9 PM – 9 AM)
  • Avoid sending during major holidays
  • Space out bulk campaigns to prevent network congestion

Localization

  • Support both Thai and English content
  • Use proper Thai character encoding (UCS-2)
  • Consider cultural sensitivities in message content
  • Provide customer support in both languages

Opt-Out Management

  • Process opt-outs within 24 hours
  • Send confirmation of opt-out
  • Maintain unified suppression lists across campaigns
  • Audit opt-out compliance regularly

Testing and Monitoring

Test across all major carriers: AIS, DTAC, True Move

Monitor key metrics:

  • Delivery rates by carrier
  • Opt-out rates and patterns
  • URL click-through rates for compliance

Regular testing:

  • Test opt-out functionality regularly
  • Verify proper encoding for Thai characters
  • Check sender ID display across carriers

Set up monitoring with recommended tools:

  • Use Datadog, New Relic, or similar for real-time alerting
  • Implement Prometheus and Grafana for metrics visualization
  • Configure Sentry for error tracking and reporting
  • Set up custom dashboards for delivery rate monitoring

Thailand SMS FAQ: Common Questions & Answers

How long does it take to register an alphanumeric sender ID in Thailand?

Sender ID registration in Thailand typically requires a 2-week approval process. Allow adequate lead time before campaign launches, as timelines may vary by operator and extend during high-volume periods.

What character encoding should I use for Thai language SMS?

Use UCS-2 encoding for Thai language messages. UCS-2 provides 70 characters per SMS segment, compared to GSM-7 encoding which provides 160 characters for Latin characters only.

Can I send marketing SMS in Thailand at any time?

No. Prohibit marketing messages between 9 PM and 9 AM (ICT – UTC+7). Emergency and transactional messages are exempt from these time restrictions. Consider Buddhist holidays and weekends when planning campaigns.

Do I need PDPA compliance for SMS marketing in Thailand?

Yes. The Personal Data Protection Act (PDPA) came into full enforcement on June 1, 2022. Obtain written or electronic consent before sending marketing messages and maintain consent records for at least 3 months (recommended: retain for audit purposes).

Are URL shorteners allowed in Thailand SMS messages?

No. URL shorteners are automatically blocked by carriers in Thailand. Use full-length, registered URLs only. Register URLs with carriers before use to avoid filtering.

Which SMS providers support Thailand messaging?

Major SMS providers supporting Thailand include Twilio (Node.js 14-22 LTS), Sinch (@sinch/sdk-core with OAuth2/API Token), MessageBird (Node.js >= 0.10), and Plivo. All support Thai language encoding and pre-registered sender IDs.

Can I receive SMS replies in Thailand?

No. Two-way SMS is not supported for A2P (Application-to-Person) messaging in Thailand. Use one-way messaging only – you cannot receive replies from recipients.

What happens if I send SMS to a landline in Thailand?

Attempts to send SMS to landline numbers result in a 400 response with error code 21614. The message will not appear in logs, and your account will not be charged.

How do I implement opt-out functionality for Thailand SMS?

Support both English and Thai keywords: STOP/หยุด (stop), CANCEL/ยกเลิก (cancel), HELP/ช่วยเหลือ (help). Send confirmation messages in the same language as the opt-out request. Process commands within 24 hours and maintain your own suppression lists.

What content is prohibited in Thailand SMS messages?

Prohibited content includes gambling, adult content, political messaging, religious content, financial loan solicitations (without Bank of Thailand license), controlled substances, cannabis products, alcohol, and firearms. URLs are prohibited in banking/financial messages.


Thailand SMS API Integration: Twilio, Sinch, MessageBird & Plivo

Twilio SMS API for Thailand

Twilio provides robust SMS capabilities for Thailand through their REST API. Authentication uses your Account SID and Auth Token, with support for pre-registered sender IDs. Twilio Node.js SDK supports Node.js 14, 16, 18, 20, and 22 LTS as of January 2025. (npm: twilio, accessed January 2025)

typescript
import twilio from 'twilio';

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

// Function to send SMS to Thailand
async function sendThaiSMS(
  to: string,
  message: string,
  senderId: string
) {
  try {
    // Validate sending time for marketing messages
    if (!isValidSendingTime()) {
      throw new Error('Cannot send marketing messages between 9 PM and 9 AM ICT');
    }

    // Ensure proper formatting for Thailand numbers
    const formattedNumber = to.startsWith('+66') ? to : `+66${to.substring(1)}`;

    const response = await client.messages.create({
      body: message,
      from: senderId, // Must be pre-registered
      to: formattedNumber,
      // Optional parameters for delivery tracking
      statusCallback: 'https://your-webhook.com/status'
    });

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

function isValidSendingTime(): boolean {
  const now = new Date();
  const bangkokTime = new Date(now.toLocaleString('en-US', { timeZone: 'Asia/Bangkok' }));
  const hour = bangkokTime.getHours();

  // Marketing messages allowed between 9 AM and 9 PM
  return hour >= 9 && hour < 21;
}

Handle delivery status webhooks:

typescript
import express from 'express';

const app = express();
app.use(express.urlencoded({ extended: false }));

app.post('/status', (req, res) => {
  const { MessageSid, MessageStatus, ErrorCode } = req.body;

  console.log(`Message ${MessageSid}: ${MessageStatus}`);

  if (ErrorCode) {
    console.error(`Error ${ErrorCode} for message ${MessageSid}`);
    // Handle specific Thailand errors
    if (ErrorCode === '21614') {
      console.error('Attempted to send to landline number');
    }
  }

  res.sendStatus(200);
});

Sinch SMS API for Thailand

Sinch offers SMS services with support for Thai language and pre-registered sender IDs. Use @sinch/sdk-core for OAuth2 or API Token authentication. The SDK supports all current Sinch APIs, including SMS API with region-specific configurations. (npm: @sinch/sdk-core | Sinch SMS API Docs, accessed January 2025)

typescript
import { SinchClient } from '@sinch/sdk-core';

class ThaiSMSService {
  private client: SinchClient;

  constructor() {
    this.client = new SinchClient({
      servicePlanId: process.env.SINCH_SERVICE_PLAN_ID,
      apiToken: process.env.SINCH_API_TOKEN,
      smsRegion: 'us' // Default region for SMS API
    });
  }

  async sendMessage(
    to: string,
    message: string,
    senderId: string
  ) {
    try {
      const response = await this.client.sms.batches.send({
        to: [to],
        from: senderId,
        body: message,
        // Note: Use 'unicode' or ensure proper encoding for Thai characters
        delivery_report: 'summary'
      });

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

MessageBird SMS API for Thailand

MessageBird provides SMS API access with specific support for Thailand's regulations and character encoding. MessageBird SDK requires Node.js >= 0.10. (npm: messagebird, accessed January 2025)

typescript
import messagebird from 'messagebird';

class ThaiMessageBirdService {
  private client: any;

  constructor() {
    this.client = messagebird(process.env.MESSAGEBIRD_API_KEY);
  }

  sendSMS(
    recipient: string,
    message: string,
    senderId: string
  ): Promise<any> {
    return new Promise((resolve, reject) => {
      this.client.messages.create({
        originator: senderId,
        recipients: [recipient],
        body: message,
        datacoding: 'unicode', // For Thai language support
        type: 'flash' // Optional for urgent messages
      }, (err: any, response: any) => {
        if (err) {
          reject(err);
        } else {
          resolve(response);
        }
      });
    });
  }
}

Plivo SMS API for Thailand

Plivo's API supports Thailand SMS with features for handling Thai language and compliance requirements. Plivo Node.js SDK supports Node.js with environment variable authentication recommended. (npm: plivo, accessed January 2025)

typescript
import plivo from 'plivo';

class ThaiPlivoService {
  private client: any;

  constructor() {
    this.client = new plivo.Client(
      process.env.PLIVO_AUTH_ID,
      process.env.PLIVO_AUTH_TOKEN
    );
  }

  async sendSMS(
    to: string,
    message: string,
    senderId: string
  ) {
    try {
      const response = await this.client.messages.create({
        src: senderId,
        dst: to,
        text: message,
        url_strip_query_params: false, // Important for URL tracking
        powerpack_uuid: process.env.PLIVO_POWERPACK_ID // Optional for better routing
      });

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

API Rate Limits and Throughput

Default rate limits vary by provider (typically 1-10 messages per second)

Implementation strategies:

  • Implement exponential backoff for retry logic
  • Use queuing systems (Redis, RabbitMQ) for high-volume sending
  • Batch messages when possible (up to 100 recipients per request)

Example rate limiting with retry logic:

typescript
import { Queue } from 'bullmq';
import Redis from 'ioredis';

const connection = new Redis({
  host: process.env.REDIS_HOST,
  port: parseInt(process.env.REDIS_PORT || '6379'),
  maxRetriesPerRequest: null
});

const smsQueue = new Queue('thailand-sms', { connection });

async function queueSMS(to: string, message: string, senderId: string) {
  await smsQueue.add('send-sms',
    { to, message, senderId },
    {
      attempts: 3,
      backoff: {
        type: 'exponential',
        delay: 2000
      },
      removeOnComplete: true
    }
  );
}

Note: Verify current rate limits with your SMS provider, as they may change based on account type and volume commitments.

Error Handling and Reporting

Implement comprehensive logging with Winston or similar tools.

Track delivery receipts via webhooks to monitor message status in real time.

Monitor common error codes:

  • 4xx: Client errors (invalid numbers, sender ID issues)
  • 5xx: Server errors (retry with backoff)

Store message metadata for troubleshooting and audit compliance.

Complete error handling example:

typescript
import winston from 'winston';

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

async function sendSMSWithErrorHandling(
  to: string,
  message: string,
  senderId: string
) {
  const metadata = {
    to,
    senderId,
    timestamp: new Date().toISOString(),
    messageLength: message.length
  };

  try {
    const response = await sendThaiSMS(to, message, senderId);

    logger.info('SMS sent successfully', {
      ...metadata,
      messageSid: response.sid,
      status: response.status
    });

    return response;
  } catch (error: any) {
    logger.error('SMS send failed', {
      ...metadata,
      errorCode: error.code,
      errorMessage: error.message,
      stackTrace: error.stack
    });

    // Handle specific error codes
    if (error.code === 21614) {
      logger.warn('Attempted to send to landline', metadata);
    }

    throw error;
  }
}

Set up webhook endpoints for delivery status:

typescript
app.post('/webhook/delivery', express.json(), (req, res) => {
  const { messageSid, status, errorCode, to } = req.body;

  logger.info('Delivery status update', {
    messageSid,
    status,
    to,
    errorCode: errorCode || 'none'
  });

  // Update your database with delivery status
  // Trigger alerts for failed deliveries

  res.sendStatus(200);
});

Recap and Additional Resources

Key Takeaways

  1. Compliance Priorities

    • Pre-register sender IDs (allow 2 weeks for approval)
    • Respect time restrictions (9 PM – 9 AM prohibited for marketing)
    • Maintain proper consent records (minimum 3 months retention)
  2. Technical Considerations

    • Use UCS-2 encoding for Thai language (70 characters per segment)
    • Implement proper error handling with retry logic
    • Monitor delivery rates across all carriers
    • Use full-length URLs only (URL shorteners blocked)
  3. Next Steps

    • Review NBTC regulations and PDPA requirements
    • Register sender IDs with your chosen SMS provider
    • Implement consent management system with audit trails
    • Set up bilingual opt-out keyword handling
    • Test message delivery across AIS, DTAC, and True Move

Official Resources

Additional Support

For technical assistance:

  • Contact your SMS provider's support team for implementation questions
  • Join Stack Overflow and Reddit developer communities for best practices
  • Subscribe to provider status pages for service updates

For compliance matters:

  • Consult with local legal counsel familiar with PDPA regulations
  • Review NBTC guidelines regularly for regulatory updates
  • Contact NBTC at +66 2 670 8888 or via their contact form

Developer communities:

Frequently Asked Questions

How to send SMS messages in Thailand?

Use a reputable SMS API provider like Twilio, Sinch, MessageBird, or Plivo. Pre-register your alphanumeric sender ID, ensure it's 11 characters or less, and format recipient numbers with +66. Remember to handle Thai language using UCS-2 encoding and comply with local regulations.

What is the best SMS API for Thailand?

Several providers offer robust SMS APIs for Thailand, including Twilio, Sinch, MessageBird, and Plivo. Each offers features like pre-registered sender IDs, Thai language support (UCS-2 encoding), and compliance tools, though specific capabilities and pricing may vary.

Why does Thailand not support two-way SMS?

Thailand restricts A2P (Application-to-Person) messaging to one-way communication. Businesses can send messages but cannot receive replies directly via SMS. This is a regulatory restriction enforced by the NBTC.

When should I send marketing SMS in Thailand?

Marketing messages are allowed between 9 AM and 9 PM ICT (UTC+7). Avoid sending messages outside these hours to comply with local regulations. Consider Buddhist holidays and weekends when planning campaigns to maximize engagement.

Can I use a short code for SMS in Thailand?

Short codes are not available for international businesses in Thailand. They are reserved for domestic entities. International businesses should use pre-registered alphanumeric sender IDs instead.

What is the character limit for SMS in Thailand?

Standard SMS messages use GSM-7 encoding for Latin characters, allowing 160 characters per segment. For Thai language and special characters, UCS-2 encoding is used, limiting messages to 70 characters per segment.

How to register an alphanumeric sender ID in Thailand?

Alphanumeric sender IDs require pre-registration with a 2-week approval process. The sender ID must be 11 characters or less, match your registered business name, and avoid special characters. Contact your SMS API provider for registration assistance.

What are the prohibited SMS content types in Thailand?

Restricted content includes gambling, adult material, political or religious content, financial loan solicitations, controlled substances, alcohol, and firearms. Financial services messages need a Bank of Thailand license, and URLs are prohibited in banking messages.

What are the rules for SMS opt-out in Thailand?

You must support both English and Thai opt-out keywords (STOP, CANCEL, HELP, and their Thai equivalents). Process opt-outs within 24 hours, send confirmation messages, and maintain suppression lists. Consent records must be kept for at least 3 months.

How to handle MMS messages in Thailand?

MMS messages are automatically converted to SMS with an embedded URL. The recipient can access the media content via this link. Avoid URL shorteners as they are prohibited; use full-length URLs instead.

What is the role of the NBTC in Thailand SMS?

The National Broadcasting and Telecommunications Commission (NBTC) regulates SMS communications in Thailand, enforcing strict guidelines for commercial messaging, content, and sender ID registration. They are the primary authority on SMS regulations.

How to ensure SMS compliance with Thailand's PDPA?

The Personal Data Protection Act (PDPA) governs data handling. Obtain explicit consent before sending marketing messages, clearly state the messaging purpose, and maintain consent records for at least three months. Follow best practices for documentation and consent management.

What are the best practices for sending bulk SMS in Thailand?

Space out campaigns to avoid network congestion, respect quiet hours (9 PM - 9 AM), limit promotional messages to one per recipient per day, and ensure messages are localized with proper Thai language support and cultural sensitivity.

How to send SMS to landlines in Thailand?

Sending SMS to landlines in Thailand is not possible. Attempts will result in a 400 response with error code 21614. Messages to landlines will not be logged and will not incur charges.

What is number portability in Thailand and how does it affect SMS?

Number portability allows users to keep their numbers when switching carriers. It doesn't significantly impact SMS delivery as messages are routed correctly to the current operator.