sms compliance
sms compliance
How to Send SMS to Serbia: Complete API Integration Guide (2025)
Learn how to send SMS messages to Serbia with Twilio, Sinch, and MessageBird APIs. Covers RATEL compliance, sender ID registration, MTS/Yettel/A1 operators, and deliverability best practices.
Serbia SMS Best Practices, Compliance, and Features
Serbia SMS Market Overview
Sending SMS messages to Serbia requires understanding the local market structure, operator landscape, and technical requirements. This guide covers everything you need to integrate SMS APIs for Serbian recipients, including Twilio, Sinch, and MessageBird implementation examples.
| Locale name: | Serbia |
|---|---|
| ISO code: | RS |
| Region | Europe |
| Mobile country code (MCC) | 220 |
| Dialing Code | +381 |
Mobile Number Format: Serbia mobile numbers follow the E.164 international format: +381XXXXXXXXX. Mobile numbers are 8-9 digits after the country code. The leading "0" trunk prefix used domestically (e.g., 063 123 4567) must be dropped when formatting for international use.
Format Examples:
- International format:
+381631234567 - Local format (within Serbia):
063 123 4567 - Formatted international:
+381 63 123 4567
Network Prefixes by Operator:
- MTS (Telekom Srbija): 60, 61, 62, 63, 64, 65, 66
- Yettel: 60, 62, 63, 64, 65, 66
- A1 Srbija: 60, 61, 62, 63, 64, 65, 66
Market Conditions: Serbia has a mature mobile market with high SMS adoption rates. The country's three mobile operators – Telekom Srbija/MTS (46.8% market share), Yettel (31.2%, formerly Telenor Serbia), and A1 Srbija (22%, formerly VIP Mobile) – serve the entire market. In 2024, MTS achieved the highest network quality score (940.75 points), followed by A1 (895.58) and Yettel (858.90). These network quality scores directly impact SMS deliverability, with higher-scoring networks typically achieving 98-99% delivery rates for properly formatted messages. While OTT messaging apps like WhatsApp and Viber are popular, SMS remains crucial for business communications and authentication. Android devices dominate with approximately 74.6% market share (as of 2022-2023), while iOS represents approximately 25% of the mobile OS market.
Key SMS Features and Capabilities in Serbia
When sending SMS to Serbia, you'll have access to concatenated messaging and alphanumeric sender IDs for brand recognition. However, two-way SMS functionality is not supported through major providers.
Two-way SMS Support
Two-way SMS is not supported in Serbia through major SMS providers. For interactive messaging capabilities, use alternative communication channels such as:
- Viber Business: Widely adopted in Serbia with 2-way messaging, rich media, and chatbot support
- WhatsApp Business API: Popular for customer service with message templates and automation
- Web-based chat: Live chat widgets integrated with your SMS workflows
- RCS (Rich Communication Services): Emerging alternative with interactive features where supported
Concatenated Messages (Segmented SMS)
Support: Yes, though availability varies by sender ID type Message length: 160 characters (GSM-7), 70 characters (UCS-2) Encoding: GSM-7 for basic Latin; UCS-2 for Serbian characters (reduces limit to 70 per segment)
Practical Example:
Single segment (GSM-7): "Your verification code is 123456. Valid for 10 minutes." (58 chars, 1 segment)
Single segment (UCS-2 with Cyrillic): "Ваш код за верификацију је 123456." (34 chars, 1 segment)
Multi-segment (GSM-7): "Dear customer, your order #12345 has been confirmed and will be delivered tomorrow between 10 AM and 2 PM. Track your package at example.com/track" (151 chars, 1 segment)
Multi-segment (UCS-2): A 150-character message in Serbian Cyrillic would require 3 segments (70+70+10), resulting in 3× the cost
Cost Implication: Each segment is billed separately. A 200-character GSM-7 message requires 2 segments; a 140-character UCS-2 message requires 2 segments.
MMS Support
MMS messages convert automatically to SMS with an embedded URL link, ensuring delivery while enabling rich media sharing through web-based content.
Technical Details:
- Conversion: MMS automatically converts to SMS + shortened URL
- Hosting: Media files hosted on provider's CDN for 30-90 days (varies by provider)
- Size limits: Original MMS up to 500KB; SMS conversion always succeeds
- Expiration: URLs typically expire after 30 days; check provider documentation
- Fallback: If media fails to load, SMS with descriptive text delivers
Recipient Phone Number Compatibility
Number Portability
Number portability is available in Serbia. Mobile Number Portability (MNP) was implemented in 2011 and is managed by RATEL through a centralized database (prenesibroj.rs). Over 1,025,771 numbers have been ported in mobile networks over the past decade. The porting process typically takes 2-3 days after technical validation, and messages route automatically to the current carrier without impacting delivery.
API Lookup and Handling:
- Twilio Lookup API:
GET /v1/PhoneNumbers/{PhoneNumber}?Type=carrierreturns current carrier - Sinch Number Lookup: Query HLR (Home Location Register) to verify active carrier
- MessageBird Lookup API:
/lookup/{phoneNumber}provides carrier routing information - Best Practice: Cache lookup results for 7-14 days to minimize API calls, then refresh to catch recent ports
Sending SMS to Landlines
Sending SMS to landline numbers is not supported. Attempts to send messages to landline numbers will result in a 400 response error (code 21614), and no charges will be incurred.
Number Validation Regex:
// Serbia mobile number validation (international format)
const serbianMobileRegex = /^\+381(6[0-6])\d{6,7}$/;
// Validate before sending
function isValidSerbianMobile(phoneNumber) {
return serbianMobileRegex.test(phoneNumber);
}
// Example usage
isValidSerbianMobile('+381631234567'); // true (valid mobile)
isValidSerbianMobile('+381111234567'); // false (Belgrade landline)RATEL Compliance and Regulatory Guidelines for SMS in Serbia
Serbia follows local telecommunications regulations and EU-aligned practices. The Regulatory Agency for Electronic Communications and Postal Services (RATEL) oversees telecommunications services, including SMS communications.
Legal Framework:
- Law on Electronic Communications (2014): Regulates telecommunications infrastructure and services, including SMS delivery and network operations
- Law on Protection of Personal Data (2018): Serbia's GDPR-equivalent law governing consent, data processing, and individual rights
- Consumer Protection Law (2021): Mandates explicit consent for marketing communications and opt-out mechanisms
- Law on Advertising (2019): Regulates commercial communications including SMS marketing content and disclosures
GDPR Alignment: Serbia's 2018 Data Protection Law aligns closely with EU GDPR, requiring explicit consent, data minimization, purpose limitation, and providing rights to access, rectification, and erasure.
Consent and Opt-In
Explicit Consent Requirements:
- Obtain written or electronic consent before sending marketing messages
- Maintain consent records with timestamp, IP address, consent method, and scope for minimum 3 years
- Clearly state the purpose of communication during opt-in
- Use double opt-in for marketing campaigns
Consent Record Requirements:
- Minimum retention: 3 years from last contact
- Audit trail: Timestamp, source (web form, API, in-person), consent text shown, IP address
- Proof of consent: Stored consent form, checkbox state, confirmation email/SMS
- Update mechanism: Allow users to modify preferences without full opt-out
HELP/STOP and Other Commands
- Include "Odjava STOPMFL na 1599, 0din" in all marketing messages
- Process STOP commands within 24 hours
- Support both Latin and Cyrillic scripts for opt-out messages
- Recognize keywords in Serbian and English
Complete Opt-Out Keywords (recognize all variants):
- English: STOP, UNSUB, UNSUBSCRIBE, CANCEL, END, QUIT, REMOVE
- Serbian (Latin): STOP, ODJAVA, STОP, KRAJ
- Serbian (Cyrillic): СТОП, ОДЈАВА, КРАЈ
- Case-insensitive: Process regardless of uppercase/lowercase
Do Not Call / Do Not Disturb Registries
Serbia does not maintain a centralized Do Not Call registry. You must:
- Maintain internal suppression lists
- Honor opt-out requests immediately
- Document all opt-out requests for compliance
- Regularly clean contact lists to remove unsubscribed numbers
Time Zone Sensitivity
Serbia observes Central European Time (CET/CEST):
- Send messages between 9:00 AM and 8:00 PM local time
- Avoid messages during national holidays
- Limit urgent messages outside business hours
- Respect weekend quiet hours (before 10:00 AM and after 6:00 PM)
Serbian National Holidays 2025:
- January 1-2: New Year's Day
- January 6-7: Orthodox Christmas (Božić)
- February 15, 17: Statehood Day
- April 18-21: Orthodox Easter (Vaskrs)
- May 1-2: Labor Day
- November 11: Armistice Day
DST Transitions:
- Spring: Last Sunday in March (March 30, 2025 at 2:00 AM → 3:00 AM CEST)
- Fall: Last Sunday in October (October 26, 2025 at 3:00 AM → 2:00 AM CET)
How to Register Sender IDs for SMS in Serbia
Alphanumeric Sender ID
Operator network capability: Supported with optional pre-registration Registration requirements: Pre-registration available, takes approximately 16 days Sender ID preservation: Yes for registered IDs; unregistered may be overwritten
Registration Process:
- Application: Submit via provider portal (Twilio, Infobip, etc.) or email wholesale_registrations@infobip.com
- Documentation Required:
- Service/brand name (max 11 characters)
- Company registration documents
- Use case description (transactional vs. promotional)
- Message samples (2-3 examples)
- Traffic type classification
- Opt-out keyword template (for promotional)
- Timeline: 14-16 business days for approval
- Cost: Setup fee ~€20 (one-time), monthly fee ~€30 per sender ID
- Approval Criteria: Sender ID must represent legitimate brand/company name, no generic terms (INFO, SMS, ALERT)
Naming Conventions:
- Character limit: 11 characters maximum
- Allowed characters (local): A-Z, a-z, 0-9, and special chars:
.:-_ - Allowed characters (international): A-Z, a-z, 0-9 only (no spaces or special characters)
- Prohibited: Generic terms (INFO, SMS, NOTICE), competing brand names, misleading identifiers
Long Codes
Domestic vs. International:
- International long codes supported
- Domestic not available
Sender ID preservation: No, overwritten with generic alphanumeric ID Provisioning time: Immediate for international long codes Use cases: Transactional messages, alerts, notifications
Why Domestic Long Codes Are Unavailable: Serbian regulations require dedicated short codes for two-way SMS services. Domestic long codes are reserved for voice/data services only. Workaround: Use international long codes for one-way transactional messaging or switch to registered alphanumeric sender IDs for better deliverability.
Short Codes
Support: Not supported in Serbia Provisioning time: N/A Use cases: N/A
Restricted SMS Content, Industries, and Use Cases
Restricted Industries:
- Gambling and betting services (unless licensed by Serbian Gaming Board)
- Adult content (pornography, escort services, dating with explicit content)
- Cryptocurrency promotions (ICOs, trading signals, wallet services)
- Unauthorized financial services (loans, credit offers without banking license)
- Political campaign messages without proper authorization from RATEL
- Pharmaceutical products requiring prescriptions (unless sent by licensed pharmacy)
- Healthcare services without proper medical licensing
- Age-restricted products (alcohol, tobacco) without age verification
Political Message Authorization: Political campaigns must register with RATEL and include sender identification, campaign authorization code, and comply with electoral communication laws. Contact RATEL at +381 11 3242 673 for authorization process.
Content Filtering
Carrier Filtering Rules:
- Messages containing certain keywords may be blocked
- URLs should be from approved domains
- Excessive punctuation may trigger spam filters
- High-volume sending patterns may be throttled
Specific Blocked Keywords Examples (partial list, varies by carrier):
- Gambling terms: "казино" (casino), "опклада" (betting), "коцкање" (gambling)
- Financial scams: "брзи кредит" (fast loan), "зарадите новац" (earn money), "инвестиција без ризика" (risk-free investment)
- Adult content: Explicit sexual terms in both Cyrillic and Latin scripts
- Pharmaceutical: Prescription drug names, "виагра" (Viagra), unlicensed medical claims
URL Whitelisting Process:
- Register domain with your SMS provider (Twilio Domain Verification, Sinch Brand Registry)
- Submit URL for carrier approval (contact account manager)
- Use HTTPS only; HTTP URLs have higher filtering risk
- Avoid URL shorteners (bit.ly, tinyurl) which trigger spam filters
Throttling Thresholds:
- Burst limit: 30-50 messages per second per sender ID
- Sustained rate: 100-500 messages per minute (varies by carrier and sender reputation)
- Daily volume: 10,000+ messages may require carrier pre-notification
- Mitigation: Implement exponential backoff, queue management, and rate limiting in your application
Best Practices to Avoid Filtering:
- Use registered sender IDs
- Maintain consistent sending patterns
- Avoid URL shorteners
- Include clear opt-out instructions
Best Practices for Sending SMS in Serbia
Messaging Strategy
- Keep messages under 160 characters when possible
- Include clear call-to-action
- Use personalization tokens thoughtfully
- Maintain consistent brand voice
Message Template Examples:
OTP/2FA:
Vas kod za potvrdu: 543821
Vazi 10 minuta.
- [BrandName]
Appointment Reminder:
Podsetnik: Vas termin je sutra 14:00h u ordinaciji Dr. Petrovic. Potvrdite na: 063-XXX-XXXX
Marketing (with opt-out):
Ekskluzivna ponuda! 30% popust na sve proizvode do petka. Vise na: example.rs/akcija
Odjava STOPMFL na 1599, 0din
Sending Frequency and Timing
- Limit to 2-4 messages per month per recipient
- Respect Serbian national holidays
- Avoid sending during Orthodox religious observances
- Space out bulk campaigns to prevent network congestion
Orthodox Religious Observances to Avoid:
- Orthodox Christmas Eve (January 6)
- Orthodox Christmas (January 7)
- Slava (family patron saint days - varies by family, high throughout year)
- Orthodox Good Friday (April 18, 2025)
- Orthodox Easter (April 20-21, 2025)
- Vidovdan (St. Vitus' Day, June 28 - culturally significant)
Localization
- Default to Serbian language (Latin script)
- Consider dual-language messages for international brands
- Use local date/time formats (DD.MM.YYYY)
- Respect cultural sensitivities in content
Script Guidance:
- Latin script (preferred): Used in business, technology, and international contexts; higher compatibility with SMS encoding (GSM-7)
- Cyrillic script: Traditional and official, used in government, education, and formal contexts; requires UCS-2 encoding (70 chars/segment)
- Bilingual audiences: Use Latin for younger demographics (18-35) and tech-related messages; Cyrillic for older demographics (45+) and formal communications
- Mixed approach: Some brands send Latin for promotional messages and Cyrillic for official notifications
Opt-Out Management
- Process opt-outs within 24 hours
- Maintain centralized opt-out database
- Include opt-out instructions in every marketing message
- Confirm opt-out with one final message
Testing and Monitoring
- Test across all major Serbian carriers (MTS, Yettel, A1)
- Monitor delivery rates by carrier
- Track opt-out rates and patterns
- Test opt-out functionality regularly
SMS KPI Benchmarks for Serbia:
- Delivery rate: 95-99% for registered sender IDs; 85-92% for unregistered
- Open rate: 95-98% (SMS typically read within 3-5 minutes)
- Click-through rate (with URL): 8-15% for transactional, 3-8% for promotional
- Opt-out rate: <0.5% (healthy); 1-2% (acceptable); >3% (review content/frequency)
- Bounce rate: <2% (clean list); >5% (list hygiene needed)
What Constitutes 'Good' Performance:
- Delivery >96%, opt-out <1%, bounce <2% = Excellent
- Delivery 92-96%, opt-out 1-2%, bounce 2-5% = Good
- Delivery <92%, opt-out >2%, bounce >5% = Needs improvement (review sender ID registration, list quality, content)
SMS API integrations for Serbia
Twilio
Twilio provides robust SMS API support for Serbian 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);
// Function to send SMS to Serbia
async function sendSMSToSerbia(
to: string,
message: string,
senderId: string
): Promise<void> {
try {
// Ensure phone number is in E.164 format for Serbia (+381...)
const formattedNumber = to.startsWith('+381') ? to : `+381${to}`;
const response = await client.messages.create({
body: message,
from: senderId, // Registered alphanumeric sender ID
to: formattedNumber,
// Optional: Set status callback URL
statusCallback: 'https://your-domain.com/sms/status'
});
console.log(`Message sent successfully! SID: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}Webhook Payload Structure (status callback):
{
"SmsSid": "SM...",
"SmsStatus": "delivered",
"MessageStatus": "delivered",
"To": "+381631234567",
"MessageSid": "SM...",
"AccountSid": "AC...",
"From": "YourBrand",
"ApiVersion": "2010-04-01",
"ErrorCode": null,
"ErrorMessage": null
}Status Callback Implementation:
// Express.js webhook endpoint
app.post('/sms/status', (req, res) => {
const { MessageSid, MessageStatus, To, ErrorCode } = req.body;
// Update database with delivery status
if (MessageStatus === 'delivered') {
updateMessageStatus(MessageSid, 'delivered');
} else if (MessageStatus === 'failed') {
logFailure(MessageSid, To, ErrorCode);
}
res.sendStatus(200);
});Sinch
Sinch offers straightforward REST API for SMS delivery in Serbia with API token authentication.
import axios from 'axios';
class SinchSMSService {
private readonly baseUrl: string;
private readonly apiToken: string;
constructor(serviceId: string, apiToken: string) {
this.baseUrl = `https://sms.api.sinch.com/xms/v1/${serviceId}`;
this.apiToken = apiToken;
}
async sendSMS(to: string, message: string): Promise<void> {
try {
const response = await axios.post(
`${this.baseUrl}/batches`,
{
from: 'YourBrand', // Registered sender ID
to: [to],
body: message,
encoding: 'AUTO' // Automatically handles Serbian characters
},
{
headers: {
'Authorization': `Bearer ${this.apiToken}`,
'Content-Type': 'application/json'
}
}
);
console.log('Message sent:', response.data.id);
} catch (error) {
console.error('Sinch SMS error:', error);
throw error;
}
}
}MessageBird
MessageBird provides feature-rich API with strong support for Serbian message delivery.
import messagebird from 'messagebird';
class MessageBirdService {
private client: any;
constructor(apiKey: string) {
this.client = messagebird(apiKey);
}
sendSMS(to: string, message: string): Promise<void> {
return new Promise((resolve, reject) => {
this.client.messages.create({
originator: 'YourBrand',
recipients: [to],
body: message,
type: 'sms', // Explicitly set message type
encoding: 'auto' // Handles Serbian character sets
}, (err: any, response: any) => {
if (err) {
console.error('MessageBird error:', err);
reject(err);
} else {
console.log('Message sent:', response.id);
resolve();
}
});
});
}
}API Rate Limits and Throughput
- Default rate limits vary by provider (typically 30-100 messages per second)
- Implement exponential backoff for retry logic
- Use batch APIs for high-volume sending
- Use queue implementation (Bull, Redis) for large campaigns
Provider-Specific Rate Limits for Serbia:
- Twilio:
- Default: 30 messages/second per account
- Enterprise: Up to 500 messages/second (contact sales)
- Request increase: Submit via Twilio Console > Messaging > Regulatory > Rate Limits
- Sinch:
- Default: 100 messages/second per service plan
- Burst: 300 messages/second for 10 seconds
- Contact account manager for higher limits
- MessageBird:
- Default: 50 messages/second
- Premium: 100-300 messages/second
- Request via Support > Account Settings > Rate Limit Increase
Error Handling and Reporting
interface SMSError {
code: string;
message: string;
timestamp: Date;
recipient: string;
}
class SMSErrorHandler {
private errors: SMSError[] = [];
logError(error: SMSError): void {
this.errors.push(error);
// Log to monitoring system
console.error(`SMS Error [${error.code}]: ${error.message}`);
// Handle specific error types
switch(error.code) {
case 'invalid_number':
// Clean up invalid numbers from database
break;
case 'rate_limit':
// Implement backoff strategy
break;
case 'delivery_failed':
// Retry with fallback provider
break;
}
}
}Serbia-Specific Error Code Reference:
| Error Code | Provider | Description | Action |
|---|---|---|---|
| 21614 | Twilio | SMS to landline number | Validate recipient is mobile before sending |
| 30003 | Twilio | Unreachable destination | Number inactive or out of coverage; remove from list |
| 30005 | Twilio | Unknown destination | Invalid number format; validate E.164 format |
| 30006 | Twilio | Landline or unreachable carrier | Verify number type with Lookup API |
| 21408 | Twilio | Permission to send denied | Sender ID not registered or blocked |
| 40301 | Sinch | Invalid sender ID | Use registered alphanumeric sender or valid long code |
| 40302 | Sinch | Insufficient funds | Top up account balance |
| 40303 | Sinch | Forbidden content | Message contains blocked keywords; review content |
| 40001 | Sinch | Syntax error | Check JSON payload structure |
| 9 | MessageBird | Routing error | Carrier routing issue; retry or use fallback |
| 21 | MessageBird | Invalid recipient | Check phone number format (+381...) |
| 98 | MessageBird | Missing parameter | Verify all required API parameters included |
Monitoring Dashboard Recommendations:
- Tools: Grafana + Prometheus, DataDog, New Relic, or provider-native dashboards
- Key Metrics: Delivery rate %, average latency (time to delivery), error rate by code, cost per message
- Alerting Thresholds:
- Delivery rate drops below 94% (15-minute window)
- Error rate exceeds 3% (5-minute window)
- Opt-out rate spikes above 1% (daily)
- Average latency exceeds 30 seconds (5-minute window)
Frequently Asked Questions (FAQ)
What are the SMS compliance requirements in Serbia?
To send SMS messages to Serbia legally, you must obtain explicit written or electronic consent before sending marketing messages. All marketing SMS must include the opt-out instruction "Odjava STOPMFL na 1599, 0din" and process STOP commands within 24 hours. RATEL (Regulatory Agency for Electronic Communications and Postal Services) oversees SMS compliance.
Do I need to register alphanumeric sender IDs to send SMS in Serbia?
Yes, pre-registration is strongly recommended when sending SMS to Serbia with alphanumeric sender IDs. Registration takes approximately 16 days and costs around €30/month. Registered sender IDs are preserved across MTS, Yettel, and A1 networks, while unregistered IDs may be overwritten with a generic sender ID.
What is the character limit when sending SMS to Serbia?
When you send SMS to Serbia, standard messages support 160 characters using GSM-7 encoding for basic Latin characters, or 70 characters using UCS-2 encoding for Serbian Cyrillic characters. Concatenated (multi-part) messages are supported, though availability varies by sender ID type.
Is mobile number portability available in Serbia?
Yes, Mobile Number Portability (MNP) has been available in Serbia since 2011. RATEL manages the centralized MNP database (prenesibroj.rs), and over 1,025,771 numbers have been ported. The porting process typically takes 2-3 days after technical validation.
What are the best times to send marketing SMS in Serbia?
Send marketing messages between 9:00 AM and 8:00 PM Central European Time (CET/CEST). Avoid sending during national holidays and respect weekend quiet hours (before 10:00 AM and after 6:00 PM).
Which mobile operators support SMS in Serbia?
Serbia has three mobile operators: Telekom Srbija/MTS (46.8% market share), Yettel (31.2%, formerly Telenor Serbia), and A1 Srbija (22%, formerly VIP Mobile). All three operators support SMS messaging with concatenated messages and alphanumeric sender IDs.
Is two-way SMS supported in Serbia?
No, two-way SMS is not supported in Serbia through major SMS providers. For interactive messaging capabilities, you should use alternative communication channels such as mobile apps or messaging platforms.
Can I send SMS to landline numbers in Serbia?
No, sending SMS to landline numbers is not supported in Serbia. Attempts to send messages to landline numbers will result in a 400 response error (code 21614), and no charges will be incurred.
What opt-out message format is required in Serbia?
All marketing messages in Serbia must include the phrase "Odjava STOPMFL na 1599, 0din" for opt-out instructions. The system must support both Latin and Cyrillic scripts for opt-out messages and recognize keywords in both Serbian and English.
How long does sender ID registration take in Serbia?
Alphanumeric sender ID pre-registration in Serbia takes approximately 16 days. While pre-registration is optional, it ensures your sender ID is preserved across all three mobile operators (MTS, Yettel, A1).
What are typical SMS delivery times in Serbia?
Transactional SMS typically delivers within 3-10 seconds during normal network conditions. Promotional SMS may experience 10-60 second delays during peak hours (9-11 AM, 5-7 PM weekdays). Bulk campaigns (1,000+ messages) should allow 5-15 minutes for complete delivery.
How much does SMS cost in Serbia?
Pricing varies by provider and volume but typically ranges from €0.015-0.045 per message for standard delivery. Registered sender IDs incur additional setup (€20) and monthly (€30) fees. Volume discounts available for 10,000+ messages/month.
What should I do if messages aren't being delivered?
Common troubleshooting steps: (1) Verify number format (E.164: +381XXXXXXXXX), (2) Check sender ID registration status, (3) Review message content for blocked keywords, (4) Confirm account balance with provider, (5) Test across all three carriers (MTS, Yettel, A1), (6) Check error logs for specific error codes (see table above).
Recap and Additional Resources
Key Takeaways
-
Compliance Priorities
- Obtain explicit consent
- Include opt-out instructions
- Respect sending hours (9 AM - 8 PM CET)
-
Technical Considerations
- Use registered sender IDs
- Implement proper error handling
- Monitor delivery rates
-
Next Steps
- Review RATEL regulations
- Set up monitoring systems
- Test with small volumes initially
Implementation Checklist:
- Register alphanumeric sender ID (allow 16 days)
- Implement E.164 number validation (+381XXXXXXXXX)
- Configure webhook endpoints for delivery status
- Set up opt-out keyword recognition (STOP, ODJAVA, etc.)
- Create consent record database with 3-year retention
- Test message delivery across all carriers (MTS, Yettel, A1)
- Configure rate limiting (30-100 msg/sec)
- Set up monitoring dashboards with alerting
- Prepare message templates for common use cases
- Schedule sending to respect CET timezone (9 AM - 8 PM)
Troubleshooting Decision Tree:
-
Message not delivered:
- Check error code → If 21614: recipient is landline (validate mobile only)
- If 30003/30005: invalid number (verify E.164 format)
- If 21408/40301: sender ID issue (register or use different ID)
- If 40303: content blocked (review keywords, remove prohibited terms)
-
Low delivery rate (<95%):
- Verify sender ID registration status
- Check for carrier filtering (test with transactional vs. promotional content)
- Review list hygiene (remove bounced/inactive numbers)
-
High opt-out rate (>2%):
- Reduce sending frequency
- Review message relevance and personalization
- Check opt-in quality (ensure legitimate consent)
Additional Resources
- RATEL Official Website
- Serbian Data Protection Law
- SMS Best Practices Guide
- RATEL Sender ID Registration Portal (contact for access)
- Serbia MNP Database (carrier lookup)
Contact Information:
- RATEL Support: +381 11 3242 673
- Email: ratel@ratel.rs
- RATEL Address: Trg Nikole Pašića 2, 11000 Belgrade, Serbia
Frequently Asked Questions
How to send SMS messages in Serbia?
Use an SMS API like Twilio, Sinch, or MessageBird, ensuring the recipient's number is in E.164 format (+381...). Register an alphanumeric sender ID for better deliverability and brand recognition. Remember to comply with Serbian regulations, including obtaining consent and providing opt-out instructions.
What is the process for sending bulk SMS in Serbia?
Utilize a queueing system like Bull to manage high-volume sends, incorporating exponential backoff for rate limiting and error handling. Batch APIs are recommended for efficiency, and ensure compliance with Serbian regulations by obtaining consent and providing opt-out instructions.
Why does Serbia not support short codes for SMS?
Short codes are not supported within Serbia. For transactional messages, alerts, and notifications, international long codes are supported as an alternative.
When should I send SMS messages in Serbia to respect local time?
Adhere to Serbian business hours (9:00 AM to 8:00 PM CET) and avoid sending during national or religious holidays. Respect weekend quiet hours (before 10:00 AM and after 6:00 PM) to minimize disruption.
What is required for SMS compliance in Serbia?
Obtain explicit consent before sending marketing messages, include a clear opt-out instruction ("Odjava STOPMFL na 1599, 0din") in every message, and process opt-outs within 24 hours. Maintain records of consent and opt-out requests.
How to handle opt-outs for SMS marketing in Serbia?
Serbian regulations require processing opt-out requests within 24 hours. Include the opt-out phrase "Odjava STOPMFL na 1599, 0din" in every message. Use "STOP" or "STOPMFL" keywords and recognize them in both Serbian and English. Maintain a database of unsubscribed numbers.
What SMS features are supported in Serbia?
Concatenated messages and alphanumeric sender IDs are supported, enabling longer messages and brand recognition. Two-way SMS is not supported while MMS messages are converted to SMS with embedded links to access rich content
Can I send SMS messages to landlines in Serbia?
No, sending SMS to landline numbers in Serbia is not supported and will result in a 400 error (code 21614). No charges are incurred for these failed attempts.
What is the best encoding for Serbian SMS messages?
Both GSM-7 and UCS-2 are supported. However, messages with Serbian characters require UCS-2 encoding, limiting each segment to 70 characters instead of the standard 160 characters for GSM-7.
How long does it take to register an alphanumeric sender ID in Serbia?
Pre-registration for alphanumeric sender IDs in Serbia takes approximately 16 days. Registered IDs are preserved, while unregistered ones may be overwritten with a generic sender ID.
What are the restricted SMS content categories in Serbia?
Gambling, adult content, cryptocurrency promotions, unauthorized financial services, and political campaign messages without authorization are restricted. Content filtering by carriers may also block messages with certain keywords, URLs, or excessive punctuation.
What are some best practices for SMS marketing in Serbia?
Keep messages concise, include a clear call to action, personalize thoughtfully, and maintain a consistent brand voice. Limit messages to 2-4 per month per recipient, respect holidays and quiet hours, and prioritize Serbian language (Latin script).
How to get consent for sending SMS messages in Serbia?
Obtain explicit written or electronic consent before sending marketing messages. Clearly state the purpose of communication during the opt-in process. Double opt-in is recommended for marketing campaigns and records of consent should be maintained
Where can I find more information on Serbia's telecommunications regulations?
The Regulatory Agency for Electronic Communications and Postal Services (RATEL) website (www.ratel.rs/en) provides detailed information on telecommunications regulations, including those pertaining to SMS.
How do I handle SMS API rate limits in Serbia?
Implement exponential backoff strategies for retry logic to handle rate limits imposed by SMS providers. Utilize batch APIs for high-volume sending and consider queue systems for large campaigns to manage throughput effectively.