SMS and OTP, delivered.
One API for every network.
One API for one-time passwords, order updates, alerts and two-way replies, built to work with any mobile network. Text any Nepal mobile number today, with more countries on the way. We handle delivery; you get delivery reports, signed webhooks and a dashboard you will actually enjoy.
Already a customer? Log in · Read the docs
- 6-digit
- OTP in one call
- NPR 0.50
- per SMS on Business
- Every network
- carrier-grade delivery
One API, three jobs
Built for the messages that can’t be late
Verification codes, receipts and two-way replies — each with the guardrails it needs, on one key.
OTP verification
We generate a 6-digit code, send it branded with your app name, store only its hash and check it for you. Resend cooldowns, attempt caps and per-number limits are built in.
Learn moreTransactional alerts
Order updates, payment receipts, appointment reminders. Idempotency keys make retries safe, so a customer never gets the same message twice.
Learn moreTwo-way messaging
Replies come back to you as message.inbound webhooks, linked to the message they answer, and appear in your dashboard inbox.
How it works
From your server to their screen in four steps
No paperwork with networks, nothing to host. You call the API; SMSRay delivers over local mobile networks and reports back on every message.
Step 1 of 4
Connect
We set up your workspace. Create an API key in the dashboard, with scopes, an IP allowlist, a daily cap and test mode, then call one REST endpoint from your server.
curl https://api.smsray.com/api/sms/v1/sms/send \ -H "x-api-key: $SMSRAY_API_KEY" \ -H "content-type: application/json" \ -H "Idempotency-Key: order-1042-shipped" \ -d '{ "to": "9779801234567", "text": "Your order #1042 has shipped." }'Step 2 of 4
Approve a template
Five templates are ready from day one. Send us your own wording with {{variables}} for the parts that change; we aim to review it within one business day.
Step 3 of 4
Send
One POST with the number and the text. SMSRay checks it against your template, counts the SMS and answers straight away with a message id.
Step 4 of 4
Track
Watch the status move to delivered in the dashboard, poll it by id, or get a signed webhook on your server. Analytics and alerts show the bigger picture.
For developers
A REST API you can learn over coffee
Five endpoints, one header, one error shape. Base URL api.smsray.com/api/sms/v1.
Safe retries
Send an Idempotency-Key and replays within 24 h return the original response — never a second SMS.
Signed webhooks
HMAC-SHA256 with a timestamp, 8 attempts with backoff, and zero-downtime secret rotation.
Honest segments
GSM-7 vs Unicode counted exactly — Nepali text, emoji and escape characters never split mid-character.
curl https://api.smsray.com/api/sms/v1/sms/send \
-H "x-api-key: $SMSRAY_API_KEY" \
-H "content-type: application/json" \
-H "Idempotency-Key: order-1042-shipped" \
-d '{ "to": "9779801234567", "text": "Your order #1042 has shipped." }'200 OK
{ "success": true, "messageId": "2b1f6c1e-…", "status": "queued",
"segments": 1, "encoding": "GSM7" }Build the flow
Pick an industry. Watch the flow build itself.
Your system decides when to send; SMSRay sends, tracks and reports back. Every step marked live works today. Workflow automation, for scheduled sends, keyword auto-replies and webhook-triggered SMS, is being built now.
Confirm every order the moment it is placed and keep your CRM in sync.
Order placed
Your app calls POST /sms/send
Live today“Order confirmed” SMS
Prebuilt approved template
Live todayDelivery report
queued → sent → delivered
Live todayWebhook to your CRM
Signed message.status event
Live today“Out for delivery” on dispatch
Webhook-triggered SMS
Coming soon
Built to land once
You send. We make sure it lands.
Every message is queued, retried when an attempt stumbles, tracked to a delivery receipt and reported to your server. A message that finally fails is credited back.
OTP hashing
Only a SHA-256 hash of each code is stored.
API key scopes
Keys stored as hashes, limited to what they need.
IP allowlists
Accept requests only from your servers.
Audit log
Every portal change: who, what and when.
In their language
The same message, in Nepali or English
Devanagari is sent as Unicode and counted exactly. Flip each message and see how many SMS it uses.
Schools
10:42MessagesYourSchoolText message · now
YourSchool: Dear parent, Aarav's Kartik fee of Rs 4,500 is due by the 15th. Please pay at the school office. Thank you.GSM-7 · 119 chars1 SMSFee reminder. Sent from an approved template.
Banks & BFIs
10:42MessagesYourBankText message · now
YourBank: 482913 is your verification code. Valid for 5 minutes. Do not share it.GSM-7 · 81 chars1 SMSSign-in code. Sent from an approved template.
Clinics
10:42MessagesYourClinicText message · now
YourClinic: Reminder: your appointment with Dr. Sharma is tomorrow at 10:30 AM. Reply 1 to confirm, 2 to reschedule.1GSM-7 · 116 chars1 SMSAppointment reminder. The reply reaches you as a message.inbound webhook.
Shops
10:42MessagesYourStoreText message · now
YourStore: Good news! Order #1042 has shipped and will reach you today by 6 PM.GSM-7 · 79 chars1 SMSOrder shipped. Sent from an approved template.
Salons
10:42MessagesYourSalonText message · now
YourSalon: Your booking with Anisha is confirmed for Saturday, 2:00 PM. Reply 2 to reschedule.2GSM-7 · 94 chars1 SMSBooking confirmed. The reply reaches you as a message.inbound webhook.
Example messages written for illustration under generic brand names. Message counts are calculated live for the text shown.
Pricing
Simple monthly plans, in rupees
1 SMS = up to 160 English (GSM-7) characters, or up to 70 characters in Nepali/Unicode. Longer messages use more SMS (153 or 67 characters per part).
Starter
NPR 3,000 / month
4,500 SMS · ≈ NPR 0.67 per SMS
OTP and transactional SMS
Business
Most popularNPR 5,000 / month
10,000 SMS · NPR 0.50 per SMS
OTP and transactional SMS
Enterprise
Contact us
Custom volume and pricing
OTP, transactional and promotional SMS
Every plan includes the REST API, dashboard, delivery reports and webhooks, the OTP send and verify API, and analytics. Unused SMS expire at the end of each monthly period.
Free tools
Preview your OTP. Price your message.
Type your brand name to see the exact verification text your customers receive. The SMS calculator counts parts for English and Nepali and shows the cost per message on each plan.
- Six digits, valid for 5 minutes
- Built-in template, already approved
GSM-7 · 80 characters · 1 SMS
Preview: YourApp: 482913 is your verification code. Valid for 5 minutes. Do not share it.
The dashboard
See every message, every status, every second
Search the log, send a test, manage API keys and teammates, check your balance, see analytics and watch delivery live, from a laptop or your phone.
Sent today
1,284
Delivered
1,251
Balance
NPR —
| To | Type | Message | Seg | Status |
|---|---|---|---|---|
| 98•••••213 | otp | (OTP hidden) | 1 | delivered |
| 97•••••480 | transactional | Your order #1042 has shipped. | 1 | sent |
| 98•••••771 | transactional | Payment of NPR 2,500 received. Thank you! | 1 | delivered |
| 98•••••034 | otp | (OTP hidden) | 1 | queued |
| 96•••••915 | promotional | Dashain offer: 20% off all plans this week… | 2 | delivered |
Phone or email sign-in
One-time codes, no passwords to leak.
Full audit trail
Every change recorded with who, when and where.
Live status
Watch messages move from queued to delivered.
Coming soon
Voice is next: missed-call verification, call alerts and voice OTP
The same platform that delivers your SMS will soon verify numbers with a missed call and ring customers for urgent alerts. Same key, same dashboard.
See what’s comingSend your first SMS this week
Plans from NPR 3,000 a month. Tell us what you send and we'll set up your account, so OTP works on day one.
Already a customer? Log in