sms compliance
sms compliance
Uruguay SMS Guide: Compliance, Best Practices & API Integration (2025)
Ultimate Uruguay SMS guide: Send messages via Antel, Movistar, Claro with E.164 formatting, URSEC compliance, sender ID setup, API integration (Twilio, Sinch, MessageBird), MNP routing, and opt-out requirements. Updated October 2025.
Last Updated: October 5, 2025
Uruguay SMS Best Practices, Compliance, and Features
Looking to send SMS messages in Uruguay? This comprehensive guide covers everything you need to know about sending text messages through Uruguay's three major carriers—Antel, Movistar, and Claro—including URSEC compliance requirements, E.164 phone number formatting, sender ID options, API integration with Twilio, Sinch, and MessageBird, mobile number portability (MNP) routing, and opt-out best practices for successful SMS campaigns.
Uruguay SMS Market Overview: Carriers, Format & Regulations
| Locale name: | Uruguay |
|---|---|
| ISO code: | UY |
| Region | South America |
| Mobile country code (MCC) | 748 |
| Dialing Code | +598 |
| Mobile Number Format | 8 digits (starting with 9) |
| Landline Format | 8 digits (starting with 2, 4, or 6) |
Source: ITU-T (International Telecommunication Union – Telecommunication Standardization Sector) E.164 international numbering plan, URSEC (Unidad Reguladora de Servicios de Comunicaciones, verified October 2025)
Market Conditions: Uruguay has a mature mobile market with high smartphone penetration and widespread SMS (Short Message Service) usage. Three major operators dominate the telecommunications landscape: Antel (state-owned with approximately 50% market share), Movistar (Telefónica, ~30%), and Claro (América Móvil, ~20%). While OTT (Over-The-Top) messaging apps like WhatsApp are popular, SMS remains crucial for business communications, OTP (One-Time Password) authentication services, and government notifications. Android devices hold a significant market share advantage over iOS in the region (approximately 70% Android vs. 30% iOS as of 2025).
Source: URSEC market statistics (ursec.gub.uy, verified October 2025), ITU World Telecommunication indicators
Uruguay SMS Features: Two-Way Messaging, Concatenation & MMS Support
Uruguay supports basic SMS functionality with some limitations on sender ID options and two-way messaging capabilities.
Two-Way SMS in Uruguay: Limitations and Workarounds
Two-way SMS is not supported in Uruguay through most providers. This limitation affects interactive messaging campaigns and automated response systems. Workaround: Use dedicated short codes (where available through direct carrier agreements) or redirect users to web-based response forms via URL shorteners.
Source: Carrier technical specifications (Antel, Movistar, Claro, verified October 2025)
Concatenated Messages (Segmented SMS)
Support: Yes, concatenated messages are supported in Uruguay across all three major carriers, though support may vary by sender ID type.
Message length rules:
- GSM-7 encoding: 160 characters for single SMS, 153 characters per segment for concatenated messages (7 characters reserved for UDH – User Data Header)
- UCS-2 encoding (Unicode): 70 characters for single SMS, 67 characters per segment for concatenated messages
Encoding considerations: Both GSM-7 and UCS-2 encodings are supported. Messages automatically split and concatenate based on character encoding. Spanish characters with accents (á, é, í, ó, ú, ñ, ¿, ¡) are included in GSM-7 standard and do not trigger UCS-2 encoding.
Source: GSM 03.38 character encoding standard, 3GPP (3rd Generation Partnership Project) TS 23.040 technical specification
MMS Messaging in Uruguay: URL Conversion and Alternatives
MMS (Multimedia Messaging Service) messages are not directly supported in Uruguay through standard API (Application Programming Interface) providers. Instead, MMS content is automatically converted to SMS with an embedded URL link where recipients can view the multimedia content. This ensures compatibility while still allowing rich media sharing capabilities.
Alternative: Use SMS with shortened URLs pointing to hosted media content for better compatibility and tracking.
Source: Provider technical documentation (Twilio, Sinch, verified October 2025)
Recipient Phone Number Compatibility
Phone Number Format
Uruguay uses an 8-digit phone numbering system following E.164 international format:
- Mobile numbers: Start with 9 (e.g., +598 9X XXX XXX)
- Landline numbers: Start with 2 (Montevideo), 4 (interior regions), or 6 (special services)
- E.164 format: +598 followed by 8 digits (no spaces in API requests)
Validation regex: ^\+5989\d{7}$ (for mobile numbers)
Source: ITU-T Recommendation E.164, URSEC numbering plan
Number Portability
Mobile Number Portability (MNP) is supported in Uruguay as of 2013. Mobile numbers can be ported between Antel, Movistar, and Claro while retaining the original number. Important: Implement proper routing logic in your sender systems or use aggregators that handle MNP lookups to ensure correct carrier routing and optimal delivery rates.
Porting timeline: 1–3 business days after customer request MNP database: Maintained by URSEC and accessible to licensed operators
Source: URSEC Resolution on Number Portability (2013), updated regulations verified October 2025
Sending SMS to Landlines
Sending SMS to landline numbers is not supported in Uruguay. Attempts to send messages to landline numbers (starting with 2, 4, or 6) result in delivery failure, typically generating a 400 response error (code 21614 for Twilio, similar codes for other providers) from SMS platforms, with no charges incurred.
Best practice: Implement phone number validation to filter out landline numbers before API calls.
Source: Carrier technical specifications, verified October 2025
Uruguay SMS Compliance: URSEC Regulations & Consent Requirements
While Uruguay doesn't have specific SMS marketing legislation, communications are governed by general consumer protection laws (Ley 17.250 de Relaciones de Consumo) and telecommunications regulations overseen by URSEC (Unidad Reguladora de Servicios de Comunicaciones). Follow best practices from global standards to ensure compliance.
Regulatory Authority: URSEC (www.ursec.gub.uy) Consumer Protection: Instituto Nacional de Defensa del Consumidor (INDEFEC)
Source: Ley 17.250 de Relaciones de Consumo (1999, amended 2010), URSEC regulations (verified October 2025)
Uruguay SMS Consent Requirements: Opt-In Best Practices
Explicit Consent Requirements:
- Obtain clear, documented opt-in consent before sending marketing messages
- Maintain detailed records of when and how you obtained consent (minimum 5-year retention recommended)
- Include clear terms of service and privacy policy information
- Specify the type and frequency of messages recipients will receive
- Important: Consent must be freely given, specific, informed, and unambiguous under consumer protection principles
Pre-checked boxes or implicit consent are not sufficient – active opt-in is required.
Source: Ley 17.250 consumer protection principles, GDPR (General Data Protection Regulation) – aligned best practices
HELP/STOP and Other Commands
- Support STOP commands for all marketing messages
- Recognize common keywords in both Spanish and English:
- Opt-out: STOP, BAJA, CANCELAR, UNSUB, SALIR
- Help: AYUDA, HELP, INFO
- Send response messages in Spanish, the primary language in Uruguay
- Processing time: Process opt-out requests within 24 hours (48 hours maximum)
- Confirmation: Send a final confirmation message acknowledging the opt-out
Example opt-out message: "Has sido dado de baja exitosamente. No recibirás más mensajes de [Nombre Empresa]. Para consultas: [contacto]"
Source: Best practices aligned with international standards, consumer protection law requirements
Do Not Call / Do Not Disturb Registries
Uruguay does not maintain an official Do Not Call registry as of October 2025. However, you should:
- Maintain your own suppression lists with proper data protection
- Honor opt-out requests immediately (within 24 hours)
- Document all opt-out requests and their processing dates
- Regularly clean contact lists to remove unsubscribed numbers (monthly review recommended)
- Implement centralized suppression list across all messaging channels
Source: URSEC telecommunications guidelines, industry best practices (verified October 2025)
Time Zone Sensitivity
Uruguay observes UTC-3 time zone (Uruguay Standard Time – UYT). Important: Uruguay does not observe Daylight Saving Time (DST) as of March 2015 – the country permanently uses UTC-3 year-round.
Recommended messaging hours:
- Marketing messages: 9:00 AM – 8:00 PM local time (Monday–Saturday)
- Transactional messages (OTP, alerts): Acceptable 24/7
- Avoid: Sundays and national holidays for marketing messages
- Exception: Urgent notifications (security alerts, emergency communications) permitted after hours
National Holidays to Avoid (2025):
- January 1: New Year's Day
- January 6: Epiphany (Día de Reyes)
- April 18–19: Holy Week (Semana de Turismo)
- May 1: Labor Day
- June 19: Artigas Day
- July 18: Constitution Day
- August 25: Independence Day
- October 12: Day of the Americas
- November 2: All Souls' Day
- December 25: Christmas Day
Source: URSEC timezone information, Uruguay official holiday calendar (verified October 2025), decree abolishing DST (March 2015)
Uruguay SMS Sender ID Options: Long Codes, Short Codes & Alphanumeric IDs
Alphanumeric Sender ID
Operator network capability: Not supported by Antel, Movistar, or Claro carriers in Uruguay Registration requirements: N/A – feature not available Sender ID preservation: Sender IDs are typically overwritten with a numeric format (usually a short code or random numeric ID) Alternative: Use international long codes or register for dedicated short codes through direct carrier agreements
Source: Carrier technical specifications (Antel, Movistar, Claro, verified October 2025)
Long Codes
Domestic vs. International:
- Domestic long codes: Not supported for commercial SMS through standard API providers
- International long codes: Supported but with limitations (sender ID typically replaced)
Sender ID preservation: No, original sender IDs from international long codes are not preserved – replaced with carrier-assigned numeric identifier Provisioning time: Immediate to 24 hours for international long codes Use cases: Transactional messages, OTP/2FA (Two-Factor Authentication), alerts, and notifications Cost consideration: International long codes may incur higher per-message costs
Source: Provider technical documentation (Twilio, Sinch, MessageBird, verified October 2025)
Short Codes
Support: Limited support – not available through standard API providers. Obtain short codes through direct carrier agreements with Antel, Movistar, or Claro for high-volume campaigns. Provisioning time: 4–8 weeks (requires carrier approval and contractual agreements) Use cases: High-volume marketing campaigns, voting systems, premium services Cost: Significantly higher setup costs but lower per-message rates for volume senders
Contact:
- Antel Business Services: https://www.antel.com.uy/empresas
- Movistar Uruguay: https://www.movistar.com.uy/empresas
- Claro Uruguay: https://www.claro.com.uy/empresas
Source: Carrier commercial offerings (verified October 2025)
Uruguay SMS Restrictions: Prohibited Content & Spam Filtering Rules
Restricted Industries and Content:
- Gambling and betting services (heavily regulated under Ley 18.850)
- Adult content or services
- Unauthorized pharmaceutical promotions
- Political campaign messages without proper authorization during election periods
- Financial services without proper licensing (regulated by Banco Central del Uruguay)
- Cryptocurrency and forex trading promotions (increasing regulatory scrutiny)
Legal basis: Ley 18.850 (gambling regulation), Ley 17.250 (consumer protection), Banco Central del Uruguay regulations
Source: Uruguay regulatory framework (verified October 2025)
Content Filtering
Carrier Filtering Rules:
- Messages containing certain keywords (gambling, adult terms, financial scams) may be blocked
- URLs may be subject to screening for phishing or malware (especially shortened URLs)
- High-volume sending patterns from new sources may trigger spam filters
- Messages with excessive special characters or unusual formatting flagged for review
Spam scoring factors:
- Keyword density (e.g., "GRATIS", "PROMOCIÓN", "GANA")
- ALL CAPS messages
- Excessive exclamation marks or emojis
- Suspicious URLs or mismatched link text
Best Practices to Avoid Filtering:
- Avoid excessive punctuation and special characters
- Use clear, straightforward language
- Include company name or brand identifier in messages
- Maintain consistent sending patterns (avoid sudden volume spikes)
- Use registered and approved sender IDs where available
- Pre-register URLs with carrier spam filters
- Test message content with spam checkers before deployment
Source: Carrier filtering policies, industry best practices (verified October 2025)
Best Practices: How to Send SMS Messages in Uruguay
Messaging Strategy
- Keep messages under 160 characters when possible to avoid segmentation charges
- Include clear call-to-actions (CTAs) with specific next steps
- Personalize messages with recipient's name when appropriate (improves engagement by 20–30%)
- Maintain consistent branding across messages (include company name)
- Important: Use Spanish language exclusively – English messages significantly reduce engagement in Uruguay
Sending Frequency and Timing
- Limit marketing messages to 2–4 per month per recipient (optimal: 2–3 per month)
- Space out messages by minimum 3–5 days to avoid overwhelming recipients
- Consider Uruguay's business calendar for timing (avoid long weekends like Semana de Turismo)
- Respect local holidays and cultural events
- A/B test sending times: Data suggests 10:00 AM – 12:00 PM and 5:00 PM – 7:00 PM show highest open rates
Source: Industry benchmarks for Latin American markets (verified October 2025)
Localization
- Primary language: Spanish (Rioplatense dialect with voseo)
- Use local date formatting: DD/MM/YYYY (e.g., 25/12/2025)
- Use local time format: 24-hour clock (e.g., 14:00)
- Currency: Uruguayan Peso (UYU) with $ symbol, e.g., "$1.500" (using period as thousands separator)
- Consider local cultural references and expressions
- Avoid colloquialisms that might not translate well regionally
- Examples of local expressions: "bárbaro" (great), "ta" (okay), "bo" (informal interjection)
Cultural considerations:
- Uruguay has strong European cultural influences (especially Italian and Spanish)
- Mate (traditional tea) is central to social culture
- Soccer (fútbol) is extremely popular – avoid messaging during major matches
Source: Uruguay cultural and linguistic guidelines (verified October 2025)
Opt-Out Management
- Process opt-out requests within 24 hours (48 hours absolute maximum)
- Maintain a centralized opt-out database across all systems
- Include clear opt-out instructions in messages (e.g., "Reply BAJA to unsubscribe")
- Send confirmation message acknowledging opt-out status
- Suppress numbers across all campaigns and message types (except legally required transactional)
- Retention: Keep opt-out records for minimum 5 years for compliance documentation
Testing and Monitoring
- Test messages across all major carriers (Antel, Movistar, Claro) before full deployment
- Monitor delivery rates by carrier (establish baseline: 95%+ for transactional, 85%+ for marketing)
- Track engagement metrics: delivery rate, click-through rate (if URLs included), conversion rate
- Regularly test opt-out functionality (monthly minimum)
- Monitor for carrier filtering or blocking (sudden delivery rate drops)
- Implement webhook listeners for DLRs (Delivery Receipt Reports) to track message lifecycle
Key metrics to track:
- Delivery rate by carrier
- Time to delivery (should be < 30 seconds for 95% of messages)
- Opt-out rate (baseline: < 0.5% per campaign for engaged lists)
- Complaint rate (should be < 0.1%)
Source: SMS marketing best practices, industry benchmarks (verified October 2025)
Uruguay SMS API Integration: Twilio, Sinch & MessageBird Examples
Twilio
Twilio provides a robust SMS API that supports messaging to Uruguay. Here's how to implement it with current best practices:
import { 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 Uruguay
async function sendSMSToUruguay(
to: string,
message: string
): Promise<void> {
try {
// Validate and format number in E.164 format for Uruguay (+598 9X XXX XXX)
const formattedNumber = to.startsWith('+598') ? to : `+598${to}`;
// Validate mobile number format (must start with 9 after country code)
if (!/^\+5989\d{7}$/.test(formattedNumber)) {
throw new Error('Invalid Uruguay mobile number format. Must be +598 9X XXX XXX');
}
const response = await client.messages.create({
body: message,
to: formattedNumber,
from: process.env.TWILIO_PHONE_NUMBER,
// Optional: statusCallback URL for DLR (Delivery Receipt)
statusCallback: 'https://your-webhook.com/status',
// Optional: Validate SSL certificates on callbacks
statusCallbackMethod: 'POST'
});
console.log(`Message sent successfully! SID: ${response.sid}`);
console.log(`Status: ${response.status}, Price: ${response.price} ${response.priceUnit}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
// Usage example
await sendSMSToUruguay('+59894123456', '¡Hola! Tu código de verificación es: 123456');Authentication: Twilio uses HTTP Basic Authentication with Account SID as username and Auth Token as password. Important: Always use environment variables for credentials, never hardcode.
Source: Twilio API documentation (twilio.com/docs, verified October 2025)
Sinch
Sinch offers SMS capabilities for Uruguay through their REST API with OAuth 2.0 authentication:
import axios from 'axios';
interface SinchSMSResponse {
id: string;
to: string[];
from: string;
created_at: string;
status: string;
}
class SinchSMSClient {
private readonly baseUrl: string;
private readonly servicePlanId: string;
private readonly apiToken: string;
constructor(servicePlanId: string, apiToken: string) {
this.baseUrl = 'https://us.sms.api.sinch.com/xms/v1';
this.servicePlanId = servicePlanId;
this.apiToken = apiToken;
}
async sendSMS(to: string, message: string): Promise<SinchSMSResponse> {
try {
// Validate Uruguay mobile number format
if (!/^\+5989\d{7}$/.test(to)) {
throw new Error('Invalid Uruguay mobile number format');
}
const response = await axios.post(
`${this.baseUrl}/${this.servicePlanId}/batches`,
{
from: process.env.SINCH_SENDER_ID,
to: [to],
body: message,
// Optional: Request delivery report
delivery_report: 'summary'
},
{
headers: {
'Authorization': `Bearer ${this.apiToken}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
} catch (error) {
console.error('Sinch SMS Error:', error);
throw error;
}
}
}
// Usage
const client = new SinchSMSClient(
process.env.SINCH_SERVICE_PLAN_ID!,
process.env.SINCH_API_TOKEN!
);
await client.sendSMS('+59894123456', 'Tu pedido ha sido confirmado.');Authentication: Sinch uses Bearer token authentication with OAuth 2.0. Service Plan ID and API Token are required.
Source: Sinch API documentation (developers.sinch.com, verified October 2025)
Bird (MessageBird)
MessageBird's API implementation for Uruguay messaging with current SDK version:
import messagebird from 'messagebird';
class MessageBirdClient {
private client: any;
constructor(apiKey: string) {
this.client = messagebird(apiKey);
}
async sendSMS(
to: string,
message: string
): Promise<any> {
// Validate Uruguay mobile number
if (!/^\+5989\d{7}$/.test(to)) {
throw new Error('Invalid Uruguay mobile number format');
}
const params = {
originator: process.env.MESSAGEBIRD_ORIGINATOR || 'InfoSMS',
recipients: [to],
body: message,
// Optional parameters for delivery reporting
reportUrl: 'https://your-webhook.com/delivery-reports',
// Set message type
type: 'sms',
// Data coding scheme (default: plain text)
datacoding: 'auto'
};
return new Promise((resolve, reject) => {
this.client.messages.create(params, (error: any, response: any) => {
if (error) {
reject(error);
} else {
console.log(`Message sent! ID: ${response.id}, Recipients: ${response.recipients.totalCount}`);
resolve(response);
}
});
});
}
}
// Usage example
const client = new MessageBirdClient(process.env.MESSAGEBIRD_API_KEY!);
await client.sendSMS('+59894123456', 'Bienvenido a nuestro servicio!');Authentication: MessageBird uses API Key authentication via REST API. Access Key is required in the client initialization.
Source: MessageBird API documentation (developers.messagebird.com, verified October 2025)
API Rate Limits and Throughput
When sending SMS to Uruguay, consider these limitations (verified October 2025):
- Rate Limits:
- Twilio: 250 messages per second (global), 10 messages per second per recipient recommended
- Sinch: 30 messages per second (per service plan)
- MessageBird: 60 messages per second (varies by account tier)
Throughput Management Strategies:
// Example rate limiting implementation with backoff
class RateLimiter {
private queue: Array<() => Promise<void>> = [];
private processing: boolean = false;
private readonly rateLimit: number;
private readonly interval: number;
constructor(rateLimit: number, interval: number = 1000) {
this.rateLimit = rateLimit;
this.interval = interval;
}
async add(task: () => Promise<void>): Promise<void> {
this.queue.push(task);
if (!this.processing) {
this.processing = true;
await this.processQueue();
}
}
private async processQueue(): Promise<void> {
while (this.queue.length > 0) {
const batch = this.queue.splice(0, this.rateLimit);
await Promise.all(batch.map(task => task().catch(err => {
console.error('Task failed:', err);
// Implement retry logic here
})));
// Wait for interval before processing next batch
if (this.queue.length > 0) {
await new Promise(resolve => setTimeout(resolve, this.interval));
}
}
this.processing = false;
}
}
// Usage
const limiter = new RateLimiter(30, 1000); // 30 messages per second
for (const recipient of recipients) {
await limiter.add(() => sendSMS(recipient.phone, recipient.message));
}Source: Provider API documentation, rate limit specifications (verified October 2025)
Error Handling and Reporting
Implement comprehensive error handling with proper categorization:
interface SMSError {
code: string;
message: string;
timestamp: Date;
provider: string;
recipient?: string;
retryable: boolean;
}
class SMSErrorHandler {
static handleError(error: any, provider: string, recipient?: string): SMSError {
const errorLog: SMSError = {
code: error.code || error.status || 'UNKNOWN',
message: error.message || error.body?.message || 'Unknown error',
timestamp: new Date(),
provider,
recipient,
retryable: this.isRetryableError(error.code || error.status)
};
// Log error to monitoring system (e.g., Sentry, DataDog)
console.error(JSON.stringify(errorLog));
// Implement retry logic for specific error codes
if (errorLog.retryable) {
// Add to retry queue with exponential backoff
this.scheduleRetry(errorLog);
} else {
// Log permanent failure, notify administrators
this.notifyPermanentFailure(errorLog);
}
return errorLog;
}
private static isRetryableError(code: string | number): boolean {
// Twilio error codes
const retryableCodes = [
'30001', // Queue overflow
'30002', // Account suspended (temporary)
'30003', // Unreachable destination (temporary)
'30004', // Message blocked (spam filter – may be retryable)
'30005', // Unknown destination handset
'429', // Rate limit exceeded
'500', // Internal server error
'503' // Service unavailable
];
return retryableCodes.includes(String(code));
}
private static scheduleRetry(error: SMSError): void {
// Implement exponential backoff: 1s, 2s, 4s, 8s, 16s
console.log(`Scheduling retry for ${error.recipient}`);
// Add to retry queue implementation
}
private static notifyPermanentFailure(error: SMSError): void {
// Notify administrators of permanent delivery failure
console.error(`Permanent failure for ${error.recipient}: ${error.message}`);
// Implement notification logic (email, Slack, PagerDuty, etc.)
}
}Common Error Codes:
- 21614 (Twilio): Invalid destination number (landline or invalid format)
- 30006 (Twilio): Landline or unreachable carrier
- 21211 (Twilio): Invalid 'To' phone number
- 40300 (Sinch): Invalid recipient number
- 40001 (MessageBird): Insufficient balance
Source: Provider error code documentation (verified October 2025)
Recap and Additional Resources
Key Takeaways
-
Compliance Priorities:
- Obtain explicit opt-in consent (documented with timestamp and method)
- Honor opt-out requests within 24 hours
- Maintain proper documentation (5-year minimum retention)
- Respect messaging hours (9:00 AM – 8:00 PM, Monday–Saturday)
-
Technical Considerations:
- Use E.164 number formatting (+598 9X XXX XXX for mobile)
- Validate numbers before sending (reject landlines starting with 2, 4, 6)
- Implement proper rate limiting (provider-specific limits)
- Handle errors gracefully with retry logic for transient failures
- Monitor delivery rates by carrier (target: 95%+ for transactional)
-
Best Practices:
- Test thoroughly across all three carriers (Antel, Movistar, Claro)
- Monitor delivery rates and engagement metrics
- Keep messages concise and relevant (< 160 characters ideal)
- Use Spanish language exclusively with proper localization
- Implement MNP-aware routing for optimal delivery
Next Steps
- Review URSEC regulations at www.ursec.gub.uy
- Consult with local telecommunications counsel for compliance review
- Set up test accounts with preferred SMS providers (Twilio, Sinch, MessageBird)
- Implement proper monitoring and logging systems with DLR tracking
- Conduct carrier testing across Antel, Movistar, and Claro networks
- Establish baseline metrics for delivery rates and engagement
Additional Resources
- URSEC (Telecommunications Regulator): www.ursec.gub.uy
- Consumer Protection (INDEFEC): www.gub.uy/instituto-nacional-defensa-consumidor
- Uruguay Consumer Protection Law (Ley 17.250): www.impo.com.uy/bases/leyes/17250-2000
- ITU-T E.164 Numbering Standard: www.itu.int/rec/T-REC-E.164
- SMS Provider Documentation:
Source: Official government and regulatory websites (verified October 2025)
Frequently Asked Questions
How do I send SMS messages to Uruguay mobile numbers?
Send SMS to Uruguay mobile numbers by: (1) Format numbers in E.164 international standard (+598 followed by 8 digits starting with 9, e.g., +59894123456), (2) Choose an SMS provider (Twilio, Sinch, or MessageBird) and obtain API credentials, (3) Validate phone numbers using regex ^\+5989\d{7}$ to filter landlines (starting with 2, 4, 6), (4) Implement proper authentication (HTTP Basic for Twilio, OAuth 2.0 Bearer token for Sinch, API Key for MessageBird), (5) Configure delivery receipt webhooks to track message status, (6) Respect rate limits (250 msg/s for Twilio, 30 msg/s for Sinch, 60 msg/s for MessageBird). Uruguay has three major carriers: Antel (50% market share), Movistar (30%), and Claro (20%). Mobile Number Portability (MNP) is supported since 2013, so implement MNP-aware routing for optimal delivery rates targeting 95%+ for transactional messages.
What are Uruguay's SMS compliance and consent requirements?
Uruguay SMS compliance requires: (1) Explicit opt-in consent – obtain clear, documented consent before sending marketing messages (pre-checked boxes not sufficient), (2) Record retention – maintain consent records for minimum 5 years with timestamp and collection method, (3) Opt-out mechanism – recognize Spanish keywords (STOP, BAJA, CANCELAR, UNSUB, SALIR) and English equivalents (HELP, AYUDA, INFO), process within 24 hours (48 hours maximum), (4) Messaging hours – limit marketing to 9:00 AM – 8:00 PM Monday–Saturday (transactional 24/7 acceptable), avoid Sundays and national holidays, (5) Suppression list – maintain centralized database across all campaigns, (6) Language – use Spanish exclusively for best engagement (Rioplatense dialect with voseo). Legal framework: Ley 17.250 de Relaciones de Consumo (consumer protection), overseen by URSEC (telecommunications regulator) and INDEFEC (consumer protection institute). No official Do Not Call registry exists, but maintain your own suppression lists.
What SMS sender ID options are available in Uruguay?
Uruguay SMS sender ID options are limited: (1) Alphanumeric sender IDs – not supported by Antel, Movistar, or Claro; sender IDs are overwritten with carrier-assigned numeric identifiers, (2) International long codes – supported but sender ID not preserved; provisioning time immediate to 24 hours; suitable for transactional messages, OTP/2FA, alerts; may incur higher per-message costs, (3) Domestic long codes – not available through standard API providers for commercial SMS, (4) Short codes – available only through direct carrier agreements with 4–8 week provisioning time; ideal for high-volume campaigns with lower per-message rates but significant setup costs. Contact carrier business divisions directly: Antel (antel.com.uy/empresas), Movistar (movistar.com.uy/empresas), Claro (claro.com.uy/empresas). Workaround: Use consistent international number across campaigns for brand recognition, include company name in message body for identification.
Does Uruguay support Mobile Number Portability (MNP)?
Yes, Uruguay supports Mobile Number Portability (MNP) since 2013. Mobile subscribers can port numbers between Antel, Movistar, and Claro while retaining their original 8-digit number (format: +598 9X XXX XXX). Porting timeline: 1–3 business days after customer request. MNP database: Maintained by URSEC and accessible to licensed operators. Implementation requirement: Sender systems must implement MNP-aware routing logic to ensure messages route to the current carrier, not the original carrier indicated by number prefix. Options: (1) Integrate with MNP lookup services (HLR – Home Location Register lookups), (2) Use SMS aggregators that handle MNP routing automatically, (3) Monitor delivery rates by carrier to identify routing issues. Without proper MNP handling, delivery rates can drop 10–15% due to incorrect carrier routing. Best practice: Test across all three carriers during implementation to verify proper routing and establish baseline delivery metrics (target: 95%+ for transactional, 85%+ for marketing).
What are the SMS character limits and encoding rules for Uruguay?
Uruguay SMS character limits depend on encoding: (1) GSM-7 encoding (standard) – 160 characters for single SMS, 153 characters per segment for concatenated messages (7 characters reserved for UDH – User Data Header), supports Spanish accented characters (á, é, í, ó, ú, ñ, ¿, ¡) without triggering Unicode, (2) UCS-2 encoding (Unicode) – 70 characters for single SMS, 67 characters per segment for concatenated messages, triggered by emojis or special characters outside GSM-7 set, (3) Concatenated messages – supported across all carriers (Antel, Movistar, Claro) but charged per segment. Best practices: Keep messages under 160 characters to avoid segmentation charges, test character count with encoding detection tools before sending, use URL shorteners to conserve space, avoid excessive emojis that trigger UCS-2 encoding (reduces limit to 70 characters). Cost impact: Each segment billed separately, so 161-character message costs 2× a 160-character message. Spanish language content typically uses GSM-7 encoding efficiently.
How do I avoid SMS spam filtering in Uruguay?
Avoid Uruguay SMS spam filtering by: (1) Content best practices – avoid excessive punctuation (!!!), ALL CAPS messages, keyword stuffing (GRATIS, PROMOCIÓN, GANA), suspicious URLs or mismatched link text, (2) Sender patterns – maintain consistent sending volume (avoid sudden spikes), use registered sender IDs where available, establish sending reputation gradually with low volumes initially, (3) Message structure – include company name/brand in message body, use clear straightforward language, personalize with recipient name (improves engagement 20–30%), avoid excessive special characters or emojis, (4) URL handling – pre-register URLs with carrier spam filters, use HTTPS links only, consider using branded short domains instead of generic URL shorteners, test links before deployment, (5) List hygiene – remove inactive numbers (bounces, opt-outs), segment lists by engagement level, monitor complaint rates (keep < 0.1%). Carrier filtering rules: Messages flagged for spam undergo manual review causing delays; repeated violations result in sender blocking. Recovery: If filtered, contact carrier support with message samples and use case documentation to request whitelist inclusion.
What is the timezone and best time to send SMS in Uruguay?
Uruguay uses UTC-3 timezone (Uruguay Standard Time – UYT) year-round. Important: Uruguay does NOT observe Daylight Saving Time (DST) since March 2015, maintaining UTC-3 permanently. Recommended sending times: (1) Marketing messages – 9:00 AM – 8:00 PM Monday–Saturday; optimal engagement windows are 10:00 AM – 12:00 PM (morning) and 5:00 PM – 7:00 PM (evening), (2) Transactional messages (OTP, alerts, confirmations) – acceptable 24/7 as these are expected/requested by users, (3) Avoid – Sundays and national holidays for marketing; urgent security notifications permitted after hours. 2025 National Holidays to avoid: January 1 (New Year's), January 6 (Epiphany), April 18–19 (Holy Week/Semana de Turismo), May 1 (Labor Day), June 19 (Artigas Day), July 18 (Constitution Day), August 25 (Independence Day), October 12 (Day of Americas), November 2 (All Souls'), December 25 (Christmas). A/B testing data: Messages sent 10:00 AM – 12:00 PM show 15–20% higher open rates than afternoon sends. Avoid sending during major soccer matches (Uruguay national team games).
How do I handle SMS delivery errors and failed messages in Uruguay?
Handle Uruguay SMS delivery errors by implementing: (1) Error categorization – classify errors as retryable (queue overflow 30001, rate limit 429, temporary network issues 500/503) vs. permanent (invalid number 21614/21211, landline 30006, insufficient balance 40001), (2) Retry logic – implement exponential backoff for retryable errors (1s, 2s, 4s, 8s, 16s intervals), limit to 3–5 retry attempts, track retry count in database to prevent infinite loops, (3) Number validation – validate E.164 format (^\+5989\d{7}$) before API calls to catch invalid formats early, filter landlines (starting with 2, 4, 6) to avoid 21614 errors, (4) Delivery receipts (DLR) – configure webhook listeners to receive status updates (submitted, sent, delivered, failed), update message status in database, monitor delivery rates by carrier to identify routing issues, (5) Monitoring – set alerts for delivery rate drops below 90%, track error code distribution, establish baseline metrics (95%+ transactional, 85%+ marketing), (6) Carrier-specific handling – test across Antel, Movistar, Claro to identify carrier-specific issues, maintain separate retry queues per carrier. Common errors: 21614 (landline/invalid), 30006 (unreachable carrier), 429 (rate limit). Log all errors with provider name, recipient, timestamp for troubleshooting.
What are the restricted content and industries for SMS in Uruguay?
Uruguay restricts SMS content for: (1) Gambling and betting – heavily regulated under Ley 18.850; requires proper licensing and authorization; casino/sports betting promotions subject to advertising restrictions, (2) Adult content – prohibited for mass marketing; age verification required for any adult-oriented services, (3) Pharmaceuticals – unauthorized drug promotions prohibited; prescription medications require healthcare provider authorization, (4) Political campaigns – requires proper authorization during election periods; must comply with electoral commission rules (Corte Electoral), (5) Financial services – unlicensed financial promotions prohibited; requires Banco Central del Uruguay licensing; increasing scrutiny on cryptocurrency and forex trading promotions, (6) Spam factors – excessive promotional keywords (GRATIS, GANA), misleading claims, fake urgency tactics, unauthorized prize notifications. Legal framework: Ley 17.250 (consumer protection), Ley 18.850 (gambling regulation), Banco Central regulations (financial services). Carrier filtering: Messages flagged for prohibited content undergo manual review; repeated violations result in sender ID blocking and potential legal action. Best practice: Review message content against regulatory framework before deployment; maintain documentation of proper licensing/authorization; use clear disclaimers where required.
How do I localize SMS messages for Uruguay's market?
Localize Uruguay SMS by: (1) Language – use Spanish exclusively (Rioplatense dialect with voseo verb form); avoid Castilian Spanish common in Spain; recognize local expressions: "bárbaro" (great), "ta" (okay), "bo" (interjection), (2) Date/time formatting – use DD/MM/YYYY format (e.g., 25/12/2025), 24-hour clock (14:00 not 2:00 PM), (3) Currency – Uruguayan Peso (UYU) with $ symbol; use period as thousands separator: "$1.500" not "$1,500"; specify currency when amounts shown (e.g., "$500 UYU"), (4) Cultural considerations – strong European influences (Italian, Spanish heritage); mate culture central to social interactions; soccer (fútbol) extremely popular (avoid messaging during Uruguay national team matches); respect Catholic traditions and holidays, (5) Tone – friendly but professional; second-person "usted" for formal business, "vos" for casual marketing to younger demographics, (6) Message structure – include clear company identification in message body (alphanumeric sender IDs not preserved); provide opt-out instructions in Spanish ("Responde BAJA para cancelar"); include contact information for support. Engagement data: Spanish-language messages with local formatting show 40–50% higher engagement than generic translations. Test messages with local team members before deployment to verify cultural appropriateness and language accuracy.