sms compliance
sms compliance
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 |
| Region | Europe |
| 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)
Ukraine SMS Compliance: Regulations and Legal Requirements
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)
Consent Requirements and Opt-In Rules
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.
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.
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.
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.
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 Code | Provider | Description | Remediation |
|---|---|---|---|
| 21614 | Twilio | Invalid mobile number or landline | Validate with Lookup API; check number format |
| 21408 | Twilio | Alphanumeric sender not enabled | Enable in account settings |
| 21610 | Twilio | Recipient opted out | Remove from list; honor suppression |
| 30007 | Twilio | Carrier violation/filtered | Review content; avoid restricted keywords |
| 30008 | Twilio | Unknown destination | Retry after delay; check carrier status |
| 400 | Plivo | Invalid parameters | Verify API request format and parameters |
| 401 | Plivo | Authentication failed | Check AUTH_ID and AUTH_TOKEN |
| 429 | All | Rate limit exceeded | Implement backoff; reduce send rate |
| 402 | MessageBird | Insufficient balance | Add 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:
- Review the Law of Ukraine "On Electronic Communications"
- Implement proper opt-out handling
- Set up delivery monitoring systems
- Test messages across all three major carriers
- Configure webhook endpoints for delivery tracking
- Establish consent collection and documentation workflows
Additional Information:
- National Commission for State Regulation of Electronic Communications
- Ukrainian Data Protection Authority
- Electronic Communications Law Portal
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.