sms compliance

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

Brazil SMS Guide

Explore Brazil SMS: compliance (LGPD, ANATEL), features (two-way, concatenated messages???160 chars/segment), & sender types. Understand consent, opt-out ('PARE'), time zones. API integration insights included.

Brazil SMS Best Practices, Compliance, and Features

Brazil SMS Market Overview

Locale name:Brazil
ISO code:BR
RegionSouth America
Mobile country code (MCC)724
Dialing Code+55

Market Conditions: Brazil has a thriving mobile market with high smartphone penetration (75.6% as of 2021) and strong SMS usage alongside popular OTT apps like WhatsApp. The country's major mobile operators include Vivo, TIM, Claro, and Oi. Android devices dominate the market, accounting for approximately 85% of mobile devices, while iOS devices make up roughly 15%. The e-commerce sector is particularly active, with businesses heavily utilizing SMS for customer communications and authentication.


Key SMS Features and Capabilities in Brazil

Brazil offers comprehensive SMS capabilities including two-way messaging, concatenated messages, and MMS-to-SMS conversion, with strong support across all major carriers.

Two-way SMS Support

Brazil fully supports two-way SMS messaging across all major carriers. There are no specific restrictions beyond standard compliance requirements, making it ideal for interactive messaging campaigns and customer support.

Concatenated Messages (Segmented SMS)

Support: Yes, concatenation is supported across most carriers, though some limitations exist for certain sender ID types.
Message length rules:

  • NEXTEL: 140 characters per segment
  • All other carriers: 160 characters per segment
    Encoding considerations: GSM-7 encoding is standard, while UCS-2 is supported by most carriers except Oi, NEXTEL, and CTBC (Algar).

MMS Support

MMS messages are automatically converted to SMS with an embedded URL link. This ensures compatibility across all carriers while still allowing rich media content to be shared effectively through linked resources.

Recipient Phone Number Compatibility

Number Portability

Number portability is fully available in Brazil. This feature allows users to keep their phone numbers when switching between different network providers, with no impact on SMS delivery or routing.

Sending SMS to Landlines

Sending SMS to landline numbers is not supported in Brazil. Attempts to send messages to landline numbers will result in a 400 response error (code 21614) through the REST API, with no message logging or charges applied.

Compliance and Regulatory Guidelines for SMS in Brazil

Brazil's SMS communications are governed by the Brazilian General Data Protection Law (LGPD) and overseen by the National Telecommunications Agency (ANATEL). These regulations emphasize data privacy, consumer rights, and transparent communication practices.

Explicit Consent Requirements:

  • Written or digital confirmation of opt-in must be obtained before sending marketing messages
  • Consent records must be maintained and easily accessible
  • Purpose of communication must be clearly stated during opt-in
  • Separate consent required for different types of communications

Best practices for obtaining consent:

  • Use double opt-in verification
  • Maintain detailed consent logs including timestamp and method
  • Provide clear terms and conditions
  • Allow easy access to privacy policies

HELP/STOP and Other Commands

  • All SMS campaigns must support standard opt-out keywords:
    • "PARE" (Stop)
    • "SAIR" (Exit)
    • "AJUDA" (Help)
  • Messages must be in Portuguese
  • Response to HELP/STOP commands must be immediate and free of charge
  • Confirmation of opt-out must be sent within 24 hours

Do Not Call / Do Not Disturb Registries

Brazil does not maintain a centralized DND registry. However, businesses must:

  • Maintain their own suppression lists
  • Honor opt-out requests within 24 hours
  • Keep records of blocked numbers
  • Implement proactive filtering systems to prevent messaging to opted-out users

Time Zone Sensitivity

Time Restrictions:

  • Marketing messages prohibited outside 9:00-22:00 local time
  • No marketing messages allowed on Sundays
  • Brazil spans three time zones - must respect local time in each zone
  • Emergency and transactional messages exempt from time restrictions

Phone Numbers Options and SMS Sender Types for Brazil

Alphanumeric Sender ID

Operator network capability: Supported (Optional)
Registration requirements:

  • Pre-registration available for TIM, CLARO, and VIVO networks
  • 10-week provisioning time
  • Uppercase Sender ID recommended (required for VIVO)
    Sender ID preservation: Yes, preserved across supported networks

Long Codes

Domestic vs. International:

  • Domestic: Supported for P2P messaging only
  • International: Not supported directly
    Sender ID preservation:
  • Domestic: Yes
  • International: No, may be overwritten with random codes
    Provisioning time: Immediate for domestic numbers
    Use cases: Person-to-person communications, customer service

Short Codes

Support: Fully supported across all major carriers
Provisioning time: 2-4 weeks
Use cases:

  • Marketing campaigns
  • Two-factor authentication
  • Customer notifications
  • High-volume messaging

Restricted SMS Content, Industries, and Use Cases

Prohibited Content:

  • Adult content
  • Gambling services
  • Political messages
  • Religious content
  • Controlled substances
  • Cannabis-related content
  • Contest promotions
  • Telecommunication services

Content Filtering

Carrier Filtering Rules:

  • Oi, NEXTEL, and CTBC (Algar) don't support Unicode
  • Accented characters automatically converted to ASCII
  • M2M numbers handled on best-effort basis

Tips to Avoid Blocking:

  • Use plain text without special characters
  • Avoid URL shorteners
  • Keep message length within carrier limits
  • Use registered sender IDs
  • Maintain consistent sending patterns

Best Practices for Sending SMS in Brazil

Messaging Strategy

  • Keep messages under 160 characters when possible
  • Include clear call-to-action
  • Use personalization tokens strategically
  • Maintain consistent brand voice

Sending Frequency and Timing

  • Limit to 2-3 messages per week per recipient
  • Respect time zone differences
  • Avoid major holidays unless essential
  • Space out bulk campaigns to prevent network congestion

Localization

  • Default to Portuguese for all messages
  • Use formal Portuguese ("voc??" instead of "tu")
  • Consider regional language variations
  • Provide language preference options

Opt-Out Management

  • Process opt-outs in real-time
  • Maintain centralized opt-out database
  • Confirm opt-out status to users
  • Regular audit of opt-out lists

Testing and Monitoring

  • Test across all major carriers (Vivo, TIM, Claro, Oi)
  • Monitor delivery rates by carrier
  • Track engagement metrics
  • Regular testing of opt-out functionality

SMS API integrations for Brazil

Twilio

Twilio provides a robust SMS API with specific support for Brazil's messaging requirements. Authentication uses account SID and auth token credentials.

typescript
import { Twilio } from 'twilio';

// Initialize Twilio client
const client = new Twilio(
  process.env.TWILIO_ACCOUNT_SID,    // Your Account SID
  process.env.TWILIO_AUTH_TOKEN      // Your Auth Token
);

// Function to send SMS to Brazil
async function sendSMSToBrazil(
  to: string,
  message: string
): Promise<void> {
  try {
    // Create message with Brazil-specific formatting
    const response = await client.messages.create({
      to: `+55${to}`,              // Brazil country code
      from: process.env.TWILIO_PHONE_NUMBER,
      body: message,
      // Optional: Schedule message within allowed hours (9:00-22:00)
      scheduleType: 'fixed',
      sendAt: new Date('2024-01-01T13:00:00-03:00') // Brazil timezone
    });

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

Sinch

Sinch offers direct carrier connections in Brazil with support for high-volume messaging.

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

// Initialize Sinch client
const sinch = new SinchClient({
  servicePlanId: process.env.SINCH_SERVICE_PLAN_ID,
  apiToken: process.env.SINCH_API_TOKEN,
  smsRegion: 'br'  // Specify Brazil region
});

// Function to send batch SMS
async function sendBatchSMS(
  recipients: string[],
  message: string
): Promise<void> {
  try {
    const response = await sinch.sms.batches.create({
      body: message,
      recipients: recipients.map(num => `+55${num}`),
      deliveryReport: 'summary', // Get delivery statistics
      parameters: {
        // Support for Brazilian Portuguese characters
        encoding: 'auto'
      }
    });

    console.log(`Batch ID: ${response.id}`);
  } catch (error) {
    console.error('Batch sending failed:', error);
  }
}

MessageBird

MessageBird provides reliable SMS delivery in Brazil with support for alphanumeric sender IDs.

typescript
import { MessageBird } from 'messagebird';

// Initialize MessageBird client
const messagebird = new MessageBird(process.env.MESSAGEBIRD_API_KEY);

// Function to send SMS with delivery tracking
async function sendTrackedSMS(
  recipient: string,
  message: string
): Promise<void> {
  const params = {
    originator: 'YourBrand',  // Alphanumeric sender ID
    recipients: [`+55${recipient}`],
    body: message,
    reportUrl: 'https://your-webhook.com/delivery-reports'
  };

  try {
    const response = await new Promise((resolve, reject) => {
      messagebird.messages.create(params, (err, response) => {
        if (err) reject(err);
        else resolve(response);
      });
    });

    console.log('Message sent:', response);
  } catch (error) {
    console.error('Sending failed:', error);
  }
}

Plivo

Plivo offers advanced SMS features with support for Unicode and concatenated messages.

typescript
import { Client } from 'plivo';

// Initialize Plivo client
const client = new Client(
  process.env.PLIVO_AUTH_ID,
  process.env.PLIVO_AUTH_TOKEN
);

// Function to send Unicode SMS
async function sendUnicodeSMS(
  to: string,
  message: string
): Promise<void> {
  try {
    const response = await client.messages.create({
      src: process.env.PLIVO_PHONE_NUMBER,
      dst: `+55${to}`,
      text: message,
      type: 'unicode',  // Support for Portuguese special characters
      url: 'https://your-webhook.com/status'  // Status callback
    });

    console.log('Message UUID:', response.messageUuid);
  } catch (error) {
    console.error('Message sending failed:', error);
  }
}

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
  • Queue messages during peak hours

Throughput Management Strategies:

  • Implement message queuing system
  • Use batch APIs when possible
  • Monitor delivery rates and adjust sending speed
  • Distribute load across multiple sender IDs

Error Handling and Reporting

  • Implement comprehensive logging
  • Monitor delivery receipts
  • Track carrier responses
  • Set up automated alerts for error thresholds

Recap and Additional Resources

Key Takeaways:

  • Obtain explicit consent before sending marketing messages
  • Respect time zone restrictions (9:00-22:00 local time)
  • Support Portuguese language opt-out commands
  • Implement proper error handling and monitoring

Next Steps:

  1. Review LGPD compliance requirements
  2. Set up proper consent management systems
  3. Implement message scheduling within allowed hours
  4. Test delivery across all major carriers

Additional Information:

Frequently Asked Questions

How to send SMS messages in Brazil?

Use an SMS API like Twilio, Sinch, MessageBird, or Plivo. Make sure to format numbers with the +55 country code and handle opt-out commands ('PARE', 'SAIR', 'AJUDA') in Portuguese. Adhere to time restrictions (9 am - 10 pm local time, excluding Sundays).

What are the SMS compliance requirements in Brazil?

Comply with the LGPD, overseen by ANATEL, by getting explicit consent before marketing, honoring opt-out requests within 24 hours, respecting time zones, and avoiding prohibited content like adult material or gambling promotions.

What is the best time to send SMS marketing messages in Brazil?

Send messages between 9:00 am and 10:00 pm local time, mindful of Brazil's three time zones. Avoid Sundays and major holidays. Adhere to frequency best practices and limit to a few messages per recipient weekly.

How to obtain consent for SMS marketing in Brazil?

Use double opt-in to confirm consent, clearly stating the purpose of communication. Keep detailed records of consent, including timestamps and method. Provide easy access to your terms and conditions and privacy policy.

Why does Brazil not support SMS to landlines?

Brazil's telecommunications infrastructure does not support sending SMS messages to landline numbers. Attempts to send will result in a 400 error (code 21614) via the REST API.

What SMS sender IDs are available in Brazil?

Short codes, long codes (domestic P2P only), and alphanumeric sender IDs are available. Alphanumeric IDs require pre-registration with certain carriers and a 10-week provisioning time. Long codes are not supported internationally.

How to handle opt-out requests for SMS in Brazil?

You must respond immediately and free of charge to "PARE", "SAIR", and "AJUDA" keywords. Confirm the opt-out within 24 hours and maintain a suppression list, even though there is no centralized DND registry.

Can I use an alphanumeric sender ID for SMS in Brazil?

Yes, alphanumeric sender IDs are supported but require pre-registration with providers like TIM, CLARO, and VIVO. It has a 10-week provisioning period. Sender ID preservation is supported across networks.

What is the character limit for SMS in Brazil?

Most carriers support 160 characters per segment for concatenated SMS, except Nextel with 140 characters. GSM-7 encoding is standard, but UCS-2 isn't fully supported by all carriers.

What SMS APIs are recommended for sending messages in Brazil?

Twilio, Sinch, MessageBird, and Plivo all offer APIs with features tailored to Brazil, including support for local regulations, Unicode, high-throughput messaging, and alphanumeric sender IDs.

How are MMS messages handled in Brazil?

MMS messages are converted to SMS with a URL link, ensuring compatibility across all devices and carriers. This allows for rich media content sharing while maintaining SMS deliverability.

When should I use a short code for SMS in Brazil?

Short codes are ideal for high-volume messaging like marketing campaigns, two-factor authentication, and customer notifications. They are fully supported by major carriers and have a provisioning time of 2-4 weeks.

Why is GSM-7 encoding preferred for SMS in Brazil?

GSM-7 encoding is generally preferred for its broad compatibility across carriers. While UCS-2 allows for more characters including accents and emojis, it's not supported by Oi, Nextel, and Algar (CTBC).

How to avoid SMS message blocking in Brazil?

Avoid special characters and URL shorteners. Stick to plain text within carrier limits. Register sender IDs where required and maintain consistent sending patterns, respecting daily and weekly limits.