sms compliance

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

Latvia SMS Guide: GDPR Compliance, Regulations & API Integration (2024)

Send SMS in Latvia compliantly. Comprehensive guide covering GDPR requirements, Data State Inspectorate regulations, carrier specs (LMT, Tele2, Bite), and API integration with Twilio, Sinch, MessageBird, and Plivo.

How to Send SMS in Latvia: Compliance & Best Practices Guide

Sending SMS in Latvia requires compliance with strict EU data protection regulations, including GDPR and the ePrivacy Directive. This comprehensive guide covers everything you need to send SMS messages to Latvian customers legally:

  • GDPR and ePrivacy compliance for SMS marketing
  • Data State Inspectorate (DVI) regulations and enforcement
  • Carrier requirements for LMT, Tele2, and Bite networks
  • API integration guides with code examples for Twilio, Sinch, MessageBird, and Plivo
  • Sender ID options and registration requirements
  • Best practices for delivery rates and user engagement

Latvia SMS Market: Key Statistics & Carriers

PropertyValue
Locale nameLatvia
ISO codeLV
RegionEurope
Mobile Country Code (MCC)247
Dialing Code+371

Market Conditions

Latvia operates a mature mobile market with high SMS adoption. Three operators dominate:

  • LMT (Latvijas Mobilais Telefons) – 40%+ market share
  • Tele2 Latvia – 20–30% market share
  • Bite Latvia – 20–25% market share (2024 data)

While OTT messaging apps like WhatsApp and Messenger have gained popularity, SMS remains essential for business communications, authentication, and transactional notifications. Android maintains a slight edge over iOS in market share.


SMS Capabilities in Latvia: Features & Limitations

Latvia supports most modern SMS features, including concatenated messages and alphanumeric sender IDs. Two-way SMS functionality is not available.

Two-Way SMS Support

Status: Not supported

Major SMS providers do not support two-way SMS in Latvia. If you require two-way communication, consider alternative channels or dedicated local solutions.

Concatenated Messages (Segmented SMS)

Support: Yes, supported for most sender ID types (may vary by carrier)

Message Length Rules:

  • GSM-7 encoding: 160 characters per segment
  • Unicode (UCS-2): 70 characters per segment

Encoding: Messages automatically use the appropriate encoding (GSM-7 or UCS-2) based on content.

Cost Implications: Carriers bill each segment separately. A 300-character message using GSM-7 encoding costs twice as much as a single 160-character message. Plan message length carefully to control costs.

MMS Support

Status: Converted to SMS with URL

Carriers automatically convert MMS messages to SMS with an embedded URL link to the media content, ensuring compatibility across all devices.

Recipient Phone Number Compatibility

Number Portability

Status: Fully available

Users can keep their phone numbers when switching carriers. Carriers automatically route messages to the current provider without impacting delivery.

Can You Send SMS to Landlines in Latvia?

Status: Not supported

Attempts to send SMS to landline numbers fail with a 400 error response (code 21614 for Twilio API). You won't be charged for failed attempts.

SMS Compliance Requirements in Latvia: GDPR & DVI Regulations

Latvia follows EU regulations, including GDPR and ePrivacy Directive requirements for SMS communications. The Data State Inspectorate (Datu valsts inspekcija, DVI) oversees data protection compliance, while the Public Utilities Commission (Sabiedrisko pakalpojumu regulēšanas komisija, SPRK) regulates telecommunications.

Primary Legislation: The Law on Information Society Services governs electronic direct marketing, including SMS communications. In July 2022, Latvia enacted the Electronic Communication Law (ECL), which transposes the European Electronic Communications Code (EECC).

2024 Enforcement: DVI actively enforces consent requirements with multiple enforcement actions addressing improper consent mechanisms. Companies face fines for collecting consent through pre-checked boxes or implied consent.

Explicit Consent Requirements for Natural Persons (B2C):

  • Obtain written or electronic opt-in consent before sending marketing messages to individuals
  • Ensure consent is freely given, specific, informed, and unambiguous (per GDPR Article 4(11))
  • Collect separate consent for SMS marketing (distinct from email or other channels)
  • Maintain detailed records of when and how you obtained consent
  • Avoid pre-checked boxes or assumed consent – they violate compliance requirements
  • Clearly state the purpose of messages during opt-in

"Soft Opt-In" Exception for Existing Customers:

Per the Law on Information Society Services, you don't need consent if:

  • You obtained contact data during a sale or service provision
  • Your marketing promotes the same or similar goods/services
  • The recipient can decline easily and at no cost
  • The recipient has not previously objected to being contacted

Legal Persons (B2B Communications):

  • No opt-in consent required when sending to legal persons
  • Provide an easy opt-out mechanism (electronically and free of charge)
  • Make opt-out available whenever you use contact data for marketing

DVI Guidance (April 2022): The DVI clarified that you cannot send commercial communications to new customers without separate consent obtained when they make a purchase or receive a service. Your opt-out process must not be more complicated than your opt-in process.

HELP/STOP and Other Commands

Required Features:

Command TypeLatvianEnglishPurpose
Opt-outATCELTSTOPUnsubscribe from messages
AssistancePALĪDZĪBAHELPRequest support information

Implementation Requirements:

  • Make commands free for users to send
  • Process opt-out requests within 24 hours
  • Confirm opt-out status to users

Do Not Call / Do Not Disturb Registries

Status: No centralized registry

Latvia does not maintain a centralized Do Not Call registry. However, you must:

  • Maintain your own suppression lists
  • Honor opt-out requests immediately
  • Keep records of opted-out numbers for at least 2 years
  • Regularly clean contact lists against suppression databases

Latvia SMS Sending Hours: Timing & Restrictions

Latvia Time Zone: Eastern European Time (EET/EEST, UTC+2/UTC+3)

Recommended Schedule:

TimeDayStatus
9:00 AM – 8:00 PMMonday–Saturday✓ Allowed
8:00 PM – 9:00 AMAll days✗ Avoid (except emergencies)
Any timeSundays & holidays✗ Avoid (except emergencies)

Major Latvian Holidays to Avoid:

  • January 1 – New Year's Day
  • Good Friday (date varies)
  • Easter Monday (date varies)
  • May 1 – Labour Day
  • May 4 – Declaration of Independence Day
  • June 23–24 – Midsummer (Jāņi)
  • November 18 – Independence Day
  • December 24–26 – Christmas
  • December 31 – New Year's Eve

Latvia Sender ID Options: Alphanumeric, Long Codes & Short Codes

Alphanumeric Sender ID

Operator Network Capability: Fully supported

Registration Requirements: No pre-registration required – use dynamic sender IDs

Sender ID Preservation: Carriers display sender IDs as-is to recipients

Character Limits: 3–11 characters (letters, numbers, and limited special characters)

Reply Capability: One-way only – recipients cannot reply to alphanumeric sender IDs

Best Practices:

  • Use your brand name for recognition
  • Avoid special characters beyond hyphens and underscores
  • Test sender IDs across all carriers before launching campaigns

Long Codes

Support:

  • Domestic long codes: Not supported
  • International long codes: Fully supported

Sender ID Preservation: Yes, Latvia preserves original sender IDs

Provisioning Time: Typically 1–2 business days

Use Cases: Transactional messages, alerts, and two-factor authentication

Short Codes

Support: Not currently available in Latvia


SMS Content Restrictions in Latvia: Industry Guidelines

Restricted Industries and Content:

Industry/ContentStatusRequirements
Gambling & bettingRestrictedRequire special permits
Adult contentProhibitedStrictly banned
Financial servicesRestrictedMust include regulatory disclaimers
Healthcare messagesRestrictedMust comply with medical privacy laws
CryptocurrencyRestrictedFace strict regulations

How Latvian Carriers Filter SMS Content

Carrier Filtering Rules:

  • Carriers block messages containing certain keywords
  • Use URLs from reputable domains only
  • Avoid excessive capitalization and special characters
  • Limit to 5 URLs per message maximum

Tips to Avoid Blocking:

  • Use clear, professional language
  • Avoid spam trigger words
  • Include your company name in sender ID
  • Maintain consistent sending patterns
  • Keep URL count minimal

Latvia SMS Best Practices: Delivery & Engagement Strategies

Messaging Strategy

Create effective SMS messages by following these guidelines:

  • Keep messages under 160 characters when possible
  • Include a clear call-to-action
  • Personalize using the recipient's name or preferences
  • Maintain a consistent brand voice
  • Include opt-out instructions in marketing messages

Message Template Examples:

Transactional Message:

[BrandName]: Your order #12345 has shipped. Track: https://track.co/abc123 Reply STOP to opt out

Marketing Message:

[BrandName]: 20% off this weekend only! Use code SAVE20. Shop: https://shop.co/sale Reply STOP to opt out

Authentication Message:

[BrandName]: Your verification code is 847392. Valid for 10 minutes. Don't share this code.

Sending Frequency and Timing

Balance engagement with respect for your audience:

  • Limit to 2–4 messages per month per recipient
  • Respect quiet hours (8:00 PM – 9:00 AM)
  • Avoid sending during major holidays
  • Space out bulk campaigns to prevent network congestion

Industry-Specific Recommendations:

  • Retail: 2–4 messages/month (promotions, sales alerts)
  • Financial services: 4–8 messages/month (transaction alerts, security notifications)
  • Healthcare: 1–2 messages/month (appointment reminders)
  • E-commerce: 2–3 messages/month (order updates, special offers)

Localization for Latvian Audiences

Language Support:

  • Offer messages in both Latvian and Russian (approximately 25% of the population speaks Russian as their first language)
  • Use proper character encoding for local characters (ā, č, ē, ģ, ī, ķ, ļ, ņ, š, ū, ž)
  • Provide customer support in both languages

Cultural Considerations:

  • Latvians value directness and brevity in communications
  • Respect national holidays and cultural traditions (especially Midsummer/Jāņi celebrations)
  • Use formal language unless you have an established casual relationship with recipients
  • Consider regional differences between Riga and rural areas

Opt-Out Management

Implement robust opt-out processes:

  • Process opt-outs within 24 hours
  • Send confirmation of opt-out
  • Maintain a centralized opt-out database
  • Conduct regular audits of opt-out compliance

Testing and Monitoring

Ensure reliable delivery through systematic testing:

  • Test across all major carriers (LMT, Tele2, Bite)
  • Monitor delivery rates by carrier
  • Track engagement metrics
  • Test opt-out functionality regularly
  • Monitor for carrier filtering changes

Key Performance Indicators to Track:

  • Delivery rate: Aim for 95%+ (Latvia average: 96–98%)
  • Click-through rate: Benchmark varies by industry (typical: 5–15%)
  • Opt-out rate: Keep below 2%
  • Bounce rate: Keep below 3%
  • Engagement time: Monitor when recipients interact with messages

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

Twilio SMS Integration for Latvia

Twilio provides robust SMS capabilities for Latvia through their REST API. Authenticate using your account SID and auth token.

Key Parameters:

  • to: Latvian phone numbers in E.164 format (+371XXXXXXXX)
  • from: Your alphanumeric sender ID or phone number
  • body: Message content (supports UTF-8 for Latvian characters)
typescript
import { Twilio } from 'twilio';

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

async function sendSMSToLatvia() {
  try {
    const message = await client.messages.create({
      body: 'Sveiki! Your message here',
      from: 'YourBrand',
      to: '+37120123456',
      statusCallback: 'https://your-domain.com/sms/status',
      statusCallbackMethod: 'POST'
    });

    console.log(`Message sent successfully: ${message.sid}`);
    console.log(`Status: ${message.status}`);
    return message;
  } catch (error) {
    if (error.code === 21614) {
      console.error('Cannot send to landline number');
    } else if (error.code === 21211) {
      console.error('Invalid phone number format');
    } else {
      console.error('Error sending message:', error.message);
    }
    throw error;
  }
}

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

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

  if (ErrorCode) {
    console.error(`Delivery failed with error: ${ErrorCode}`);
  }

  res.status(200).send('OK');
});

Sinch SMS Integration for Latvia

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

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

async function sendSinchSMS() {
  const smsApi = new SmsApi({
    apiToken: process.env.SINCH_API_TOKEN,
    projectId: process.env.SINCH_PROJECT_ID
  });

  try {
    const response = await smsApi.send({
      to: ['+37120123456'],
      from: 'CompanyName',
      message: 'Your message here',
      deliveryReport: 'summary',
      callbackUrl: 'https://your-domain.com/sms/callback'
    });

    console.log('Message sent:', response.id);
    console.log('Batch ID:', response.batchId);
    return response;
  } catch (error) {
    console.error('Sinch SMS error:', error.message);

    // Implement retry logic with exponential backoff
    if (error.statusCode === 429) {
      console.log('Rate limit exceeded, retrying after delay');
      await new Promise(resolve => setTimeout(resolve, 5000));
      return sendSinchSMS(); // Retry once
    }

    throw error;
  }
}

MessageBird SMS Integration for Latvia

MessageBird provides reliable SMS delivery in Latvia with advanced features.

typescript
import messagebird from 'messagebird';

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

function sendMessageBirdSMS(): Promise<any> {
  return new Promise((resolve, reject) => {
    messageBirdClient.messages.create({
      originator: 'YourBrand',
      recipients: ['+37120123456'],
      body: 'Your message content',
      scheduledDatetime: null,
      reference: 'your-reference'
    }, (err, response) => {
      if (err) {
        console.error('MessageBird error:', err);
        reject(err);
        return;
      }
      console.log('Message sent:', response.id);
      console.log('Recipients:', response.recipients);
      resolve(response);
    });
  });
}

Plivo SMS Integration for Latvia

Plivo offers competitive rates and reliable delivery for Latvia SMS.

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: 'YourBrand',
      dst: '37120123456',
      text: 'Your message here',
      url: 'https://your-callback-url.com',
      method: 'POST'
    });

    console.log('Message sent:', response.messageUuid);
    console.log('API ID:', response.apiId);
    return response;
  } catch (error) {
    console.error('Plivo error:', error.message);
    throw error;
  }
}

API Rate Limits and Throughput

Provider Rate Limits:

ProviderMessages/SecondBest For
Twilio100High-volume campaigns
Sinch30Transactional messages
MessageBird60Mixed use cases
Plivo50Cost-effective campaigns

Strategies for Large-Scale Sending:

  • Implement queue systems (Redis or RabbitMQ)
  • Use batch APIs where available
  • Monitor throughput and adjust sending rates
  • Implement exponential backoff for retries

Queue Implementation Example (Redis):

typescript
import { Queue } from 'bull';

const smsQueue = new Queue('latvia-sms', {
  redis: {
    host: process.env.REDIS_HOST,
    port: 6379
  }
});

// Add messages to queue
async function queueSMS(to: string, body: string) {
  await smsQueue.add({
    to,
    body,
    from: 'YourBrand'
  }, {
    attempts: 3,
    backoff: {
      type: 'exponential',
      delay: 2000
    }
  });
}

// Process queue with rate limiting
smsQueue.process(50, async (job) => {
  const { to, body, from } = job.data;
  return await sendSMSToLatvia(to, body, from);
});

Error Handling and Reporting

Implement comprehensive error handling for reliable message delivery:

Common Error Codes for Latvia:

Error CodeProviderMeaningAction
21614TwilioLandline numberValidate number type before sending
21211TwilioInvalid formatVerify E.164 format
30003TwilioUnreachable destinationRemove from list
30005TwilioUnknown destinationValidate number exists
403SinchForbiddenCheck account permissions
429AllRate limit exceededImplement backoff retry

Error Handling Pattern:

typescript
async function sendSMSWithRetry(to: string, body: string, maxRetries = 3) {
  let attempt = 0;

  while (attempt < maxRetries) {
    try {
      const correlationId = `sms-${Date.now()}-${Math.random()}`;
      console.log(`[${correlationId}] Sending SMS to ${to}, attempt ${attempt + 1}`);

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

      console.log(`[${correlationId}] Success: ${result.sid}`);

      // Store delivery receipt
      await db.smsLogs.insert({
        correlationId,
        messageSid: result.sid,
        to,
        status: result.status,
        timestamp: new Date()
      });

      return result;

    } catch (error) {
      attempt++;

      if (error.code === 21614 || error.code === 21211) {
        // Don't retry invalid numbers
        throw error;
      }

      if (attempt >= maxRetries) {
        console.error(`Failed after ${maxRetries} attempts:`, error);
        throw error;
      }

      // Exponential backoff
      const delay = Math.pow(2, attempt) * 1000;
      await new Promise(resolve => setTimeout(resolve, delay));
    }
  }
}

Latvia SMS FAQs: Common Questions Answered

Do I need to register my sender ID in Latvia?

No, Latvia does not require pre-registration for alphanumeric sender IDs. Use dynamic sender IDs (3–11 characters) that display as-is to recipients. However, alphanumeric sender IDs are one-way only – recipients cannot reply to these messages.

What laws govern SMS marketing in Latvia?

SMS marketing in Latvia operates under the GDPR, ePrivacy Directive, and the Law on Information Society Services. The Data State Inspectorate (DVI) oversees enforcement. Obtain explicit opt-in consent before sending marketing SMS to individuals (B2C), with separate consent required for SMS distinct from other channels. The July 2022 Electronic Communication Law (ECL) transposes the European Electronic Communications Code.

Yes, for B2C communications, obtain explicit opt-in consent before sending marketing SMS. Consent must be freely given, specific, informed, and unambiguous per GDPR Article 4(11). A "soft opt-in" exception exists for existing customers if you obtained their contact data during a sale and are marketing similar products. For B2B communications to legal persons, opt-in is not required, but you must provide an easy opt-out mechanism.

Which mobile carriers operate in Latvia?

Latvia has three major mobile carriers: LMT (Latvijas Mobilais Telefons) with 40%+ market share, Tele2 Latvia with 20–30% market share, and Bite Latvia with 20–25% market share as of 2024. All three carriers support number portability, allowing users to keep their phone numbers when switching providers.

Carrier Technical Support:

What character encoding should I use for Latvian SMS?

Use UTF-8 or UCS-2 encoding to properly display Latvian special characters (ā, č, ē, ģ, ī, ķ, ļ, ņ, š, ū, ž). Messages with these characters use Unicode (UCS-2) encoding, limiting each segment to 70 characters instead of the standard 160 characters with GSM-7 encoding. Most SMS APIs automatically detect and apply the correct encoding.

What are the SMS sending hour restrictions in Latvia?

Send SMS messages between 9:00 AM and 8:00 PM Eastern European Time (EET/EEST, UTC+2/UTC+3). Avoid sending on Sundays and national holidays. Emergency messages may be sent outside these hours if truly urgent. Respecting these quiet hours helps maintain compliance and customer satisfaction.

How long does it take to start sending SMS in Latvia?

Start sending SMS to Latvia immediately using international long codes or alphanumeric sender IDs (no registration required). International long codes typically provision in 1–2 business days. Domestic long codes and short codes are not currently available in Latvia. Most businesses can begin sending within 24 hours using international routes.


Summary and Additional Resources

Key Takeaways

  1. Compliance Priorities

    • Obtain explicit opt-in consent for B2C marketing (separate consent for SMS)
    • Honor opt-out requests within 24 hours
    • Maintain detailed records of consent
    • Follow GDPR and Law on Information Society Services requirements
    • Understand the "soft opt-in" exception for existing customers
  2. Technical Best Practices

    • Use proper character encoding for Latvian characters (ā, č, ē, ģ, ī, ķ, ļ, ņ, š, ū, ž)
    • Implement proper error handling and logging
    • Monitor delivery rates across all three carriers (LMT, Tele2, Bite)
    • Test across all carriers before launching campaigns
  3. Localization Requirements

    • Support Latvian language and proper character encoding
    • Respect local time zones (EET/EEST)
    • Consider cultural factors and holidays
    • Provide STOP/ATCELT and HELP/PALĪDZĪBA keywords

Next Steps

  1. Review the Data State Inspectorate guidelines and April 2022 Commercial Communications Guidance
  2. Consult with local legal counsel for compliance with the Law on Information Society Services
  3. Set up test accounts with your preferred SMS providers (Twilio, Sinch, MessageBird, or Plivo)
  4. Implement consent tracking and monitoring systems
  5. Test message delivery across LMT, Tele2, and Bite networks

Additional Resources

Official Regulatory Sources:

Industry Resources:

Frequently Asked Questions

How to send SMS messages in Latvia?

Use an SMS API provider like Twilio, Sinch, MessageBird, or Plivo. Ensure your message content complies with Latvian regulations, including obtaining consent for marketing messages and honoring opt-out requests. Remember to format phone numbers with the +371 country code.

What is the SMS market like in Latvia?

Latvia has a mature mobile market with high SMS adoption rates. Key operators include LMT, Tele2, and Bite. While OTT apps are popular, SMS remains vital for business communication and authentication, with a relatively even split between Android and iOS users.

Why does Latvia not support two-way SMS?

Two-way SMS is not supported through major SMS providers in Latvia. Businesses needing two-way communication should consider alternative channels or dedicated local solutions. This limitation primarily affects interactive SMS services.

When should I send SMS messages in Latvia?

Adhere to Latvian time zones (EET/EEST) and send messages between 9:00 AM and 8:00 PM local time. Avoid sending on Sundays and national holidays. Emergency messages are permissible outside these hours only if genuinely urgent.

Can I use an alphanumeric sender ID in Latvia?

Yes, alphanumeric sender IDs are fully supported in Latvia. No pre-registration is required, allowing for dynamic usage and ensuring sender IDs are displayed as-is to recipients.

What SMS features are supported in Latvia?

Latvia supports concatenated messages (long SMS) and alphanumeric sender IDs. MMS messages are automatically converted to SMS with a URL link to the media. Number portability is available, simplifying routing. However, two-way SMS and sending to landlines are not supported.

How to comply with SMS regulations in Latvia?

Obtain explicit consent for marketing messages, honor STOP/ATCELT (or HELP/PALĪDZĪBA) keywords, and maintain detailed records. Latvia follows GDPR and ePrivacy Directive rules overseen by the Data State Inspectorate and the Public Utilities Commission.

What are the restrictions on SMS content in Latvia?

Gambling, adult content, and cryptocurrency promotions face strict regulations. Financial and healthcare messages must include disclaimers and comply with privacy laws. Avoid spam trigger words and excessive capitalization to prevent carrier filtering.

How long are SMS messages in Latvia?

Standard SMS length is 160 characters for GSM-7 encoding and 70 characters for Unicode. Latvia supports concatenated messages, allowing longer messages to be sent as segmented parts.

What is the process for sending SMS to Latvia via Twilio?

Initialize the Twilio client with your Account SID and Auth Token. Use the client's messages.create method, providing the message body, your alphanumeric sender ID, and the recipient's number in +371 format.

How to handle SMS opt-outs in Latvia?

Process opt-out requests within 24 hours, send confirmation of opt-out, and maintain a centralized opt-out database. Both "STOP" and "ATCELT" keywords must be honored. Regularly audit for compliance.

What are the best practices for SMS marketing in Latvia?

Keep messages concise, include clear calls-to-action, personalize content, and maintain a consistent brand voice. Limit frequency to 2-4 messages per month, respect quiet hours, and support both Latvian and Russian languages.

Which SMS API providers offer services in Latvia?

Several providers offer SMS services for Latvia, including Twilio, Sinch, MessageBird, and Plivo. Each offers various features, pricing, and throughput capabilities. Choose the provider that best fits your specific needs.