sms compliance

Sent logo
Sent TeamMar 8, 2026 / sms compliance / Pakistan

Pakistan SMS Guide: PTA Regulations, Best Practices & API Integration

Complete guide to SMS messaging in Pakistan. Learn about PTA compliance, Jazz, Telenor, Zong, Ufone networks, sender ID registration, A2P partnerships, and API integration for reliable SMS delivery.

Pakistan SMS Best Practices, Compliance, and Features

SMS Market Overview in Pakistan: Networks, Regulations & Growth

Locale name:Pakistan
ISO code:PK
RegionAsia
Mobile country code (MCC)410
Dialing Code+92

Market Conditions: Pakistan's A2P SMS market grows at 13.2% CAGR (2021-2025) – significantly exceeding the global average of 3.8%. Four major mobile operators serve over 192 million subscribers (as of 2024-2025). SMS remains essential for business communications in e-commerce, mobile banking, and ride-hailing services, even as OTT messaging apps like WhatsApp dominate personal communication. Android holds over 90% market share compared to iOS.

Mobile Network Operators (2024-2025 Subscriber Data):

  • Jazz (MCC-MNC: 410-07, 410-04) – Market leader with 75 million subscribers
  • Telenor (MCC-MNC: 410-06) – 49.19 million subscribers (PTCL announced acquisition September 2024)
  • Zong (MCC-MNC: 410-11) – 44.80 million subscribers
  • Ufone (MCC-MNC: 410-03) – 23.47 million subscribers (PTCL Group)

A2P SMS Partnerships:

  • Jazz: Sinch (exclusive for international A2P traffic)
  • Telenor & Ufone: GMS (exclusive A2P partner)
  • Zong: GMS, Acmetel, and CMI (preferred partners)

Business Implications: Work with these authorized partners for optimal delivery rates and compliance. Direct operator partnerships offer better throughput, lower latency, and guaranteed message delivery compared to third-party aggregators.

Recent Infrastructure Developments:

  • 5G Launch (June 2025): PTA released final auction timetable in January 2025, confirming commercial 5G launch across four spectrum bands
  • 3G Shutdown (October 2024): Jazz completed Pakistan's first full 3G shutdown, reallocating spectrum to boost 4G capacity under "4G for All" program
  • Market Consolidation (September 2024): IFC-led consortium committed USD 400 million to PTCL for acquisition of Telenor Pakistan and Orion Towers

Key SMS Features and Capabilities in Pakistan

Pakistan supports comprehensive SMS capabilities, including concatenated messages and number portability. Understanding these features helps businesses send SMS messages effectively in Pakistan. Two-way SMS functionality is limited.

Two-way SMS Support

Pakistan does not support two-way SMS through standard A2P channels.

Workarounds:

  • Dedicated short codes: Apply for short codes that support inbound messaging (4-6 weeks provisioning time)
  • Web callbacks: Direct users to web forms or apps for responses
  • WhatsApp Business API: Use for bidirectional communication when SMS limitations apply
  • Hybrid approach: Combine outbound SMS with inbound calls to support centers

Concatenated Messages (Segmented SMS)

Support: All major carriers support concatenation, though availability varies by sender ID type.

Message Length Rules:

  • GSM-7 encoding: 160 characters per segment
  • UCS-2 encoding: 70 characters per segment (required for Urdu and non-Latin characters)

Billing Impact: Each segment counts as one message. A 200-character message splits into 2 segments and costs 2× the single message rate.

Character Count Examples:

  • 155 characters (English) = 1 message
  • 165 characters (English) = 2 messages
  • 68 characters (Urdu/UCS-2) = 1 message
  • 75 characters (Urdu/UCS-2) = 2 messages

MMS Support

Operators automatically convert MMS messages to SMS with embedded URL links, ensuring compatibility across all networks.

Conversion Process:

  1. You send MMS with image/media attachment
  2. Operator uploads media to secure hosting
  3. Operator generates shortened URL
  4. Recipient receives SMS: "View your media: [URL]"
  5. Link expires after 30 days (varies by operator)

Recipient Phone Number Compatibility

Number Portability

Pakistan was the first country in South Asia to implement Mobile Number Portability (MNP) in March 2007. Subscribers retain their mobile numbers when switching operators.

Process Details:

  • Management: PMD (Pakistan Mobile Database) via SMS short-codes 667 and 763xx
  • Timeframe: 5 days (mandated by PTA regulations, updated February 2025)
  • Quality Standards: PTA enforces strict compliance through automated monitoring

Impact on SMS Delivery: Messages route automatically to the current carrier through the central number portability database. This feature does not affect delivery or routing.

Failure Scenarios:

  • Database lookup timeout: Message queues for retry (up to 3 attempts)
  • Invalid number post-porting: Returns error code 21614 (invalid number format)
  • Porting in progress: Message may delay up to 30 minutes during active port window

Sending SMS to Landlines

You cannot send SMS to landline numbers in Pakistan. Attempts generate error code 21614 (invalid number format), fail delivery, and do not appear in logs or incur charges.

Common Error Codes:

Error CodeMeaningResolution
21614Invalid number format (landline or malformed)Verify number format: +923xxxxxxxxx
21408Rate limit exceededImplement exponential backoff
21611Unregistered sender IDRegister sender ID with operator
30007Message filtered by carrierReview content for prohibited terms
30008Unknown destinationVerify number is active and reachable

PTA Compliance and Regulatory Guidelines for SMS in Pakistan

The Pakistan Telecommunication Authority (PTA) regulates all SMS communications in Pakistan. Understanding PTA SMS regulations is essential for businesses sending commercial messages. All A2P SMS providers must comply with PTA guidelines and obtain necessary approvals before sending commercial messages. Operators strictly prohibit peer-to-peer (P2P) traffic.

Obtain explicit consent before sending marketing or promotional messages. Best practices include:

  • Maintain clear records of how and when you obtained consent
  • Use double opt-in verification for marketing lists
  • Provide clear terms and conditions during opt-in
  • Include the business name and purpose in consent requests
  • Store consent records for at least 2 years

Example Consent Message:

Reply YES to receive exclusive offers from [YourBrand]. Standard SMS rates apply. Reply STOP to unsubscribe. Privacy Policy: [URL]

HELP/STOP and Other Commands

Support these commands in all SMS campaigns:

  • STOP/UNSUBSCRIBE: Opt out of messages
  • HELP: Get assistance information
  • INFO: Get sender information

Support commands in both English and Urdu. Include clear instructions on how to use these commands in every message.

Example Opt-Out Instructions:

To unsubscribe, reply STOP سبسکرپشن ختم کرنے کے لیے STOP لکھ کر بھیجیں

Do Not Call / Do Not Disturb Registries

PTA manages Pakistan's national Do Not Call Registry (DNCR). Best practices include:

  • Check numbers against the DNCR regularly
  • Maintain internal suppression lists
  • Process opt-out requests immediately (within 24 hours)
  • Filter DNCR numbers proactively before campaign execution

Time Zone Sensitivity

Pakistan follows PKT (UTC+5). Send messages during these hours:

  • Weekdays: 9:00 AM to 9:00 PM PKT
  • Weekends: 10:00 AM to 6:00 PM PKT
  • Ramadan: Adjust timing to respect fasting hours
  • Emergency messages: Send 24/7 only if truly urgent

Timezone Handling Example:

typescript
import { DateTime } from 'luxon';

function isValidSendTime(): boolean {
  const now = DateTime.now().setZone('Asia/Karachi');
  const hour = now.hour;
  const isWeekend = now.weekday >= 6;

  if (isWeekend) {
    return hour >= 10 && hour < 18;
  }
  return hour >= 9 && hour < 21;
}

SMS Sender ID Registration and Phone Number Options for Pakistan

Alphanumeric Sender ID Registration

Operator network capability: Major operators (Zong, Warid, and Mobilink) support alphanumeric sender IDs. Registration requirements: Pre-registration not required, but dynamic usage is not supported Sender ID preservation: Varies by operator – Ufone and Telenor replace with numeric IDs

Registering your sender ID with Pakistani mobile operators ensures reliable message delivery and brand recognition.

Registration Process:

  1. Submit sender ID application to your SMS provider
  2. Provider submits to operator for approval
  3. Operator verifies business registration and use case
  4. Approval takes 3-5 business days
  5. Sender ID activates across approved operators

Format Rules:

  • Length: 3-11 characters
  • Characters: Alphanumeric only (A-Z, 0-9)
  • Restrictions: No spaces, special characters, or symbols
  • Case: Operators may convert to uppercase

Long Codes

Domestic vs. International: International long codes supported; domestic not available Sender ID preservation: No – operators may overwrite sender IDs with short codes Provisioning time: 2-3 business days Use cases: Transactional messages, alerts, notifications

Short Codes

Support: All operators widely support short codes Provisioning time: 4-6 weeks for approval Use cases: High-volume marketing, 2FA, customer service Throughput: 100-500 messages per second (varies by operator)

Application Process:

  1. Submit application with business documentation
  2. Define use case and message templates
  3. PTA reviews and approves (2-3 weeks)
  4. Operator provisions short code (1-2 weeks)
  5. Complete technical integration and testing

Restricted SMS Content and PTA Content Filtering Guidelines

Prohibited content includes:

  • Gambling and betting
  • Adult content
  • Political messaging without approval
  • Cryptocurrency promotions
  • Unauthorized financial services

Filtered Content Examples:

  • "Win big at [casino name]" (gambling)
  • "Buy Bitcoin now" (cryptocurrency)
  • "Vote for [candidate]" (political without approval)
  • "Apply for instant loan" (unauthorized financial services without proper licensing)

Consequences: Operators block messages containing prohibited content. Repeated violations result in sender ID suspension, account termination, and potential PTA penalties.

Content Filtering

Known carrier filters:

  • URLs from unknown domains
  • Specific keywords related to restricted content
  • Multiple exclamation marks or all-caps text

Best practices to avoid filtering:

  • Use approved URL shorteners (bit.ly, tinyurl.com, or operator-provided shorteners)
  • Avoid excessive punctuation
  • Include clear sender identification
  • Use approved templates for financial services

Content Testing Checklist:

  • No prohibited keywords or phrases
  • URLs use approved shorteners
  • Sender ID clearly identifies your business
  • Message includes opt-out instructions
  • No excessive punctuation or caps
  • Tested across all four major operators

Best Practices for Sending SMS in Pakistan

Messaging Strategy

  • Keep messages under 160 characters when possible
  • Include clear call-to-actions
  • Use personalization (customer name, relevant details)
  • Maintain consistent sender ID across campaigns

Message Template Examples:

Transactional (Order Confirmation):

Hi [Name], your order #[OrderID] is confirmed. Expected delivery: [Date]. Track: [URL]. Reply HELP for support.

Promotional:

[BrandName]: Get 30% OFF your next purchase. Use code SAVE30 at checkout. Valid until [Date]. Shop: [URL]. Reply STOP to opt-out.

OTP/2FA:

Your [BrandName] verification code is [CODE]. Valid for 10 minutes. Never share this code. Need help? Visit [URL]

Sending Frequency and Timing

  • Limit to 3-4 messages per week per recipient
  • Respect religious observances (especially during Ramadan)
  • Avoid sending during national holidays
  • Space out bulk campaigns to prevent network congestion

Pakistan National Holidays (avoid sending during these dates):

  • Kashmir Day (February 5)
  • Pakistan Day (March 23)
  • Labour Day (May 1)
  • Independence Day (August 14)
  • Iqbal Day (November 9)
  • Quaid-e-Azam Day (December 25)
  • Plus Eid-ul-Fitr and Eid-ul-Azha (dates vary annually)

Localization

  • Support both English and Urdu
  • Use transliterated Urdu (Roman Urdu) when appropriate
  • Consider regional languages for targeted campaigns
  • Test character rendering across different devices

Urdu Character Encoding:

typescript
// UCS-2 encoding for Urdu
const urduMessage = "آپ کا کوڈ: 123456"; // "Your code: 123456"

// Character count: 15 Urdu characters = 1 message segment (< 70 chars)
// Encoding: UCS-2
// Bytes per character: 2

Regional Language Coverage:

  • Punjabi: 44% of population (consider for regional campaigns in Punjab)
  • Sindhi: 12% (Sindh province)
  • Pashto: 8% (Khyber Pakhtunkhwa and Balochistan)
  • Urdu: National language (understood by 75%+ of population)

Opt-Out Management

  • Process opt-outs within 24 hours
  • Maintain centralized opt-out database
  • Include opt-out instructions in every message
  • Confirm opt-out with one final message

Opt-Out Workflow:

  1. User sends "STOP" to your number/short code
  2. System immediately adds number to suppression list
  3. System sends confirmation: "You've unsubscribed from [BrandName]. You'll receive no further messages."
  4. System syncs suppression list across all campaigns
  5. Compliance team audits opt-outs weekly

Testing and Monitoring

  • Test across all major operators
  • Monitor delivery rates by operator
  • Track engagement metrics
  • Test opt-out functionality regularly
  • Monitor customer feedback and complaints

Key Metrics to Track:

  • Delivery rate: Target 95%+ (below 90% indicates issues)
  • Bounce rate: Keep below 5%
  • Opt-out rate: Industry average 0.5-2% (higher rates signal content issues)
  • Response rate: Varies by campaign type (OTP: 80%+, promotional: 5-10%)
  • Time to delivery: Target under 5 seconds

SMS API Integration for Pakistan: Twilio, Sinch, Plivo & MessageBird

Send SMS to Pakistan with Twilio API

Twilio provides robust SMS API with comprehensive Pakistan support. Send SMS to Pakistani mobile numbers on Jazz, Telenor, Zong, and Ufone networks. Authenticate using account SID and auth token.

typescript
import { Twilio } from 'twilio';

// Initialize client with environment variables
const client = new Twilio(
  process.env.TWILIO_ACCOUNT_SID!,
  process.env.TWILIO_AUTH_TOKEN!
);

async function sendSMSToPakistan() {
  try {
    // Send message with proper Pakistan number formatting
    const message = await client.messages.create({
      body: 'Your message in English or Urdu',
      from: 'YOUR_SENDER_ID', // Alphanumeric or short code
      to: '+923xxxxxxxxx',    // Pakistan number format
      // Optional parameters for delivery tracking
      statusCallback: 'https://your-callback-url.com/status'
    });

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

Pakistan-Specific Error Handling:

typescript
async function sendWithErrorHandling() {
  try {
    const message = await client.messages.create({
      body: 'Your message',
      from: 'YOUR_SENDER_ID',
      to: '+923xxxxxxxxx'
    });
    return message.sid;
  } catch (error: any) {
    // Handle Pakistan-specific errors
    if (error.code === 21614) {
      console.error('Invalid Pakistan number format. Use +923xxxxxxxxx');
    } else if (error.code === 21611) {
      console.error('Sender ID not registered with operator');
    } else if (error.code === 30007) {
      console.error('Message filtered by carrier. Review content.');
    }
    throw error;
  }
}

Webhook Handling Example:

typescript
import express from 'express';

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

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

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

  if (ErrorCode) {
    console.error(`Error code: ${ErrorCode}`);
  }

  res.sendStatus(200);
});

Send SMS to Pakistan with Sinch API

Sinch offers direct operator connections in Pakistan, with exclusive partnership with Jazz for international A2P traffic. Uses bearer token authentication.

typescript
import axios from 'axios';

async function sendSinchSMS() {
  const SINCH_API_TOKEN = process.env.SINCH_API_TOKEN;
  const SINCH_SERVICE_PLAN_ID = process.env.SINCH_SERVICE_PLAN_ID;

  try {
    const response = await axios.post(
      `https://sms.api.sinch.com/xms/v1/${SINCH_SERVICE_PLAN_ID}/batches`,
      {
        from: 'YOUR_SENDER_ID',
        to: ['+923xxxxxxxxx'],
        body: 'Your message content',
        delivery_report: 'summary'
      },
      {
        headers: {
          'Authorization': `Bearer ${SINCH_API_TOKEN}`,
          'Content-Type': 'application/json'
        }
      }
    );

    console.log('Message sent:', response.data.id);
  } catch (error) {
    console.error('Sinch API error:', error.response?.data);
  }
}

Send SMS to Pakistan with MessageBird API

MessageBird provides reliable SMS delivery in Pakistan with strong operator connections across all major networks.

typescript
import messagebird from 'messagebird';

const client = messagebird(process.env.MESSAGEBIRD_API_KEY);

function sendMessageBirdSMS() {
  const params = {
    originator: 'YOUR_SENDER_ID',
    recipients: ['+923xxxxxxxxx'],
    body: 'Your message content',
    // Optional parameters
    reportUrl: 'https://your-callback-url.com/status',
    validity: 3600 // Message validity in seconds
  };

  client.messages.create(params, (error, response) => {
    if (error) {
      console.error('MessageBird error:', error);
      return;
    }
    console.log('Message sent successfully:', response.id);
  });
}

Send SMS to Pakistan with Plivo API

Plivo offers competitive rates and good coverage across Pakistani mobile operators including Jazz, Telenor, Zong, and Ufone.

typescript
import plivo from 'plivo';

const client = new plivo.Client(
  process.env.PLIVO_AUTH_ID!,
  process.env.PLIVO_AUTH_TOKEN!
);

async function sendPlivoSMS() {
  try {
    const response = await client.messages.create({
      src: 'YOUR_SENDER_ID', // Your sender ID
      dst: '923xxxxxxxxx',   // Destination number
      text: 'Your message content',
      // Optional parameters
      url: 'https://your-callback-url.com/status',
      method: 'POST'
    });

    console.log('Message sent:', response.messageUuid[0]);
  } catch (error) {
    console.error('Plivo error:', error);
  }
}

Provider Comparison

ProviderDelivery RateAvg. LatencyRate Limit (default)Best For
Twilio96-98%2-4 seconds1 msg/secEnterprise, reliability
Sinch95-97%2-3 seconds10 msg/secDirect operator access
MessageBird94-96%3-5 seconds5 msg/secEuropean businesses
Plivo93-95%3-6 seconds5 msg/secCost-sensitive projects

API Rate Limits and Throughput

  • Default rate limits vary by provider (typically 1-10 messages per second)
  • Implement exponential backoff for retry logic
  • Use batch APIs for high-volume sending
  • Consider queue systems like Redis or RabbitMQ for large campaigns

Rate Limiting Implementation:

typescript
import Bottleneck from 'bottleneck';

// Create rate limiter: 10 messages per second
const limiter = new Bottleneck({
  minTime: 100, // 100ms between requests = 10/sec
  maxConcurrent: 5
});

// Wrap your SMS function
const sendSMSLimited = limiter.wrap(async (to: string, message: string) => {
  return await client.messages.create({
    body: message,
    from: 'YOUR_SENDER_ID',
    to: to
  });
});

// Use in bulk sending
async function sendBulkSMS(recipients: string[], message: string) {
  const promises = recipients.map(to => sendSMSLimited(to, message));
  return await Promise.all(promises);
}

Error Handling and Reporting

  • Implement comprehensive logging with Winston or similar
  • Monitor delivery receipts via webhooks
  • Track common error codes

Complete Error Code Reference:

Error CodeDescriptionCommon CausesResolution
21614Invalid number formatLandline, malformed numberUse +923xxxxxxxxx format
21408Rate limit exceededToo many requestsImplement exponential backoff
21611Unregistered sender IDSender ID not approvedRegister with operator
30007Message filteredProhibited contentReview content guidelines
30008Unknown destinationNumber inactive/invalidVerify number status
21610Message body requiredEmpty messageInclude message content
30003Unreachable destinationNetwork/coverage issuesRetry after delay

Logging Implementation:

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 sendWithLogging(to: string, message: string) {
  try {
    logger.info('Sending SMS', { to, messageLength: message.length });

    const result = await client.messages.create({
      body: message,
      from: 'YOUR_SENDER_ID',
      to: to
    });

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

    return result;
  } catch (error: any) {
    logger.error('SMS sending failed', {
      to,
      error: error.message,
      errorCode: error.code,
      errorDetails: error
    });
    throw error;
  }
}

Recap and Additional Resources

Key Takeaways

  1. Compliance First

    • Register sender IDs with operators
    • Maintain consent records for 2+ years
    • Process opt-out requests within 24 hours
  2. Technical Considerations

    • Use appropriate sender IDs (alphanumeric, short codes, or long codes)
    • Implement comprehensive error handling for Pakistan-specific error codes
    • Monitor delivery rates by operator (target 95%+)
  3. Best Practices

    • Send during recommended hours (9 AM-9 PM PKT weekdays)
    • Localize content in English and Urdu
    • Maintain clean contact lists and honor DNCR

Next Steps

  1. Review PTA regulations at www.pta.gov.pk
  2. Consult with local legal counsel for compliance verification
  3. Set up test accounts with preferred SMS providers (Twilio, Sinch, MessageBird, or Plivo)
  4. Implement consent management systems with double opt-in
  5. Configure webhook handling for delivery receipts
  6. Test across all four major operators (Jazz, Telenor, Zong, Ufone)

Implementation Timeline (typical for new deployments):

  • Week 1: Legal review and PTA compliance assessment
  • Week 2-3: Sender ID registration (3-5 business days per operator)
  • Week 4: API integration and testing
  • Week 5-6: Short code application (if needed, 4-6 weeks total)
  • Week 7: Pilot campaign with limited audience
  • Week 8+: Full production rollout

Additional Resources

Industry Resources:

  • Mobile Marketing Association Guidelines
  • GSMA Messaging Fraud Prevention Guidelines
  • Local Telecom Operator Guidelines:
    • Jazz Business Solutions
    • Telenor Business
    • Zong Enterprise Solutions
    • Ufone Corporate Services

Frequently Asked Questions:

Q: How long does sender ID registration take? A: 3-5 business days per operator once you submit documentation.

Q: Can I use the same sender ID across all operators? A: Not guaranteed – Ufone and Telenor may replace alphanumeric IDs with numeric codes. Register separately with each operator.

Q: What's the maximum message length for Urdu content? A: 70 characters per segment (UCS-2 encoding). Messages exceeding 70 characters split into multiple segments.

Q: Do I need separate consent for transactional vs. promotional messages? A: Yes. Explicit consent is mandatory for promotional messages. Transactional messages (order confirmations, OTPs) don't require prior consent but must be relevant to existing customer relationships.

Q: What happens if I send to a number on the DNCR? A: Operators block messages to DNCR-registered numbers. Repeated violations result in sender ID suspension and potential PTA penalties.