OTP SMS templates
verification messages that fit one SMS

Ready-to-use wording for sign-up, login, password reset and payment codes in English, Malay and Chinese — each one fits a single SMS, so each code costs one charge.

What every OTP message needs

A verification SMS is read in two seconds by someone switching between apps. It has four jobs, in this order:

  1. Who it is from. Start with your brand — "MyShop:" — because the sender field shows a number, not your name. (The message will arrive as "RM0 MyShop: …": the RM0 is added on our route to every message, and its 4 characters are already counted in the limits on this page.)
  2. The code, near the word "code". Phones look for a number next to words like "code" to offer it on the keyboard automatically.
  3. How long it lasts. "Valid for 5 minutes" stops users typing an expired code and blaming you.
  4. A warning not to share it. This is what protects your users from people who call pretending to be you and ask for "the number we just sent".

And three things it should not have: no links (a link in a code message is the classic shape of a phishing SMS and trains users to tap them), no promotion (it turns a service message into marketing), and no emoji or curly quotes (one non-ASCII character switches the whole message to Unicode, which cuts a segment from 156 characters to 66 and can double the cost).

English templates

UseMessageCharacters
Sign-upMyShop: your verification code is 482913. Valid for 5 minutes. Do not share this code with anyone.98
LoginMyShop: 482913 is your login code. Valid for 5 minutes. If this wasn't you, ignore this message.96
Password resetMyShop: use code 482913 to reset your password. Valid for 10 minutes. We will never ask for this code by phone.111
Change of phone numberMyShop: code 482913 confirms this number for your account. Valid for 5 minutes. Do not share it.96
Payment confirmationMyShop: code 482913 confirms your payment of RM150.00. Valid for 3 minutes. Never share this code.98
Cash-on-delivery orderMyShop: code 482913 confirms your COD order #10482. Valid for 10 minutes. Do not share it.90

Replace "MyShop" with your own brand. Keep international brand names you do not own out of the message — Malaysian carriers fine messages containing protected brand names, and the fine is passed back to the sender.

Malay templates

KegunaanMessageCharacters
PendaftaranMyShop: Kod pengesahan anda ialah 482913. Sah selama 5 minit. Jangan kongsi kod ini dengan sesiapa.99
Log masukMyShop: 482913 ialah kod log masuk anda. Sah selama 5 minit. Abaikan mesej ini jika bukan anda.95
Tetapan semula kata laluanMyShop: Gunakan kod 482913 untuk menetapkan semula kata laluan. Sah 10 minit. Kami tidak akan meminta kod ini melalui telefon.126
Pengesahan bayaranMyShop: Kod 482913 mengesahkan bayaran RM150.00 anda. Sah 3 minit. Jangan kongsi kod ini.89

Malay uses the same plain alphabet as English, so it costs the same. If your customers are mostly Malay-speaking, sending the code in Malay is free; there is no reason to default to English.

Chinese templates

用途MessageCharacters
注册【MyShop】您的验证码是 482913,5 分钟内有效,请勿告诉他人。37 (Unicode)
登录【MyShop】登录验证码 482913,5 分钟内有效。如非本人操作请忽略。39 (Unicode)
重置密码【MyShop】重置密码验证码 482913,10 分钟内有效。我们不会致电索取验证码。44 (Unicode)

Chinese is always sent as Unicode, so one segment holds 66 characters instead of 156. Short codes like these still fit in one segment and cost the same as English. Add one more sentence and it becomes two segments and two charges — check the count in the segment calculator before you go live.

Let the phone fill in the code

Typing six digits is where people drop off. Phones can fill the code in for them if the message is shaped the right way:

MyShop: your verification code is 482913. Valid for 5 minutes.

FA+9qCX9VSu
MyShop: your verification code is 482913. Valid for 5 minutes.

@myshop.com.my #482913

Both formats are strict: one extra space on the last line and the phone ignores it. Send one to your own phone before switching it on for users.

Sending the template

Your system fills in the code and sends the finished text in one API request. How to wire that up — generating the code, storing it, rate limits and checking what the user types — is in send OTP SMS from PHP, Laravel and WordPress. Pricing, delivery speed and the sender number are on OTP SMS Malaysia.

OTP template questions

How long should an OTP SMS be?

Short enough for one segment: up to 156 characters in plain English or Malay on our route, or 66 if it contains any Chinese character or emoji. Every template on this page fits one segment.

Should an OTP SMS include a link?

No. Links in code messages look like phishing, train users to tap links in SMS, and add nothing — the user is already on your site or app waiting for the code.

How long should an OTP be valid?

Three to five minutes for login and payment codes, up to ten minutes for password resets. Longer windows give a stolen code more time to be used.

Can I write the OTP SMS in Chinese?

Yes. It is sent as Unicode, so one segment holds 66 characters. Short messages like the templates above still cost one segment.

Six digits or four?

Six. A four-digit code can be guessed in 10,000 tries; six digits gives a million combinations, and phones fill both in equally easily.

Test a template on your own phone

Paste any template into the dashboard, see the segment count before you send, and check how it looks on your handset.