South Korea SMS Guide: Compliance, A2P Regulations & Best Practices (2025)
Complete 2025 guide to South Korea SMS messaging: A2P regulations, PIPA compliance, KCC requirements, EUC-KR encoding, sender ID rules, and API integration for SK Telecom, KT, and LG U+ networks.
Market Conditions: South Korea operates one of the world's most advanced mobile markets, with nearly 100% smartphone penetration. Three major mobile operators dominate: SK Telecom (48.4% market share), KT (Korea Telecom, 28.5%), and LG U+ (remaining share). While OTT messaging apps like KakaoTalk dominate personal communications, SMS remains essential for business authentication, notifications, and marketing. Android devices hold approximately 70% market share, with iOS comprising most of the remainder.
Market Statistics: South Korea's A2P messaging market generated USD 3.74 billion in revenue in 2024 and is projected to reach USD 5.82 billion by 2030. The SMS bulk service market was valued at USD 0.6 billion in 2022 and is projected to reach USD 1.5 billion by 2030, growing at a CAGR of 15.8%. SMS delivery rates typically exceed 95% due to mature infrastructure and strict carrier quality standards. Average costs range from $0.02 to $0.08 per message depending on volume, sender type, and carrier.
This comprehensive guide covers South Korea SMS regulations, A2P messaging requirements, PIPA compliance, technical specifications including EUC-KR encoding, and best practices for sending business SMS through SK Telecom, KT, and LG U+ carriers. Whether you're implementing SMS authentication, marketing campaigns, or transactional messaging, this guide provides essential compliance and technical requirements for the Korean market.
SMS Features and Capabilities in South Korea
South Korea maintains strict regulations on SMS capabilities with specific requirements for message formatting, sender IDs, and delivery mechanisms. Understanding these features is essential for successful SMS API integration and compliance.
Two-way SMS Support
Two-way SMS is not supported in South Korea for A2P (Application-to-Person) messaging. Use one-way messaging for business communications with alternative channels for customer responses.
Alternative Channels for Customer Responses:
Web forms: Direct users to a landing page for response submission
KakaoTalk Business: Integrate KakaoTalk for Business messaging for two-way communication
Dedicated customer service lines: Provide a phone number (toll-free 080 or customer service 1544/1566/1577)
Email responses: Include an email address for customer inquiries
Mobile app deep links: Direct users to your app for in-app messaging
Concatenated Messages (Segmented SMS)
Support: Most carriers no longer support concatenated messages (known as LMS in South Korea) by default. SK Telecom is the primary exception. Some providers offer full LMS support (up to 1,000 Unicode or 2,000 GSM characters) upon request.
Request LMS Support:
Contact your SMS provider's account manager or technical support
Submit a formal request with your business use case and expected monthly volume
Provide business registration documents (Korean entity) or proof of international operations
Complete carrier-specific application forms (SK Telecom, KT, and LG U+ have separate requirements)
Wait 5–7 business days for carrier approval and account configuration
Test messages across all three carriers to verify LMS functionality
Monitor delivery reports during the first month to ensure proper segmentation
Message length: One SMS segment contains up to 140 bytes (140 ASCII characters or 70 Unicode characters).
Encoding considerations: Messages support both GSM-7 (ASCII) and UCS-2 (Unicode) encoding, but must use EUC-KR encoding for Korean characters. Delivery of Chinese characters is not guaranteed.
Byte Calculation Examples for Mixed Korean/English Content:
Korean characters in EUC-KR: 2 bytes per character
English/ASCII characters: 1 byte per character
Example 1: "안녕하세요" (5 Korean characters) = 10 bytes
Example 2: "Hello 고객님" (5 English + 1 space + 3 Korean) = 6 + 6 = 12 bytes
Example 3: "Order #12345 배송완료" (15 English/symbols + 1 space + 4 Korean) = 16 + 8 = 24 bytes
To calculate total bytes: (Korean characters × 2) + (ASCII characters × 1)
Maximum for single SMS: 140 bytes (e.g., 70 Korean characters, or 140 ASCII characters, or mix totaling ≤140 bytes)
Important: Without LMS support, concatenated messages may be trimmed, delivered as separate parts, or arrive out of sequence.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link, ensuring carrier compatibility while allowing rich media sharing through a web-based approach.
MMS-to-SMS Conversion Process:
URL Generation: Provider generates a secure shortened URL hosted on their CDN
Hosting: Media files (images, videos, PDFs) are stored on provider servers
Expiration: URLs expire after 30–90 days (Twilio: 30 days, Sinch: 90 days)
Technical Requirements: Media files must be under 5 MB; supported formats include JPEG, PNG, GIF, MP4, PDF
Best Practice: Host critical media on your own servers with permanent URLs
Recipient Phone Number Compatibility
Number Portability
Number portability is available in South Korea, allowing users to keep phone numbers when switching carriers. The number portability system is governed by Article 58 of the Telecommunications Business Act and processes requests within one business day. This does not significantly impact message delivery or routing.
Sending SMS to Landlines
Sending SMS to landline numbers is not possible in South Korea. Attempts result in a 400 response error (code 21614) – the message will not be delivered or charged.
How to Identify Landline vs Mobile Numbers:
According to the Korean telephone numbering plan, mobile numbers in South Korea always start with 010 (unified prefix since January 1, 2004). Landline numbers use geographic area codes:
Seoul: 02
Gyeonggi-do: 031
Incheon/Bucheon: 032
Other cities: 033, 041–044, 051–055, 061–064
Validation Logic:
TypeScript
functionisMobileNumber(phoneNumber: string): boolean {
// Remove country code and format to domestic formatconst domestic = phoneNumber.replace(/^\+82/, '0').replace(/[^0-9]/g, '');
// Mobile numbers start with 010 and are 11 digits totalreturn/^010[0-9]{8}$/.test(domestic);
}
functionisLandline(phoneNumber: string): boolean {
// Landlines start with 02-06 (excluding 010)const domestic = phoneNumber.replace(/^\+82/, '0').replace(/[^0-9]/g, '');
return/^0[2-6][0-9]{7,9}$/.test(domestic) && !domestic.startsWith('010');
}
South Korea SMS Compliance and Regulatory Guidelines
The Korea Communications Commission (KCC) and Korea Internet & Security Agency (KISA) regulate SMS communications in South Korea. All businesses must comply with the Personal Information Protection Act (PIPA) and the Act on Promotion of Information and Communications Network Utilization and Information Protection (Network Act). For international businesses, understanding 10DLC registration requirements is critical.
Key regulatory updates: PIPA was amended on September 15, 2023, with most provisions effective as of March 15, 2024. The amendments strengthened data subject rights and CPO (Chief Privacy Officer) independence requirements.
Administrative fines: Up to KRW 50 million (~USD $42,000) for violations
Criminal liability: Imprisonment of up to 5 years or criminal fine of up to KRW 50 million for severe breaches (e.g., transferring personal data to third parties without consent)
Punitive damages: Up to 5× the actual damages for breaches caused by intentional acts or negligence
Corrective orders: Non-compliance with PIPC corrective orders results in fines up to KRW 30 million
Recent Enforcement Examples:
March 2025: Modutour Network fined KRW 757.2 million (~USD $520,000) for data breach affecting 3.06 million individuals, failure to notify PIPC, and improper data retention
November 2024: Meta Platforms fined KRW 21.6 billion (~USD $15.67 million) for collecting sensitive personal data without legal basis
May 2025: Temu fined KRW 1.4 billion (~USD $978,000) for personal data violations
Consent and Opt-In
Explicit Consent Requirements:
Obtain written or electronic consent before sending marketing messages
Maintain consent records for at least 3 years
State the purpose, frequency, and type of messages in consent forms
Provide separate consents for different processing activities (collection, third-party provision) and information types
Best Practices for Consent:
Implement double opt-in verification
Maintain detailed consent logs with timestamps
Provide clear terms and conditions in Korean
Renew consent every 2 years for ongoing marketing communications
Example Compliant Consent Form Text:
Korean:
Code
[마케팅 정보 수신 동의]
귀하의 개인정보를 다음과 같이 마케팅 목적으로 활용하고자 합니다.
1. 수집·이용 목적: SMS를 통한 상품 및 서비스 안내, 이벤트 정보 제공
2. 수집 항목: 휴대전화번호, 이름
3. 보유·이용 기간: 동의 철회 시 또는 회원 탈퇴 시까지
4. 발송 빈도: 주 1-2회
위 내용에 동의하지 않으실 수 있으며, 동의하지 않으시는 경우 마케팅 정보를 받으실 수 없습니다.
동의함 [ ] 동의하지 않음 [ ]
수신거부: "수신거부"를 회신하시거나 고객센터(1234-5678)로 연락하시면 즉시 처리됩니다.
English Translation:
Code
[Marketing Information Consent]
We would like to use your personal information for marketing purposes as follows:
1. Purpose of collection and use: Product and service information, event notifications via SMS
2. Information collected: Mobile phone number, name
3. Retention period: Until consent withdrawal or account termination
4. Message frequency: 1-2 times per week
You may refuse to consent, in which case you will not receive marketing information.
I agree [ ] I do not agree [ ]
Opt-out: Reply "수신거부" (opt-out) or contact customer service at 1234-5678 for immediate processing.
Legal basis: Under the Network Act, receive explicit consent before transmitting advertisements via electronic media. If individuals withdraw or withhold consent, you cannot transmit profit-driven advertisements.
HELP/STOP and Other Commands
Include opt-out instructions in Korean in all marketing messages
Standard commands: "수신거부" (Opt-out) and "고객센터" (Help)
Commands must be free of charge
Process opt-out requests within 24 hours
Confirm opt-out status after processing
Example Marketing Message with Proper Opt-Out Format:
Code
(광고) [CompanyName] 신규 회원 50% 할인 이벤트! 지금 바로 앱에서 확인하세요. bit.ly/event123
수신거부: 0808-123-4567 또는 "수신거부" 회신
Translation:
Code
(Ad) [CompanyName] New member 50% discount event! Check now in the app. bit.ly/event123
Opt-out: 0808-123-4567 or reply "수신거부"
Required Elements:
(광고) header marks message as advertisement
Company name and clear offer
수신거부: footer with free opt-out number or reply instruction
Do Not Call / Do Not Disturb Registries
South Korea maintains a national Do-Not-Send Registry managed by KISA
Check numbers against the registry monthly
Maintain internal suppression lists
Honor opt-outs immediately
Document compliance procedures
KISA operates a spam reporting center (spam.kisa.or.kr) where individuals can report unsolicited messages
Accessing the Do-Not-Send Registry:
Note: As of 2025, KISA does not provide a public API for automated Do-Not-Send Registry checks. Compliance requires manual processes or working with registered telecommunications providers who have direct access to KISA systems.
Compliance Process:
For domestic Korean businesses: Register with KISA as a business sender by submitting business registration documents
Work with approved aggregators: Partner with SMS providers (e.g., Twilio, Sinch, local Korean aggregators) who maintain direct connections to KISA systems and perform registry checks on your behalf
Monthly verification: Request monthly registry updates from your SMS provider or aggregator
Internal suppression: Maintain your own opt-out database and cross-reference before every campaign
Documentation: Keep records of registry checks, dates, and suppression list updates for at least 3 years for compliance audits
Best Practice: Contact your SMS provider to confirm their KISA Do-Not-Send Registry integration and establish a monthly verification schedule.
Time Zone Sensitivity
Standard sending hours: 08:00 to 21:00 KST (Korea Standard Time, UTC+9)
Emergency notifications are exempt from time restrictions
Avoid sending during major holidays like Seollal (Lunar New Year) and Chuseok (Harvest Festival)
Consider business hours (09:00–18:00) for B2B communications
Emergency Notification Criteria:
According to KCC and KISA guidelines, emergency notifications exempt from time restrictions include:
Non-emergency messages (marketing, promotions, general service updates) must comply with 08:00–21:00 KST restrictions.
SMS Sender ID Options and Phone Number Types in South Korea
Alphanumeric Sender ID
Operator network capability: Not supported
Registration requirements: N/A
Sender ID preservation: All sender IDs are converted to numeric format
Long Codes
Domestic vs. International:
Domestic: Supported but requires local business registration
International: Supported with automatic prefix (009 or 006)
Domestic Long Code Registration Process:
Establish legal business entity in South Korea (register with National Tax Service)
Obtain business registration certificate (사업자등록증)
Apply for telecommunications business registration with KCC if sending over 10,000 messages/month
Submit application to chosen carrier (SK Telecom, KT, or LG U+) with:
Business registration certificate
Company seal (inkan) and representative ID
Service usage plan and expected volume
Bank account verification for billing
Wait 10–15 business days for carrier review and number assignment
Pay setup fees (varies by carrier; typically KRW 50,000–200,000) and monthly service fees (KRW 10,000–50,000)
Complete technical integration and testing with carrier's SMS gateway
Costs: Setup fees KRW 100,000–300,000 (~USD $75–$225); monthly fees KRW 20,000–100,000 (~USD $15–$75) depending on volume and carrier.
Sender ID preservation: No – international numbers are automatically prefixed with 009 or 006 by mobile operators
Provisioning time: 3–5 business days
Use cases: Transactional messages, alerts, notifications
Short Codes
Support: Not supported for international businesses
Provisioning time: N/A
Use cases: N/A
Why Short Codes Are Unavailable for International Businesses:
Short codes (3-6 digit numbers) in South Korea are heavily regulated and reserved exclusively for domestic entities with established business registration and direct carrier relationships. The KCC requires extensive documentation, local business presence, and compliance with strict content approval processes. International businesses can use long codes with international prefixes (009/006) or partner with local Korean aggregators who hold short code allocations. Domestic alternatives include virtual numbers (070 prefix for VoIP) or nationwide single numbers (1544, 1566, 1577 prefixes).
Prohibited SMS Content and Restricted Industries in South Korea
Prohibited Content:
Gambling and gaming
Adult content
Political campaigns (P2P traffic prohibited)
Cryptocurrency promotions
Unauthorized pharmaceutical products
Religious promotional content
Prohibited Keywords (Examples):
Korean carriers automatically filter messages containing:
Gambling: 도박, 카지노, 바카라, 토토, 슬롯머신
Adult: 성인, 19금, 음란, 섹스
Cryptocurrency: 코인 투자, 비트코인 수익, 가상화폐 수익
Drugs: 불법 의약품, 마약, 대마초
Financial fraud: 대출 보장, 무심사, 즉시 현금
Note: Exact keyword lists are proprietary to each carrier and updated regularly. Always test messages before bulk sends and monitor blocking rates.
Penalties for Sending Prohibited Content:
Immediate message blocking with no refund
Account suspension (temporary: 7-30 days; permanent for repeat violations)
Fines up to KRW 30 million under the Telecommunications Business Act
Criminal prosecution for fraud-related or illegal product promotion (up to 5 years imprisonment)
Audit requirements: Maintain detailed message logs for 5 years for regulatory audits
Customer authentication: Verify customer identity before sending account-specific information
Application Process:
Contact your SMS provider with FSC/FSS license documentation to enable financial services messaging. Approval typically takes 10–15 business days and may require security audits.
Content Filtering
Carrier Filtering Rules:
Use approved character sets (EUC-KR for Korean text)
Use URLs from whitelisted domains only
Content screening detects prohibited keywords
Messages automatically include mandatory prefixes (see below)
Domain Whitelisting Process:
Submit whitelist request to your SMS provider with:
Domain name(s) to be whitelisted
Domain ownership verification (DNS TXT record or SSL certificate)
Business registration documents
Sample message content showing how URLs will be used
Provider forwards request to all three carriers (SK Telecom, KT, LG U+)
Each carrier independently reviews and approves (typically 5–10 business days per carrier)
Test URLs across all carriers before launching campaigns
Renewal required annually or when domain ownership changes
Pre-Approved Domains:
Major platforms typically have standing whitelist approval: naver.com, kakao.com, daum.net, google.com, apple.com. Custom business domains require explicit whitelisting.
Important: URL shorteners (bit.ly, tinyurl.com, ow.ly) are blocked by default. Use your whitelisted domain with server-side redirects instead.
Automatic Message Prefixes:
All messages sent to South Korea are automatically prefixed with one of the following:
[Web 발신] – Message sent from web/A2P source
[국제발신] – Message sent from abroad
Tips to Avoid Blocking:
Use registered sender IDs
Avoid URL shorteners
Keep content clear and professional
Test message rendering before bulk campaigns
For marketing messages, include header advertisement "(광고)" and footer with opt-out information
Best Practices for Sending Business SMS in South Korea
SMS Messaging Strategy
Keep messages under 70 characters when possible to fit within a single segment
Include a clear call-to-action
Use formal Korean language style (존댓말, jondaetmal)
Avoid excessive punctuation or emojis in business communications
Sending Frequency and Timing
Limit to 1–2 messages per day per recipient
Respect quiet hours (21:00–08:00 KST)
Plan campaigns around Korean holidays (Seollal, Chuseok)
Space out bulk campaigns to avoid overwhelming recipients
Bulk Campaign Interval Guidance:
High-priority transactional: Send immediately (OTP, order confirmations)
Marketing to engaged users: 2-hour intervals between campaigns
Marketing to general audience: 24-hour minimum intervals between campaigns
Large broadcasts (>100,000 recipients): Spread over 4-6 hours using queue systems to avoid carrier throttling
Localization
Primary language: Korean (Hangul)
Use formal business Korean (존댓말, jondaetmal)
Include English only when necessary for technical terms or brand names
Test character rendering across all three major carriers (SK Telecom, KT, LG U+)
Verify EUC-KR encoding compatibility before sending
Common Localization Mistakes:
Using informal speech: Avoid casual Korean (반말) in business contexts; always use formal endings (습니다, 세요)
Direct English translation: Korean requires contextual particles and honorifics that don't exist in English
Wrong character encoding: Sending Unicode UTF-8 instead of EUC-KR causes garbled text (e.g., "한글" appears as "한글")
Mixing scripts incorrectly: Don't alternate Korean/English mid-sentence; keep brand names in English, descriptive text in Korean
Ignoring spacing rules: Korean doesn't use spaces between some grammatical elements; follow proper Korean spacing conventions
Opt-Out Management
Process opt-outs within 24 hours (required by law)
Maintain a centralized opt-out database
Confirm opt-out status after processing
Perform regular database cleaning to remove invalid numbers
Check the national Do-Not-Send Registry monthly
Testing and Monitoring
Test across all three major carriers before launching campaigns
Monitor delivery rates by carrier to identify issues
Track opt-out rates as a quality indicator
Conduct regular content compliance checks against KCC/KISA guidelines
Verify that automatic prefixes ([Web 발신] or [국제발신]) are displaying correctly
Acceptable Metrics and Thresholds:
Delivery rate: Target ≥95%; investigate if <90%
Opt-out rate: Normal ≤0.5%; concerning >2%
Bounce rate: Target ≤3%; audit list quality if >5%
Spam complaints: Target <0.1%; critical issue if >0.5%
Carrier-Specific Troubleshooting:
SK Telecom: High blocking rate often due to domain not whitelisted; verify URL whitelist status
KT: Delayed delivery typically indicates rate limiting; reduce send speed or implement queue backoff
LG U+: Garbled Korean text usually means encoding issue; confirm EUC-KR encoding implementation
SMS API Integration Guide for South Korea
Twilio SMS API for South Korea
Twilio provides a robust SMS API with specific support for South Korean messaging requirements.
TypeScript
import twilio from'twilio';
import iconv from'iconv-lite';
// Initialize the client with your credentialsconst client = twilio(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
// Send SMS to South Korea with proper E.164 formattingasyncfunctionsendSmsToKorea(to: string,
message: string): Promise<void> {
try {
// Format the phone number to E.164 format (+82XXXXXXXXX)// Remove leading 0 from local numbers (e.g., 010-1234-5678 becomes +821012345678)const formattedNumber = to.startsWith('+82')
? to
: `+82${to.replace(/^0/, '').replace(/[^0-9]/g, '')}`;
// Verify EUC-KR encoding for Korean charactersconst eucKrEncoded = iconv.encode(message, 'euc-kr');
const response = await client.messages.create({
body: message,
to: formattedNumber,
// Twilio automatically adds [Web 발신] or [국제발신] prefixfrom: process.env.TWILIO_PHONE_NUMBER,
// Optional: Set validity period (time before message expires)validityPeriod: 3600, // 1 hour in seconds// Optional: Request delivery receiptstatusCallback: 'https://your-domain.com/sms/status'
});
console.log(`Message sent successfully: ${response.sid}`);
} catch (error) {
console.error('Error sending message:', error);
throw error;
}
}
// Handle delivery receiptsasyncfunctionhandleDeliveryReceipt(webhookData: any): Promise<void> {
const { MessageSid, MessageStatus, To, ErrorCode } = webhookData;
console.log(`Message ${MessageSid} to ${To}: ${MessageStatus}`);
if (MessageStatus === 'failed' || MessageStatus === 'undelivered') {
console.error(`Delivery failed with error code: ${ErrorCode}`);
// Handle failed delivery (e.g., remove from list, retry with different provider)
}
}
Sinch SMS API for South Korea
Sinch offers dedicated APIs for the South Korean market with built-in compliance handling.
What character encoding is required for sending SMS to South Korea?
Use EUC-KR encoding for Korean characters. While GSM-7 (ASCII) and UCS-2 (Unicode) are supported for non-Korean text, EUC-KR is mandatory for proper delivery of Korean (Hangul) characters. Delivery of Chinese characters is not guaranteed.
No. Two-way SMS is not supported in South Korea for A2P (Application-to-Person) messaging. Use one-way messaging for business communications. If you need customer responses, implement alternative channels such as web forms, phone lookup services, or dedicated customer service lines.
What are the automatic prefixes added to SMS messages in South Korea?
All SMS messages sent to South Korea are automatically prefixed by carriers with either:
[Web 발신] – for messages sent from web/A2P sources
[국제발신] – for messages sent from abroad
These prefixes are mandatory and cannot be removed.
What are South Korea's SMS consent requirements under PIPA?
Under PIPA (Personal Information Protection Act) and the Network Act:
Obtain explicit written or electronic consent before sending marketing messages
Maintain consent records for at least 3 years
State the purpose, frequency, and type of messages in consent forms
Process opt-out requests within 24 hours
Check the national Do-Not-Send Registry monthly
What are the permitted sending hours for SMS in South Korea?
Standard sending hours are 08:00 to 21:00 KST (Korea Standard Time, UTC+9). Emergency notifications are exempt from these restrictions. For B2B communications, consider limiting to business hours (09:00–18:00 KST).
Are alphanumeric sender IDs supported in South Korea?
No. Alphanumeric sender IDs are not supported by South Korean mobile operators. All sender IDs are automatically converted to numeric format. International numbers are automatically prefixed with 009 or 006.
What is the maximum SMS message length in South Korea?
One SMS segment can contain up to 140 bytes, equivalent to 140 ASCII characters or 70 Unicode characters. Concatenated messages (LMS) are no longer supported by most carriers by default, though some providers offer full LMS support (up to 1,000 Unicode or 2,000 GSM characters) upon request.
Which mobile carriers operate in South Korea?
South Korea has three major mobile operators:
SK Telecom (largest carrier, 48.4% market share)
KT (Korea Telecom) (28.5% market share)
LG U+ (remaining market share)
Test your SMS campaigns across all three carriers before launching to ensure proper delivery and formatting.
Summary: Key Takeaways for South Korea SMS
Essential Requirements:
Always use EUC-KR encoding for Korean characters – delivery of Chinese characters is not guaranteed
Implement proper error handling and retry logic with exponential backoff
Respect rate limits and implement queuing systems for bulk campaigns
Obtain explicit consent before sending marketing messages and maintain records for 3 years minimum
Process opt-out requests within 24 hours (legally required)
Check the national Do-Not-Send Registry monthly
Messages are automatically prefixed with [Web 발신] or [국제발신] by carriers
Respect sending hours (08:00–21:00 KST) except for emergency notifications
Next Steps:
Review regulations: Read the KCC and KISA guidelines
Implement consent management: Build a PIPA-compliant consent system with timestamp logging, 3-year record retention, and opt-out processing
Set up monitoring: Configure delivery rate tracking by carrier, opt-out rate alerts (>2% threshold), and automated compliance reporting
Test comprehensively: Send test messages to all three carriers (SK Telecom, KT, LG U+) and verify EUC-KR encoding, prefix display, and URL rendering
Register with authorities: If establishing local presence, register business entity with National Tax Service and apply for telecommunications registration with KCC
PIPA Compliance Note: The Personal Information Protection Act was amended on September 15, 2023, with most provisions taking effect on March 15, 2024. Ensure your compliance procedures reflect these updates, particularly regarding CPO independence and data subject rights.
Frequently asked questions
Use a reputable SMS API provider like Twilio, Sinch, or Bird, ensuring your messages are encoded in EUC-KR for Korean characters and comply with local regulations. Due to the lack of two-way SMS support for A2P messaging, businesses must use one-way messaging and alternative channels for customer responses.
Despite the popularity of OTT apps like KakaoTalk, SMS remains essential for business communication in South Korea. It's primarily used for authentication, notifications, and marketing, particularly given the country's near 100% smartphone penetration.
South Korea's regulations prohibit two-way A2P SMS to prevent spam and ensure security. Businesses must use one-way SMS and other channels for customer interactions.
One SMS segment can hold up to 140 bytes, which translates to 140 ASCII characters or 70 Unicode characters. Messages must also be encoded using EUC-KR for Korean text.
Adhere to the standard sending window of 8:00 AM to 9:00 PM KST, avoid major holidays, and limit frequency to 1-2 messages per recipient daily. B2B communications should ideally occur during business hours (9:00 AM - 6:00 PM).
Obtain explicit written or electronic consent before sending marketing SMS, stating the purpose, frequency, and type of messages. Maintain these records for at least 3 years and consider double opt-in verification.
No, alphanumeric sender IDs are not supported in South Korea. All sender IDs are converted to numeric format by carriers, regardless of the original format.
All marketing messages must include opt-out instructions in Korean. Process requests within 24 hours, maintain a centralized opt-out database, and confirm the opt-out status to users.
Sending SMS messages to landline numbers in South Korea is not possible. Attempts will result in a 400 response error (code 21614), and no charge will occur.
Prohibited content includes gambling, adult material, political campaigns, cryptocurrency promotions, and unauthorized pharmaceutical products. Financial and healthcare industries face additional regulations.
Use registered sender IDs, avoid URL shorteners, include mandatory prefixes (like [Web ??????] for A2P), and keep content clear, professional, and compliant with character set (EUC-KR) requirements.
Comply with KCC and KISA regulations, including the Personal Information Protection Act (PIPA), obtain consent for marketing messages, provide clear opt-out instructions, and respect sending time restrictions.
MMS messages are automatically converted to SMS with an embedded URL link. This ensures compatibility across all carriers while still allowing for the sharing of rich media content via a web link.
Short codes are not supported for international businesses in South Korea. Businesses need to use long codes with specific prefixes.
South Korea SMS Market Overview and Statistics
Market Conditions: South Korea operates one of the world's most advanced mobile markets, with nearly 100% smartphone penetration. Three major mobile operators dominate: SK Telecom (48.4% market share), KT (Korea Telecom, 28.5%), and LG U+ (remaining share). While OTT messaging apps like KakaoTalk dominate personal communications, SMS remains essential for business authentication, notifications, and marketing. Android devices hold approximately 70% market share, with iOS comprising most of the remainder.
Market Statistics: South Korea's A2P messaging market generated USD 3.74 billion in revenue in 2024 and is projected to reach USD 5.82 billion by 2030. The SMS bulk service market was valued at USD 0.6 billion in 2022 and is projected to reach USD 1.5 billion by 2030, growing at a CAGR of 15.8%. SMS delivery rates typically exceed 95% due to mature infrastructure and strict carrier quality standards. Average costs range from $0.02 to $0.08 per message depending on volume, sender type, and carrier.
This comprehensive guide covers South Korea SMS regulations, A2P messaging requirements, PIPA compliance, technical specifications including EUC-KR encoding, and best practices for sending business SMS through SK Telecom, KT, and LG U+ carriers. Whether you're implementing SMS authentication, marketing campaigns, or transactional messaging, this guide provides essential compliance and technical requirements for the Korean market.
SMS Features and Capabilities in South Korea
South Korea maintains strict regulations on SMS capabilities with specific requirements for message formatting, sender IDs, and delivery mechanisms. Understanding these features is essential for successful SMS API integration and compliance.
Two-way SMS Support
Two-way SMS is not supported in South Korea for A2P (Application-to-Person) messaging. Use one-way messaging for business communications with alternative channels for customer responses.
Alternative Channels for Customer Responses:
Concatenated Messages (Segmented SMS)
Support: Most carriers no longer support concatenated messages (known as LMS in South Korea) by default. SK Telecom is the primary exception. Some providers offer full LMS support (up to 1,000 Unicode or 2,000 GSM characters) upon request.
Request LMS Support:
Message length: One SMS segment contains up to 140 bytes (140 ASCII characters or 70 Unicode characters).
Encoding considerations: Messages support both GSM-7 (ASCII) and UCS-2 (Unicode) encoding, but must use EUC-KR encoding for Korean characters. Delivery of Chinese characters is not guaranteed.
Byte Calculation Examples for Mixed Korean/English Content:
(Korean characters × 2) + (ASCII characters × 1)Important: Without LMS support, concatenated messages may be trimmed, delivered as separate parts, or arrive out of sequence.
MMS Support
MMS messages are automatically converted to SMS with an embedded URL link, ensuring carrier compatibility while allowing rich media sharing through a web-based approach.
MMS-to-SMS Conversion Process:
Recipient Phone Number Compatibility
Number Portability
Number portability is available in South Korea, allowing users to keep phone numbers when switching carriers. The number portability system is governed by Article 58 of the Telecommunications Business Act and processes requests within one business day. This does not significantly impact message delivery or routing.
Sending SMS to Landlines
Sending SMS to landline numbers is not possible in South Korea. Attempts result in a 400 response error (code 21614) – the message will not be delivered or charged.
How to Identify Landline vs Mobile Numbers: According to the Korean telephone numbering plan, mobile numbers in South Korea always start with
010(unified prefix since January 1, 2004). Landline numbers use geographic area codes:02031032033,041–044,051–055,061–064Validation Logic:
function isMobileNumber(phoneNumber: string): boolean { // Remove country code and format to domestic format const domestic = phoneNumber.replace(/^\+82/, '0').replace(/[^0-9]/g, ''); // Mobile numbers start with 010 and are 11 digits total return /^010[0-9]{8}$/.test(domestic); } function isLandline(phoneNumber: string): boolean { // Landlines start with 02-06 (excluding 010) const domestic = phoneNumber.replace(/^\+82/, '0').replace(/[^0-9]/g, ''); return /^0[2-6][0-9]{7,9}$/.test(domestic) && !domestic.startsWith('010'); }South Korea SMS Compliance and Regulatory Guidelines
The Korea Communications Commission (KCC) and Korea Internet & Security Agency (KISA) regulate SMS communications in South Korea. All businesses must comply with the Personal Information Protection Act (PIPA) and the Act on Promotion of Information and Communications Network Utilization and Information Protection (Network Act). For international businesses, understanding 10DLC registration requirements is critical.
Key regulatory updates: PIPA was amended on September 15, 2023, with most provisions effective as of March 15, 2024. The amendments strengthened data subject rights and CPO (Chief Privacy Officer) independence requirements.
Penalties and Fines for Non-Compliance: According to DLA Piper and recent PIPC enforcement actions:
Recent Enforcement Examples:
Consent and Opt-In
Explicit Consent Requirements:
Best Practices for Consent:
Example Compliant Consent Form Text:
Korean:
English Translation:
Legal basis: Under the Network Act, receive explicit consent before transmitting advertisements via electronic media. If individuals withdraw or withhold consent, you cannot transmit profit-driven advertisements.
HELP/STOP and Other Commands
Example Marketing Message with Proper Opt-Out Format:
Translation:
Required Elements:
(광고)header marks message as advertisement수신거부:footer with free opt-out number or reply instructionDo Not Call / Do Not Disturb Registries
Accessing the Do-Not-Send Registry: Note: As of 2025, KISA does not provide a public API for automated Do-Not-Send Registry checks. Compliance requires manual processes or working with registered telecommunications providers who have direct access to KISA systems.
Compliance Process:
Best Practice: Contact your SMS provider to confirm their KISA Do-Not-Send Registry integration and establish a monthly verification schedule.
Time Zone Sensitivity
Emergency Notification Criteria: According to KCC and KISA guidelines, emergency notifications exempt from time restrictions include:
Non-emergency messages (marketing, promotions, general service updates) must comply with 08:00–21:00 KST restrictions.
SMS Sender ID Options and Phone Number Types in South Korea
Alphanumeric Sender ID
Operator network capability: Not supported
Registration requirements: N/A
Sender ID preservation: All sender IDs are converted to numeric format
Long Codes
Domestic vs. International:
Domestic Long Code Registration Process:
Costs: Setup fees KRW 100,000–300,000 (~USD $75–$225); monthly fees KRW 20,000–100,000 (~USD $15–$75) depending on volume and carrier.
Sender ID preservation: No – international numbers are automatically prefixed with 009 or 006 by mobile operators
Provisioning time: 3–5 business days
Use cases: Transactional messages, alerts, notifications
Short Codes
Support: Not supported for international businesses
Provisioning time: N/A
Use cases: N/A
Why Short Codes Are Unavailable for International Businesses: Short codes (3-6 digit numbers) in South Korea are heavily regulated and reserved exclusively for domestic entities with established business registration and direct carrier relationships. The KCC requires extensive documentation, local business presence, and compliance with strict content approval processes. International businesses can use long codes with international prefixes (009/006) or partner with local Korean aggregators who hold short code allocations. Domestic alternatives include virtual numbers (070 prefix for VoIP) or nationwide single numbers (1544, 1566, 1577 prefixes).
Prohibited SMS Content and Restricted Industries in South Korea
Prohibited Content:
Prohibited Keywords (Examples): Korean carriers automatically filter messages containing:
도박,카지노,바카라,토토,슬롯머신성인,19금,음란,섹스코인 투자,비트코인 수익,가상화폐 수익불법 의약품,마약,대마초대출 보장,무심사,즉시 현금Note: Exact keyword lists are proprietary to each carrier and updated regularly. Always test messages before bulk sends and monitor blocking rates.
Penalties for Sending Prohibited Content:
Regulated Industries:
Financial Services Additional Verification Requirements: According to the Electronic Financial Transactions Act and FSC regulations:
Application Process: Contact your SMS provider with FSC/FSS license documentation to enable financial services messaging. Approval typically takes 10–15 business days and may require security audits.
Content Filtering
Carrier Filtering Rules:
Domain Whitelisting Process:
Pre-Approved Domains: Major platforms typically have standing whitelist approval:
naver.com,kakao.com,daum.net,google.com,apple.com. Custom business domains require explicit whitelisting.Important: URL shorteners (bit.ly, tinyurl.com, ow.ly) are blocked by default. Use your whitelisted domain with server-side redirects instead.
Automatic Message Prefixes: All messages sent to South Korea are automatically prefixed with one of the following:
Tips to Avoid Blocking:
Best Practices for Sending Business SMS in South Korea
SMS Messaging Strategy
Sending Frequency and Timing
Bulk Campaign Interval Guidance:
Localization
Common Localization Mistakes:
Opt-Out Management
Testing and Monitoring
Acceptable Metrics and Thresholds:
Carrier-Specific Troubleshooting:
SMS API Integration Guide for South Korea
Twilio SMS API for South Korea
Twilio provides a robust SMS API with specific support for South Korean messaging requirements.
import twilio from 'twilio'; import iconv from 'iconv-lite'; // Initialize the client with your credentials const client = twilio( process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN ); // Send SMS to South Korea with proper E.164 formatting async function sendSmsToKorea( to: string, message: string ): Promise<void> { try { // Format the phone number to E.164 format (+82XXXXXXXXX) // Remove leading 0 from local numbers (e.g., 010-1234-5678 becomes +821012345678) const formattedNumber = to.startsWith('+82') ? to : `+82${to.replace(/^0/, '').replace(/[^0-9]/g, '')}`; // Verify EUC-KR encoding for Korean characters const eucKrEncoded = iconv.encode(message, 'euc-kr'); const response = await client.messages.create({ body: message, to: formattedNumber, // Twilio automatically adds [Web 발신] or [국제발신] prefix from: process.env.TWILIO_PHONE_NUMBER, // Optional: Set validity period (time before message expires) validityPeriod: 3600, // 1 hour in seconds // Optional: Request delivery receipt statusCallback: 'https://your-domain.com/sms/status' }); console.log(`Message sent successfully: ${response.sid}`); } catch (error) { console.error('Error sending message:', error); throw error; } } // Handle delivery receipts async function handleDeliveryReceipt(webhookData: any): Promise<void> { const { MessageSid, MessageStatus, To, ErrorCode } = webhookData; console.log(`Message ${MessageSid} to ${To}: ${MessageStatus}`); if (MessageStatus === 'failed' || MessageStatus === 'undelivered') { console.error(`Delivery failed with error code: ${ErrorCode}`); // Handle failed delivery (e.g., remove from list, retry with different provider) } }Sinch SMS API for South Korea
Sinch offers dedicated APIs for the South Korean market with built-in compliance handling.
import axios from 'axios'; import iconv from 'iconv-lite'; class SinchSmsService { private readonly apiToken: string; private readonly servicePlanId: string; private readonly baseUrl: string; constructor(apiToken: string, servicePlanId: string) { this.apiToken = apiToken; this.servicePlanId = servicePlanId; this.baseUrl = 'https://sms.api.sinch.com/xms/v1'; } async sendSms(to: string, message: string): Promise<void> { try { // Validate EUC-KR encoding const eucKrBuffer = iconv.encode(message, 'euc-kr'); if (eucKrBuffer.length > 140) { console.warn(`Message exceeds 140 bytes: ${eucKrBuffer.length} bytes`); } const response = await axios.post( `${this.baseUrl}/${this.servicePlanId}/batches`, { from: '009xxx', // Automatically prefixed by Korean carriers to: [to], body: message, // EUC-KR encoding required for Korean characters encoding: 'EUC-KR' }, { 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; } } }Bird SMS API for South Korea
Bird's API provides streamlined integration for South Korean messaging compliance.
import { BirdClient } from '@bird/sdk'; import iconv from 'iconv-lite'; class BirdSmsService { private readonly client: BirdClient; private readonly channelId: string; constructor(accessKey: string, channelId: string) { this.client = new BirdClient(accessKey); this.channelId = channelId; } async sendMessage( phoneNumber: string, messageText: string ): Promise<void> { try { // Validate EUC-KR compatibility const eucKrEncoded = iconv.encode(messageText, 'euc-kr'); console.log(`Message byte length: ${eucKrEncoded.length}`); const response = await this.client.messages.create({ channel: this.channelId, recipient: { type: 'individual', phoneNumber: phoneNumber }, content: { type: 'text', text: messageText }, // Korea-specific configuration options: { region: 'kr', encoding: 'EUC-KR' } }); console.log('Message sent:', response.messageId); } catch (error) { console.error('Bird SMS error:', error); throw error; } } }EUC-KR Encoding Implementation Library:
// Install: npm install iconv-lite import iconv from 'iconv-lite'; // Encode Korean text to EUC-KR function encodeToEucKr(text: string): Buffer { return iconv.encode(text, 'euc-kr'); } // Decode EUC-KR to JavaScript string function decodeFromEucKr(buffer: Buffer): string { return iconv.decode(buffer, 'euc-kr'); } // Validate message fits within 140-byte limit function validateSmsLength(message: string): { valid: boolean; bytes: number } { const eucKrBuffer = encodeToEucKr(message); return { valid: eucKrBuffer.length <= 140, bytes: eucKrBuffer.length }; } // Example usage const message = "안녕하세요 고객님, 주문이 완료되었습니다."; const validation = validateSmsLength(message); console.log(`Message length: ${validation.bytes} bytes, Valid: ${validation.valid}`);API Rate Limits and Throughput
Default rate limits vary by provider:
Throughput Management Strategies:
Queue System Implementation Example:
import { Queue, Worker } from 'bullmq'; import IORedis from 'ioredis'; // Initialize Redis connection const connection = new IORedis({ host: 'localhost', port: 6379, maxRetriesPerRequest: null }); // Create SMS queue const smsQueue = new Queue('korea-sms', { connection }); // Add message to queue async function queueSms(to: string, message: string) { await smsQueue.add('send-sms', { to, message, timestamp: Date.now() }, { attempts: 3, backoff: { type: 'exponential', delay: 2000 } }); } // Process queue with rate limiting const worker = new Worker('korea-sms', async (job) => { const { to, message } = job.data; await sendSmsToKorea(to, message); }, { connection, limiter: { max: 50, // 50 messages duration: 1000 // per second } });Error Handling and Reporting
Common Error Scenarios:
Best Practices:
// Robust error handling implementation for South Korea SMS async function handleSmsError(error: any): Promise<void> { // Handle invalid number errors if (error.code === 'INVALID_NUMBER' || error.code === '21614') { // Remove invalid number from database await cleanInvalidNumber(error.number); console.log(`Removed invalid number: ${error.number}`); } // Handle rate limit errors with exponential backoff else if (error.code === 'RATE_LIMIT_EXCEEDED' || error.status === 429) { await exponentialBackoff(); console.log('Rate limit reached – implementing backoff strategy'); } // Handle encoding errors else if (error.message?.includes('encoding') || error.message?.includes('character')) { console.error('Character encoding issue – verify EUC-KR compatibility'); } // Handle content filtering/blocking else if (error.code === 'CONTENT_BLOCKED') { console.error('Message blocked by carrier – review content against filtering rules'); } // Log all errors for monitoring and compliance await logger.error({ error: error.message, code: error.code, timestamp: new Date().toISOString(), service: 'sms', destination: 'KR' }); } // Exponential backoff implementation async function exponentialBackoff(retryCount: number = 0): Promise<void> { const maxRetries = 5; const baseDelay = 1000; // 1 second if (retryCount >= maxRetries) { throw new Error('Max retry attempts reached'); } const delay = baseDelay * Math.pow(2, retryCount); await new Promise(resolve => setTimeout(resolve, delay)); }Provider-Specific Error Codes:
21614(landline number),21211(invalid format),30007(message blocked),30008(unknown destination)400(bad request),402(insufficient balance),403(forbidden content),429(rate limit)INVALID_RECIPIENT(bad number),QUOTA_EXCEEDED(rate limit),BLOCKED_CONTENT(carrier filtering)South Korea SMS Frequently Asked Questions (FAQ)
What character encoding is required for sending SMS to South Korea?
Use EUC-KR encoding for Korean characters. While GSM-7 (ASCII) and UCS-2 (Unicode) are supported for non-Korean text, EUC-KR is mandatory for proper delivery of Korean (Hangul) characters. Delivery of Chinese characters is not guaranteed.
EUC-KR Encoding Implementation:
import iconv from 'iconv-lite'; // Encode Korean text const koreanText = "안녕하세요"; const eucKrEncoded = iconv.encode(koreanText, 'euc-kr'); // Check byte length console.log(`Byte length: ${eucKrEncoded.length}`); // 10 bytes (5 characters × 2 bytes) // Decode back to string const decoded = iconv.decode(eucKrEncoded, 'euc-kr'); console.log(decoded); // "안녕하세요"Can I send two-way SMS in South Korea?
No. Two-way SMS is not supported in South Korea for A2P (Application-to-Person) messaging. Use one-way messaging for business communications. If you need customer responses, implement alternative channels such as web forms, phone lookup services, or dedicated customer service lines.
What are the automatic prefixes added to SMS messages in South Korea?
All SMS messages sent to South Korea are automatically prefixed by carriers with either:
These prefixes are mandatory and cannot be removed.
What are South Korea's SMS consent requirements under PIPA?
Under PIPA (Personal Information Protection Act) and the Network Act:
What are the permitted sending hours for SMS in South Korea?
Standard sending hours are 08:00 to 21:00 KST (Korea Standard Time, UTC+9). Emergency notifications are exempt from these restrictions. For B2B communications, consider limiting to business hours (09:00–18:00 KST).
Are alphanumeric sender IDs supported in South Korea?
No. Alphanumeric sender IDs are not supported by South Korean mobile operators. All sender IDs are automatically converted to numeric format. International numbers are automatically prefixed with 009 or 006.
What is the maximum SMS message length in South Korea?
One SMS segment can contain up to 140 bytes, equivalent to 140 ASCII characters or 70 Unicode characters. Concatenated messages (LMS) are no longer supported by most carriers by default, though some providers offer full LMS support (up to 1,000 Unicode or 2,000 GSM characters) upon request.
Which mobile carriers operate in South Korea?
South Korea has three major mobile operators:
Test your SMS campaigns across all three carriers before launching to ensure proper delivery and formatting.
Summary: Key Takeaways for South Korea SMS
Essential Requirements:
Next Steps:
Additional Resources:
PIPA Compliance Note: The Personal Information Protection Act was amended on September 15, 2023, with most provisions taking effect on March 15, 2024. Ensure your compliance procedures reflect these updates, particularly regarding CPO independence and data subject rights.