sms compliance

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

Liechtenstein SMS Guide: Send SMS to Liechtenstein (2025 Regulations & API)

Complete guide to sending SMS in Liechtenstein. Learn GDPR compliance, mobile operators (FL1, 7acht, Cubic), alphanumeric sender IDs, API integration with Twilio, Sinch & Bird, and best practices for 2025.

Liechtenstein SMS Guide: Best Practices, Compliance, and API Integration

Looking to send SMS to Liechtenstein? This comprehensive guide covers everything you need: GDPR compliance requirements, mobile operators (FL1, 7acht, Cubic Telecom), technical specifications, and API integration with Twilio, Sinch, and Bird. Learn how to implement SMS authentication, marketing campaigns, and transactional notifications while meeting European Economic Area (EEA) regulations and configure alphanumeric sender IDs correctly for maximum deliverability.

Liechtenstein SMS Market Overview: Operators & Network Details

Locale name:Liechtenstein
ISO code:LI
RegionEurope
Mobile country code (MCC)295
Dialing Code+423

Market Conditions: Liechtenstein maintains a modern telecommunications infrastructure with high mobile penetration rates despite its small size. As of January 2025, 53,900 active mobile connections were active—equivalent to 135% of the total population—indicating many residents use multiple mobile subscriptions. Three main operators serve the principality's mobile market: FL1 (Telecom Liechtenstein) as market leader, 7acht (Salt Liechtenstein AG), and Cubic Telecom. All operators use Mobile Country Code 295. Phone numbers follow a 7-digit format (+423 XXXXXXX), with mobile numbers starting with 6 or 7. Understanding E.164 phone number format is essential for proper SMS delivery. As of December 31, 2023, 3G services shut down completely. All operators now provide 4G/LTE services. As a European Economic Area (EEA) member, Liechtenstein follows European telecommunications standards and regulations. OTT messaging apps see wide adoption, but SMS remains important for business communications and authentication services.

SMS Delivery & Pricing: Expect delivery rates above 95% for well-configured campaigns. Typical SMS pricing ranges from $0.0161 to $0.0334 per message segment depending on provider and volume, with alphanumeric sender IDs often available at no extra cost.


Key SMS Features and Capabilities in Liechtenstein

Liechtenstein supports standard SMS features – including concatenated messages and alphanumeric sender IDs – while maintaining strict compliance with European telecommunications standards.

Two-way SMS Support

Two-way SMS is unavailable in Liechtenstein through standard API providers. Consider these alternatives for interactive messaging:

  • WhatsApp Business API: Supports rich media and two-way conversations
  • RCS (Rich Communication Services): Enhanced messaging with delivery receipts and typing indicators—learn more about iPhone RCS messaging
  • Web-based chat widgets: Real-time communication through your website or app

Concatenated Messages (Segmented SMS)

Support: Yes – Liechtenstein supports concatenated messages.

Message length rules: 160 characters maximum for single SMS using GSM-7 encoding, or 70 characters for Unicode messages.

Encoding considerations: Both GSM-7 and UCS-2 encodings work. Use UCS-2 for messages containing special characters or non-Latin alphabets.

Segment billing: Carriers bill each segment separately. A 320-character GSM-7 message costs 2× a single SMS. A 161-character message requires 2 segments, with each limited to 153 characters (7 characters reserved for concatenation headers). Most carriers support up to 6–8 segments (approximately 918–1,224 characters). Keep messages under 320 characters for optimal deliverability.

MMS Support

MMS messages automatically convert to SMS with an embedded URL link. This conversion ensures delivery compatibility while letting recipients access multimedia content through secure web links.

Technical specifications:

  • Maximum total size: 900 KB (including all attachments)
  • Maximum single file: 600 KB
  • Supported formats: JPEG, PNG, GIF, MP4, MP3
  • Link expiration: Typically 30 days (provider-dependent)
  • Security: HTTPS-only links with no authentication required

Recipient Phone Number Compatibility

Number Portability

Number portability is available in Liechtenstein. Users can keep their phone numbers when switching between mobile operators. This feature does not impact SMS delivery or routing.

Sending SMS to Landlines

Liechtenstein does not support sending SMS to landline numbers. Attempts to send messages to landlines fail and generate a 400 response error code (21614) through API services. Your account will not be charged for these failures.

SMS Compliance and GDPR Requirements in Liechtenstein

As a European Economic Area (EEA) member, Liechtenstein adheres to both GDPR and the E-Privacy Directive for electronic communications. The Office for Communications (Amt für Kommunikation) serves as the primary telecommunications regulator, while the Data Protection Authority (Datenschutzstelle) oversees privacy compliance.

GDPR Penalties: Violations of Liechtenstein's Data Protection Act (DSG) of October 4, 2018 result in monetary penalties up to 22 million Swiss francs or 4% of total worldwide annual turnover, depending on severity. Organizations sending SMS must maintain strict data protection standards to avoid penalties.

Explicit Consent Requirements:

  • Obtain written or electronic consent before sending marketing messages
  • Maintain consent records and make them easily accessible
  • Clearly state the purpose of messaging during opt-in
  • Use double opt-in for marketing campaigns (recommended)

Best Practices for Documentation:

  • Store timestamp and source of consent
  • Maintain detailed records of opt-in methods
  • Keep proof of consent for at least 2 years
  • Enable easy access to consent history for auditing

Recommended database schema for consent tracking:

sql
CREATE TABLE user_consent (
  user_id VARCHAR(255) PRIMARY KEY,
  phone_number VARCHAR(20),
  consent_given BOOLEAN,
  consent_timestamp TIMESTAMP,
  consent_source VARCHAR(50), -- 'web_form', 'api', 'sms_reply'
  ip_address VARCHAR(45),
  user_agent TEXT,
  opt_out_timestamp TIMESTAMP NULL
);

HELP/STOP and Other Commands

  • Support STOP, STOPP, and ENDE in German
  • Provide support information via HELP/HILFE commands
  • Process all opt-out keywords within 24 hours
  • Send confirmation messages in German or English

Do Not Call / Do Not Disturb Registries

Liechtenstein does not maintain a centralized Do Not Call registry. You must:

  • Maintain internal suppression lists
  • Honor opt-out requests immediately
  • Remove numbers within 24 hours of receiving STOP commands
  • Keep records of opted-out numbers for at least 5 years

Time Zone Sensitivity

Liechtenstein follows Central European Time (CET/CEST):

  • Recommended Sending Hours: 08:00 – 20:00 CET
  • Avoid Sending: Sundays and public holidays
  • Emergency Messages: Permitted outside standard hours
  • Best Practice: Schedule campaigns between 10:00 – 18:00 on business days

Liechtenstein SMS Sender IDs: Alphanumeric, Long Codes & Short Codes

Alphanumeric Sender ID for Liechtenstein SMS

Operator network capability: Fully supported across all Liechtenstein mobile networks

Registration requirements: No pre-registration required – dynamic usage allowed

Sender ID preservation: Yes – sender IDs appear exactly as specified

Formatting rules (industry standard):

  • Length: 3–11 characters maximum
  • Allowed characters: A-Z (uppercase and lowercase), 0–9, and spaces
  • Must contain at least one letter (cannot be all numbers)
  • Case-sensitive (appears exactly as sent)
  • Prohibited: Generic sender IDs like "INFO," "SMS," "NOTICE" (use representative brand names)

Long Codes

Domestic vs. International:

  • Domestic long codes unavailable due to regulatory restrictions and limited number availability in the small principality
  • International long codes fully supported (particularly from neighboring countries like Switzerland, Austria, or pan-European providers)

Sender ID preservation: Yes – the original sender ID is preserved

Provisioning time: Typically 1–2 business days

Use cases: Ideal for transactional messages and two-factor authentication

Typical throughput: 1–10 messages per second depending on source country

Short Codes

Support: Not available in Liechtenstein

Provisioning time: N/A

Use cases: N/A

Restricted SMS Content, Industries, and Use Cases

Restricted Industries:

  • Gambling and betting services
  • Adult content
  • Cryptocurrency promotions
  • Unauthorized financial services

Regulated Industries:

  • Banking: Comply with due diligence requirements and implement two-factor authentication (2FA) for transaction messages—see our guide on OTP and 2FA implementation
  • Healthcare: Maintain patient confidentiality per GDPR Article 9 (special category data)
  • Insurance services: Include clear disclaimers and obtain opt-in consent under E-Privacy Directive

Content Filtering

Known Carrier Rules:

  • Use URLs from verified domains (registered business domains with valid SSL certificates)
  • Limit capitalization to 30% of message content
  • Limit special characters to 5% of message content
  • Use no more than 3 consecutive punctuation marks

Tips to Avoid Blocking:

  • Use registered sender IDs consistently (same sender for brand recognition)
  • Maintain regular sending patterns (avoid sudden volume spikes >300% day-over-day)
  • Avoid URL shorteners where possible (use branded short domains instead of bit.ly, goo.gl)
  • Include clear opt-out instructions (e.g., "Reply STOP to unsubscribe")

Examples of filtered vs. allowed content:

Best Practices for Sending SMS in Liechtenstein

Messaging Strategy

  • Keep messages under 160 characters when possible
  • Include clear call-to-action
  • Personalize using recipient's name or preferences
  • Maintain consistent sender ID across campaigns

Sending Frequency and Timing

  • Limit to 2–3 messages per week per recipient
  • Respect quiet hours (20:00 – 08:00)
  • Consider local holidays and events
  • Space out bulk campaigns to avoid network congestion

Localization

  • Primary language: German (preferred for 90%+ of population)
  • Include English support (widely understood)
  • Consider French and Italian for specific audiences
  • Use local date/time formats (DD.MM.YYYY, 24-hour clock)

Sample message formats:

  • Formal German: "Guten Tag [Name], Ihre Bestellung #12345 wurde versendet."
  • Informal German: "Hallo [Name], deine Bestellung ist unterwegs! 📦"
  • English: "Hello [Name], your order #12345 has been shipped."

Opt-Out Management

  • Process opt-outs within 24 hours
  • Send confirmation of opt-out
  • Maintain single opt-out list across campaigns
  • Audit opt-out database regularly

Testing and Monitoring

  • Test across all major carriers (FL1, 7acht/Salt, Cubic Telecom)
  • Monitor delivery rates daily (benchmark: >95%)
  • Track opt-out rates and patterns (benchmark: <1.5%)
  • Test opt-out functionality regularly

Expected benchmarks (industry data):

  • Delivery rate: 95%+ (investigate if below 90%)
  • Open rate: 90–98% (inherent to SMS)
  • Click-through rate: 20%+ (for messages with links)
  • Opt-out rate: <1.5% (higher rates indicate content issues)

SMS API integrations for Liechtenstein

Twilio

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

typescript
import * as Twilio from 'twilio';

// Initialize Twilio client
const client = new Twilio(
  process.env.TWILIO_ACCOUNT_SID,    // Your Account SID
  process.env.TWILIO_AUTH_TOKEN      // Your Auth Token
);

// Function to send SMS to Liechtenstein
async function sendSMSToLiechtenstein(
  to: string,
  message: string,
  senderId: string
) {
  try {
    // Ensure proper formatting for Liechtenstein numbers
    const formattedNumber = to.startsWith('+423') ? to : `+423${to}`;

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

    console.log(`Message sent successfully! SID: ${response.sid}`);
    return response;
  } catch (error) {
    console.error('Error sending message:', error);
    throw error;
  }
}

Sinch

Sinch offers direct carrier connections for Liechtenstein messaging. Authenticate using your API token and service plan ID.

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

// Initialize Sinch client
const sinchClient = new SinchClient({
  projectId: process.env.SINCH_PROJECT_ID,
  keyId: process.env.SINCH_KEY_ID,
  keySecret: process.env.SINCH_KEY_SECRET
});

// Function to send SMS via Sinch
async function sendSinchSMS(
  recipientNumber: string,
  messageText: string
) {
  try {
    const response = await sinchClient.sms.batches.send({
      sendSMSRequestBody: {
        to: [recipientNumber],
        from: "YourBrand",  // Alphanumeric sender ID
        body: messageText,
        // Optional delivery report flag
        delivery_report: "summary"
      }
    });

    console.log('Message sent:', response);
    return response;
  } catch (error) {
    console.error('Sinch SMS Error:', error);
    throw error;
  }
}

Bird

Bird's API provides SMS capabilities with straightforward REST endpoints. Authenticate using your API key and workspace ID.

typescript
import axios from 'axios';

// Bird API configuration
const BIRD_API_CONFIG = {
  baseURL: 'https://api.bird.com/v1',
  headers: {
    'Authorization': `Bearer ${process.env.BIRD_API_KEY}`,
    'Content-Type': 'application/json'
  }
};

// Send SMS using Bird API
async function sendBirdSMS(
  phoneNumber: string,
  message: string,
  workspaceId: string
) {
  try {
    const response = await axios.post(
      `/workspaces/${workspaceId}/messages`,
      {
        recipient: phoneNumber,
        content: message,
        channel: 'sms',
        sender_id: 'YourBrand'
      },
      BIRD_API_CONFIG
    );

    return response.data;
  } catch (error) {
    console.error('Bird API Error:', error.response?.data || error);
    throw error;
  }
}

API Rate Limits and Throughput

Rate Limits for Liechtenstein:

  • Twilio: 100 messages per second
  • Sinch: 30 messages per second
  • Bird: 50 messages per second

Throughput Management Strategies:

  • Implement exponential backoff for retries
  • Use queue systems (Redis/RabbitMQ) for high volume
  • Batch messages when possible
  • Monitor delivery rates and adjust sending speed

Rate limiting implementation example:

typescript
import Bottleneck from 'bottleneck';

// Configure rate limiter (example: 30 messages/second for Sinch)
const limiter = new Bottleneck({
  reservoir: 30,           // Initial capacity
  reservoirRefreshAmount: 30,
  reservoirRefreshInterval: 1000, // Refresh every 1 second
  maxConcurrent: 5
});

// Wrap your SMS function with rate limiting
const rateLimitedSendSMS = limiter.wrap(sendSinchSMS);

// Use in your code
await rateLimitedSendSMS('+4236712345', 'Your message here');

Error Handling and Reporting

Common Error Scenarios:

Error CodeDescriptionResolution
21614Invalid phone number format or landlineValidate number with Lookup API before sending
21610Unsubscribed recipientRemove from campaign list; check opt-out database
20429Rate limit exceededImplement exponential backoff; reduce sending speed
21211Invalid 'To' numberVerify E.164 format (+423XXXXXXX)
30003Unreachable destinationRetry after delay; phone may be off or out of coverage
30005Unknown destination handsetNumber may be deactivated; validate with carrier lookup

Logging Best Practices:

typescript
// Example error handling middleware
const handleSMSError = (error: any) => {
  // Log detailed error information
  logger.error({
    error_code: error.code,
    message: error.message,
    timestamp: new Date().toISOString(),
    carrier_response: error.carrier_response
  });

  // Categorize errors for reporting
  switch (error.code) {
    case 21614:
    case 'INVALID_NUMBER':
      // Handle invalid number errors - remove from list
      removeFromCampaign(error.recipient);
      break;
    case 20429:
    case 'RATE_LIMIT_EXCEEDED':
      // Implement backoff strategy
      return retryWithBackoff(error.originalRequest, 5000);
    case 21610:
      // Already unsubscribed
      addToSuppressionList(error.recipient);
      break;
    default:
      // Handle other errors - log and alert
      alertOpsTeam(error);
  }
};

// Exponential backoff helper
async function retryWithBackoff(fn: Function, initialDelay: number, maxRetries = 3) {
  let delay = initialDelay;
  for (let i = 0; i < maxRetries; i++) {
    try {
      await new Promise(resolve => setTimeout(resolve, delay));
      return await fn();
    } catch (error) {
      if (i === maxRetries - 1) throw error;
      delay *= 2; // Exponential backoff
    }
  }
}

Recap and Additional Resources

Key Takeaways

  1. Compliance Priorities

    • GDPR compliance is mandatory
    • Obtain explicit consent
    • Maintain opt-out records
  2. Technical Considerations

    • Use proper number formatting (+423)
    • Implement retry logic
    • Monitor delivery rates
  3. Best Practices

    • Send during business hours
    • Localize content (German preferred)
    • Test regularly across carriers

Next Steps

  1. Review Regulations

    • Contact the Amt für Kommunikation
    • Review GDPR requirements
    • Document your compliance procedures
  2. Technical Setup

    • Choose an API provider
    • Implement error handling
    • Set up monitoring systems
  3. Testing and Validation

    • Test across all carriers
    • Verify delivery rates
    • Test opt-out functionality

Additional Resources

Official Resources:

Industry Guidelines:

Troubleshooting Common Issues

IssuePossible CauseSolution
Low delivery rate (<90%)Invalid numbers, spam filtersValidate numbers; review message content; check sender reputation
High opt-out rate (>2%)Excessive frequency, irrelevant contentReduce send frequency; improve targeting and personalization
Messages marked as spamURL shorteners, excessive capsUse branded domains; follow content filtering guidelines
Slow deliveryNetwork congestion, rate limitsImplement queuing; space out message batches

Support Contacts:

Frequently Asked Questions

How to send SMS messages to Liechtenstein phone numbers?

Use the international format (+423) followed by the subscriber number. Ensure the recipient number is a mobile number, as sending to landlines is not supported and will result in a delivery failure with a 400 response error code (21614). Several APIs like Twilio, Sinch, and Bird offer services for sending messages to Liechtenstein, each with its own authentication and formatting requirements. Remember to handle potential errors like invalid number formats and rate limits within your application logic.

What is the process for getting consent for SMS marketing in Liechtenstein?

Liechtenstein follows GDPR and E-Privacy Directive rules, requiring explicit consent before sending marketing SMS messages. This can be obtained through written or electronic means, clearly stating the purpose of the communication. Double opt-in, while not mandatory, is a recommended practice. Detailed records of consent, including timestamps and methods, should be maintained for at least two years for potential auditing.

Why does Liechtenstein convert MMS messages to SMS?

Liechtenstein automatically converts MMS to SMS messages containing a URL link to ensure delivery compatibility across all devices and networks. This conversion approach allows recipients to access multimedia content through a secure web link rather than directly through an MMS message, simplifying delivery and enhancing compatibility.

When should I send marketing SMS in Liechtenstein to respect local time?

The best practice is to schedule SMS campaigns between 10:00 and 18:00 CET on business days. Avoid sending messages on Sundays and public holidays. While emergency messages are permitted outside these hours, adhering to these recommended times ensures higher engagement and respects recipients' time.

Can I use an alphanumeric sender ID for SMS in Liechtenstein?

Yes, alphanumeric sender IDs are fully supported in Liechtenstein without pre-registration requirements, allowing for dynamic usage. Sender IDs are preserved as specified, meaning the ID you set will be displayed to the recipient. This is beneficial for branding and recognition.

What are the rules for STOP/HELP commands in Liechtenstein SMS?

Liechtenstein requires support for German stop commands (STOP, STOPP, ENDE), with HELP/HILFE commands also recommended. All opt-out keywords must be processed within 24 hours. Confirmation messages for these commands should be sent in either German or English, catering to the linguistic landscape.

What is the character limit for SMS messages in Liechtenstein?

Standard SMS messages in Liechtenstein are limited to 160 characters when using GSM-7 encoding, while Unicode messages are restricted to 70 characters. Longer messages can be sent as concatenated SMS, but keeping messages concise is a best practice. This ensures optimal delivery and cost-effectiveness.

How to handle opt-outs for SMS campaigns in Liechtenstein?

Opt-outs must be processed within 24 hours of receiving STOP commands like STOP, STOPP, or ENDE. Send a confirmation message to acknowledge the opt-out. Businesses are required to maintain internal suppression lists and keep records of opted-out numbers for at least five years, even without a centralized Do Not Call registry.

What SMS content is restricted in Liechtenstein?

Certain industries like gambling, adult content, cryptocurrency promotions, and unauthorized financial services are restricted from sending SMS messages. Regulated industries like banking, healthcare, and insurance face additional requirements like verification, confidentiality, and clear disclaimers respectively.

What are the best practices for sending SMS messages in Liechtenstein?

Best practices include using German (or English) for content localization, keeping messages under 160 characters, including a clear call-to-action, and personalizing whenever possible. Respect quiet hours and local holidays, and limit messages to 2-3 per recipient weekly. Consistently using a registered sender ID builds trust and recognition.

How to use Twilio for sending SMS messages in Liechtenstein?

Initialize the Twilio client with your Account SID and Auth Token. Use the `client.messages.create` method, ensuring the 'to' number includes the +423 country code. Provide the message body and your chosen sender ID. Optionally, include a `statusCallback` URL for delivery tracking. Proper number formatting is crucial for successful delivery.

What are the API rate limits for SMS in Liechtenstein?

Rate limits vary by provider. Twilio allows 100 messages per second, Sinch permits 30, and Bird allows 50. Implement strategies like exponential backoff and message queuing to manage high volumes and avoid exceeding these limits, ensuring smooth operation of your messaging services.

How to implement proper error handling for SMS API integrations?

Log detailed error information, including error codes, messages, timestamps, and any carrier responses. Categorize errors for reporting and implement appropriate handling strategies like retries with exponential backoff for rate limit issues or number format validation for invalid number errors. This helps maintain service reliability and identify areas for improvement.