sms compliance

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

Ukraine SMS Guide: How to Send SMS Compliantly in 2024-2025

Learn how to send SMS in Ukraine compliantly. Covers Kyivstar, Vodafone, and lifecell requirements, alphanumeric sender IDs, consent regulations, API integration with Twilio/Plivo/Sinch, and Law on Electronic Communications compliance.

Ukraine SMS Guide: Compliance, Regulations & API Integration

Understanding the Ukraine SMS Market in 2024-2025

Locale name:Ukraine
ISO code:UA
RegionEurope
Mobile country code (MCC)255
Dialing Code+380

Market Conditions: Ukraine has a robust mobile market with high SMS adoption rates. Three major operators dominate the country's mobile market:

SMS Pricing (2024–2025):

  • International API Providers: $0.15–$0.20 USD per message (Twilio: $0.1747, Plivo: $0.1566, Sinch: $0.1462, Infobip: $0.2029). Source: Sent.dm Ukraine SMS Pricing (October 2025)

  • Local Operators: 0.20–0.40 UAH per SMS beyond bundled allowances in prepaid/postpaid plans

  • Kyivstar: Ukraine's largest mobile operator with 48% market share and 24 million subscribers (2024)

  • Vodafone Ukraine: Second-largest carrier with 35% market share and 15–16 million subscribers (2024)

  • lifecell: Third operator with 17% market share and 7–10 million subscribers. In October 2024, lifecell was acquired by a consortium led by French billionaire Xavier Niel's NJJ group and merged with Datagroup-Volia in a $435 million deal. Source: TeleGeography Ukraine Telecom Market (2024)

While OTT messaging apps like Viber and Telegram dominate personal communication, SMS remains crucial for business communications – especially authentication and notifications. Android devices hold 80% market share, while iOS accounts for 20%. Ukraine's telecommunications market shows resilience during ongoing challenges, with mobile penetration reaching 125 phones per 100 people. Source: Wikipedia – Telecommunications in Ukraine (2024)

SMS Features and Technical Capabilities in Ukraine

Ukraine supports most standard SMS features including concatenated messages and alphanumeric sender IDs, though two-way SMS functionality remains limited.

Two-Way SMS Support

Two-way SMS is not supported in Ukraine through most major SMS providers. This means you cannot receive replies to your SMS messages through standard A2P channels.

Workaround Solutions:

  • Viber Business Messages: Enables two-way communication with delivery receipts and read confirmations. Widely adopted in Ukraine with high user engagement rates
  • Telegram Bot API: Supports interactive messaging, buttons, and automated responses. Popular for customer service and notifications
  • Web-based response forms: Include shortened URLs in SMS directing recipients to web forms for feedback
  • Dedicated support phone numbers: Provide voice callback numbers for complex inquiries requiring two-way dialogue

Concatenated Messages (Segmented SMS)

Support: Yes, concatenation works for most sender ID types, though support varies by carrier.

Message Length Rules: Standard 160 characters per message segment using GSM-7 encoding.

Encoding Considerations: Messages using GSM-7 encoding allow 160 characters, while UCS-2 encoding (for Cyrillic characters) allows 70 characters per segment.

Example: A message containing "Ваше замовлення №12345 готове до отримання" (42 Cyrillic characters) uses UCS-2 encoding and consumes 1 segment. Adding Latin characters like "Order #12345 ready for pickup" in a mixed message forces UCS-2 encoding for the entire message, reducing the character limit to 70 per segment. A mixed 140-character message with both scripts uses 2 segments (70 + 70), while the same length with only Latin uses 1 segment (140 characters fits within GSM-7's 160-character limit).

MMS Support

MMS messages are not directly supported in Ukraine. Instead, MMS content converts automatically to SMS with an embedded URL link where recipients can view multimedia content. This ensures compatibility while maintaining the ability to share rich media.

Recipient Phone Number Compatibility

Number Portability

Number portability is available in Ukraine, allowing users to keep their phone numbers when switching carriers. The SMS infrastructure handles ported numbers automatically without impacting message delivery or routing.

Sending SMS to Landlines

Sending SMS to landline numbers is not supported in Ukraine. Attempts to send messages to landlines result in delivery failure with a 400 response error (code 21614), and no charges are incurred.

Phone Number Validation:

  • Mobile prefixes (Ukraine): 50, 63, 66, 67, 68, 73, 91, 92, 93, 94, 95, 96, 97, 98, 99
  • Landline prefixes: 32, 33, 34, 35, 36, 37, 38, 41, 42, 43, 44, 45, 46, 47, 48, 49, 61, 62, 64, 65, 69
  • Validation tools: Use Twilio Lookup API or Plivo Number Lookup to identify line type before sending
  • Format: Ukrainian numbers follow +380 XX XXX XXXX format (country code + 2-digit network code + 7-digit subscriber number)

The Law of Ukraine "On Electronic Communications" (effective since 01.01.2022) and the E-commerce Law govern Ukraine's SMS communications. The National Commission for State Regulation of Electronic Communications (NCEC) oversees telecommunications regulations, while the Ukrainian Parliament Commissioner for Human Rights handles data protection.

Penalties and Enforcement (per Law on Electronic Communications):

  • Operating without notification: Revenue confiscation or fine of $4,100 USD
  • Information/reporting violations: Fines of $410–$4,100 USD depending on company size and repeat offenses
  • Traffic routing violations: Fine of $4,100 USD
  • Significant market power non-compliance: Fine up to 1% of revenue from relevant market (repeat violations)
  • Regulator obstruction: Fine up to 0.3% of service provider's revenue

Source: IBA – E-communications Framework Ukraine (2024)

Explicit Consent Requirements:

  • Obtain written or electronic consent before sending marketing messages
  • Include timestamp, source, and scope of permission in consent records
  • Maintain documentation for the duration of messaging activities

Consent Template Example:

"Я погоджуюсь отримувати SMS-повідомлення від [Company Name] з рекламними пропозиціями та новинами. Частота: до 3 повідомлень на тиждень. Відповісти STOP для відмови."

(English: "I agree to receive SMS messages from [Company Name] with promotional offers and news. Frequency: up to 3 messages per week. Reply STOP to unsubscribe.")

Best Practices for Obtaining Consent:

  • Use clear, unambiguous language when requesting permission
  • Provide detailed information about message frequency and content type
  • Maintain an auditable trail of consent collection
  • Enable double opt-in for marketing campaigns

HELP/STOP and Other Commands

All SMS campaigns must support standard opt-out keywords:

  • STOP, СТОП, ВІДПИСАТИСЯ (unsubscribe)
  • HELP, ДОПОМОГА (help)

Recognize commands in both Latin and Cyrillic characters. Provide response messages in Ukrainian.

Example Response Messages:

  • STOP confirmation: "Ви успішно відписалися від SMS-розсилки [Company Name]. Більше не отримаєте повідомлення." (You have successfully unsubscribed from [Company Name] SMS. You will no longer receive messages.)
  • HELP response: "Для допомоги зателефонуйте [phone] або напишіть на [email]. STOP для відмови." (For help call [phone] or email [email]. STOP to unsubscribe.)

Do Not Call / Do Not Disturb Registries

Ukraine does not maintain a centralized Do Not Call registry. However, you should:

  • Maintain internal suppression lists
  • Honor opt-out requests within 24 hours
  • Implement automated filtering systems to exclude opted-out numbers
  • Document all opt-out requests for compliance purposes

Time Zone Sensitivity

While Ukraine lacks strict quiet hours regulations for SMS, follow these recommended practices:

  • Limit marketing messages to 9:00–20:00 local time (UTC+2/+3)
  • Send transactional messages 24/7 only when necessary
  • Respect national holidays and cultural events

Ukrainian National Holidays to Avoid (2024–2025):

  • January 1: New Year's Day
  • March 8: International Women's Day
  • May 1: Labor Day
  • May 5: Orthodox Easter (date varies annually)
  • May 9: Victory Day (May 8 in recent years)
  • June 28: Constitution Day
  • July 15: Ukrainian Statehood Day
  • August 24: Independence Day
  • October 1: Day of Defenders of Ukraine
  • December 25: Christmas Day

Source: Time and Date – Ukraine Holidays 2024

Alphanumeric Sender IDs and Phone Number Types for Ukraine

Alphanumeric Sender ID

Operator Network Capability: Fully supported

Registration Requirements: No pre-registration required, dynamic usage supported

Sender ID Preservation: Yes, sender IDs are preserved as specified

Character Limits and Format Rules:

  • Maximum length: 11 characters
  • Allowed characters: Upper and lowercase ASCII letters (A-Z, a-z), digits (0-9), and space character
  • Restrictions: Cannot consist of only numerals (must include at least one letter)
  • Case sensitivity: Preserved as submitted (e.g., "MyBrand" displays as "MyBrand", not "MYBRAND")

Valid Examples:

  • ✅ "MyCompany" (9 characters, mixed case)
  • ✅ "ACME Corp" (9 characters with space)
  • ✅ "Support24" (9 characters, alphanumeric)
  • ✅ "UA Bank" (7 characters)

Invalid Examples:

  • ❌ "123456789" (only numerals, no letters)
  • ❌ "MyCompany2024" (13 characters, exceeds 11-character limit)
  • ❌ "Hello@World" (contains special character @)
  • ❌ "Компанія" (Cyrillic characters not supported in most countries)

Source: Twilio Alphanumeric Sender ID

Long Codes

Domestic vs. International:

  • Domestic long codes not supported
  • International long codes supported but with limitations

Sender ID Preservation: No, international long codes may be replaced with generic alphanumeric IDs

Provisioning Time: Immediate for international long codes

Use Cases: Recommended for transactional messaging and two-factor authentication

Limitations Explained: International long codes (numbers from outside Ukraine) face carrier filtering, lower delivery rates, and sender ID replacement. Ukrainian carriers often convert international numbers to generic alphanumeric sender IDs to prevent spam and improve user experience. For best deliverability, use registered alphanumeric sender IDs instead of international long codes.

Short Codes

Support: Not currently supported in Ukraine

Provisioning Time: N/A

Use Cases: N/A

Content Restrictions and Industry-Specific Requirements

Restricted Industries:

  • Gambling and betting services
  • Adult content and services
  • Unauthorized pharmaceutical products
  • Political campaign messages without proper disclosure

Political Message Disclosure Requirements: Political SMS must include clear identification of the sponsoring party or candidate, campaign registration number (if applicable), and funding source disclosure per Ukrainian electoral law. Messages lacking proper attribution face carrier blocking or NCEC enforcement action.

Regulated Industries:

  • Financial services require regulatory disclaimers
  • Healthcare messages must maintain patient confidentiality
  • Insurance products need clear terms and conditions

Financial Services Disclaimer Examples:

  • Banking: "Кредит від [Bank Name]. Річна ставка від 18%. Деталі: [website]. Ліцензія НБУ №[number]" (Loan from [Bank]. Annual rate from 18%. Details: [website]. NBU License #[number])
  • Investment: "Інвестиції пов'язані з ризиком втрати капіталу. [Company] не гарантує прибуток." (Investments carry risk of capital loss. [Company] does not guarantee profit.)
  • Insurance: "Страхування від [Company]. Умови та виключення на [website]. Ліц. [number]" (Insurance from [Company]. Terms and exclusions at [website]. License [number])

Content Filtering

Carrier Filtering Rules:

  • Messages containing URLs face increased scrutiny
  • High-frequency messaging patterns trigger spam filters
  • Specific keywords related to restricted industries get blocked

High-Frequency Thresholds:

  • Individual recipient: More than 3–5 messages per day from same sender
  • Campaign volume: Sudden spikes exceeding 10x normal daily volume
  • Repeated patterns: Identical message content sent to 1000+ recipients within 1 hour
  • Burst sending: More than 100 messages sent in under 60 seconds without gradual ramp-up

Best Practices to Avoid Filtering:

  • Avoid URL shorteners in messages
  • Use consistent sender IDs
  • Maintain steady message volumes
  • Include clear business identification

Best Practices for Sending SMS in Ukraine

Messaging Strategy

  • Keep messages under 160 characters when possible
  • Include clear call-to-action in each message
  • Personalize content using recipient's name or relevant details
  • Maintain consistent branding across messages

Sending Frequency and Timing

  • Limit marketing messages to 2–3 per week per recipient
  • Space out messages to avoid clustering
  • Consider Ukrainian holidays and observances
  • Monitor engagement metrics to optimize timing

Localization

  • Use Ukrainian as primary language
  • Consider bilingual messages (Ukrainian/Russian) based on recipient preference
  • Use proper character encoding for Cyrillic alphabets
  • Respect cultural nuances in message content

Language Selection Guidance: Since 2022, Ukrainian has become the predominant language for official communications and business messaging. While most recipients understand Russian, using Ukrainian demonstrates respect for national identity and complies with language laws requiring Ukrainian in public communications. Use Russian only when specifically requested by recipients or for established customer relationships where language preference is documented. For maximum reach, default to Ukrainian with option for recipients to select Russian through preference management.

Opt-Out Management

  • Process opt-outs in real-time
  • Send confirmation message after opt-out
  • Maintain opt-out lists across all campaigns
  • Conduct regular audits of opt-out compliance

Testing and Monitoring

  • Test messages across major carriers (Kyivstar, Vodafone, lifecell)
  • Monitor delivery rates by carrier
  • Track engagement metrics and conversion rates
  • Conduct regular testing of opt-out functionality

SMS API Integration Examples for Ukraine

Twilio

Twilio provides a robust SMS API with specific support for Ukrainian message delivery. Authentication uses account SID and auth token credentials.

typescript
import { Twilio } from 'twilio';

// Initialize Twilio client with credentials
const client = new Twilio(
  process.env.TWILIO_ACCOUNT_SID,
  process.env.TWILIO_AUTH_TOKEN,
  {
    region: 'ie1', // Use Ireland region for better delivery to Ukraine
    edge: 'dublin'
  }
);

// Function to send SMS to Ukraine
async function sendSmsToUkraine(
  to: string,
  message: string,
  senderId: string
): Promise<void> {
  try {
    // Ensure proper formatting for Ukrainian numbers
    const formattedNumber = to.startsWith('+380') ? to : `+380${to}`;

    const response = await client.messages.create({
      body: message,
      from: senderId, // Alphanumeric sender ID
      to: formattedNumber,
      statusCallback: 'https://your-webhook.com/status' // Optional delivery status updates
    });

    console.log(`Message sent successfully! SID: ${response.sid}`);
  } catch (error) {
    if (error.code === 21614) {
      console.error('Invalid mobile number or landline destination');
    } else if (error.code === 21408) {
      console.error('Permission denied - alphanumeric sender ID not enabled');
    } else if (error.code === 21610) {
      console.error('Recipient has opted out (STOP request)');
    } else {
      console.error('Error sending message:', error);
    }
  }
}

Common Ukraine-Specific Error Handling:

  • 21614: Invalid number or landline (verify using Lookup API before sending)
  • 21408: Alphanumeric sender ID not enabled (activate in account settings)
  • 21610: Recipient opted out (remove from campaign list immediately)
  • 30007: Message filtered by carrier (review content for restricted keywords)
  • 30008: Unknown destination (network/carrier issue, retry with exponential backoff)

Sinch

Sinch offers direct integration with Ukrainian carriers and supports alphanumeric sender IDs.

typescript
import axios from 'axios';

class SinchSmsService {
  private readonly apiToken: string;
  private readonly serviceId: string;
  private readonly baseUrl: string;

  constructor(apiToken: string, serviceId: string) {
    this.apiToken = apiToken;
    this.serviceId = serviceId;
    this.baseUrl = 'https://eu.sms.sinch.com/xms/v1';
  }

  async sendSms(to: string, message: string, senderId: string): Promise<void> {
    try {
      const response = await axios.post(
        `${this.baseUrl}/${this.serviceId}/batches`,
        {
          from: senderId,
          to: [to],
          body: message,
          delivery_report: 'summary' // Enable delivery reporting
        },
        {
          headers: {
            'Authorization': `Bearer ${this.apiToken}`,
            'Content-Type': 'application/json'
          }
        }
      );

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

MessageBird

MessageBird provides reliable SMS delivery to Ukraine with support for multiple message types.

typescript
import messagebird from 'messagebird';

class MessageBirdService {
  private client: any;

  constructor(apiKey: string) {
    this.client = messagebird(apiKey);
  }

  sendSms(
    to: string,
    message: string,
    senderId: string
  ): Promise<any> {
    return new Promise((resolve, reject) => {
      // Configure message parameters
      const params = {
        originator: senderId,
        recipients: [to],
        body: message,
        type: 'business', // Specify message type
        encoding: 'auto' // Automatic handling of Unicode characters
      };

      this.client.messages.create(params, (err: any, response: any) => {
        if (err) {
          reject(err);
        } else {
          resolve(response);
        }
      });
    });
  }
}

Plivo

Plivo offers comprehensive SMS capabilities for Ukrainian message delivery.

typescript
import plivo from 'plivo';

class PlivoSmsService {
  private client: any;

  constructor(authId: string, authToken: string) {
    this.client = new plivo.Client(authId, authToken);
  }

  async sendSms(
    to: string,
    message: string,
    senderId: string
  ): Promise<void> {
    try {
      const response = await this.client.messages.create({
        src: senderId,
        dst: to,
        text: message,
        url_strip_query_params: false, // Preserve URL parameters if included
        powerpack_uuid: 'your-powerpack-id' // Optional for better routing
      });

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

API Rate Limits and Throughput

Provider-Specific Rate Limits:

  • Twilio: 1 message per second (MPS) default; upgradable to 10+ MPS for verified high-volume accounts. Queue capacity: 4 hours of messages
  • Plivo: 5 MPS default for SMS; can be increased to 30+ MPS upon request. No hard queue limit
  • Sinch: Project-level limit of 800 requests/second across all endpoints; message-specific limits vary by region
  • MessageBird: Default 10 MPS per channel; enterprise accounts can negotiate higher limits

Sources: Twilio Rate Limits, Plivo MPS, Sinch API Limits

Best Practices:

  • Implement exponential backoff for retry logic
  • Use queuing systems (Redis, RabbitMQ) for high-volume sending
  • Consider batch APIs for bulk messaging
  • Monitor rate limit headers in API responses

Error Handling and Reporting

  • Implement comprehensive logging with Winston or similar
  • Monitor delivery receipts via webhooks
  • Track common error codes:
    • Invalid number format
    • Network errors
    • Rate limit exceeded
  • Store message status updates for analytics

Error Code Reference Table:

Error CodeProviderDescriptionRemediation
21614TwilioInvalid mobile number or landlineValidate with Lookup API; check number format
21408TwilioAlphanumeric sender not enabledEnable in account settings
21610TwilioRecipient opted outRemove from list; honor suppression
30007TwilioCarrier violation/filteredReview content; avoid restricted keywords
30008TwilioUnknown destinationRetry after delay; check carrier status
400PlivoInvalid parametersVerify API request format and parameters
401PlivoAuthentication failedCheck AUTH_ID and AUTH_TOKEN
429AllRate limit exceededImplement backoff; reduce send rate
402MessageBirdInsufficient balanceAdd credits to account

Key Takeaways and Next Steps

Key Takeaways:

  • Always use alphanumeric sender IDs for best delivery rates
  • Implement proper error handling and monitoring
  • Follow Ukrainian language requirements
  • Maintain proper consent records

Next Steps:

  1. Review the Law of Ukraine "On Electronic Communications"
  2. Implement proper opt-out handling
  3. Set up delivery monitoring systems
  4. Test messages across all three major carriers
  5. Configure webhook endpoints for delivery tracking
  6. Establish consent collection and documentation workflows

Additional Information:

Technical Resources:

Frequently Asked Questions:

Q: How do I validate Ukrainian phone numbers before sending?

A: Use the Twilio Lookup API or Plivo Number Lookup to verify number validity and line type. Ukrainian mobile numbers use prefixes 50, 63, 66, 67, 68, 73, 91–99, while landlines use 32–49, 61–62, 64–65, 69.

Q: What's the best way to handle Cyrillic characters in SMS?

A: Use UCS-2 encoding for Cyrillic text, which limits messages to 70 characters per segment. Most APIs handle encoding automatically, but verify your character count calculation accounts for the reduced limit.

Q: Can I use Russian language in SMS campaigns?

A: While technically possible, Ukrainian is strongly recommended for all business communications since 2022. Use Russian only when specifically requested by recipients and documented in preference settings.

Q: How quickly are opt-out requests processed?

A: Process STOP requests immediately (within seconds) to avoid sending additional messages. Maintain a real-time suppression list synchronized across all campaign systems.

Q: What should I do if delivery rates suddenly drop?

A: Check carrier status updates, verify sender ID registration, review content for filtering triggers, test across multiple carriers, and contact your SMS provider for routing diagnostics.

Frequently Asked Questions

How to send SMS messages in Ukraine?

Use an alphanumeric sender ID and a reputable SMS API provider like Twilio, Sinch, MessageBird, or Plivo. Ensure your messages are localized in Ukrainian and comply with all regulations.

What is the best SMS sender ID type for Ukraine?

Alphanumeric sender IDs are fully supported and recommended for best delivery rates in Ukraine. Avoid using short codes as they are not supported, and be aware that international long codes may be replaced with generic alphanumeric IDs.

Why does Ukraine not support two-way SMS?

Two-way SMS is not supported through most major SMS providers in Ukraine via standard A2P channels. Businesses cannot typically receive replies to their SMS messages.

What are the character limits for SMS in Ukraine?

Ukraine supports concatenated messages. Each segment allows 160 characters using GSM-7 encoding or 70 characters using UCS-2 encoding for Cyrillic script.

When should I send marketing SMS messages in Ukraine?

While no strict quiet hours exist, best practice is to limit marketing SMS to between 9:00 and 20:00 local time (UTC+2/+3), respecting holidays and cultural events. Transactional messages may be sent 24/7 if necessary.

Can I send SMS to landlines in Ukraine?

No, sending SMS to landline numbers in Ukraine is not supported and will result in a delivery failure with a 400 response error (code 21614).

How to get consent for SMS marketing in Ukraine?

Explicit written or electronic consent, including timestamp, source, and scope, is required before sending marketing SMS in Ukraine. Maintain documentation and enable double opt-in as a best practice.

What are the required opt-out keywords for SMS in Ukraine?

STOP, ?????????????????????? (unsubscribe), HELP, and ?????????????? (help) are required opt-out keywords and must be recognized in both Latin and Cyrillic characters.

What is the process for managing SMS opt-outs in Ukraine?

Process opt-outs in real-time, send a confirmation message, maintain opt-out lists across all campaigns, and regularly audit opt-out compliance.

How to handle MMS messages in Ukraine?

MMS is not directly supported. MMS content will be converted to SMS with a URL link where the recipient can view the multimedia content.

What are the restricted SMS content categories in Ukraine?

Gambling, adult content, unauthorized pharmaceuticals, and undisclosed political campaign messages are restricted via SMS in Ukraine.

What are the best practices for sending SMS in Ukraine?

Keep messages concise, include a call to action, personalize content, maintain consistent branding, localize content in Ukrainian, and adhere to frequency and timing best practices.

How to integrate with SMS APIs for sending messages to Ukraine?

The article provides example integrations using Twilio, Sinch, MessageBird, and Plivo, each demonstrating authentication, message parameters, and best practices.

What are the regulations governing SMS in Ukraine?

The Law of Ukraine "On Electronic Communications" (effective 01.01.2022) and the E-commerce Law govern SMS communications, overseen by the NCEC and the Ukrainian Parliament Commissioner for Human Rights, respectively.

Where can I find additional resources for SMS regulations and best practices in Ukraine?

The article provides links to the National Commission for State Regulation of Electronic Communications, Ukrainian Data Protection Authority, Electronic Communications Law Portal, and developer portals for several SMS API providers.