Bulk SMS and OTP, built for Nepal
Send verification codes to NTC and Ncell numbers, in English or Nepali, from one dashboard or one API request. You see what happened to every message, and pay only for the segments you send.
- No setup fees
- English & नेपाली
- NTC & Ncell
- Billed by the real segment
- NTC & NcellEvery number checked and its operator detected
- English & नेपालीGSM-7 and Unicode, detected automatically
- Billed by the segmentThe same 160/153 · 70/67 rules the network uses
- A status for every numberFilter, break down by operator, export to Excel
Three ways to send, one account
Your team sends from the dashboard, your software sends through the API, and both draw on the same credit and show up in the same reports.
See exactly what a message costs
Type in English or Nepali. The counter uses the same rules as your bill: 160 characters per segment in English, 70 in Nepali, fewer once a message runs long.
- Encoding
- GSM-7
- English
- Characters
- 94
- 160 per segment
- Segments
- 1
- billed per number
- Room left
- 66
- in this segment
uses 500 credits
What happens after you press send
Every message goes through the same four steps, whether it came from the dashboard or your own code.
Dashboard
Send to: Class 9 parents Class 10 parents
भोलि विद्यालय बन्द रहनेछ।
or
{ "to": [...], "message": "..." }
- Step 1
You send
Write once in the dashboard, or make one request from your own system. English or Nepali, to one number or ten thousand.
Dashboard
Send to: Class 9 parents Class 10 parents
भोलि विद्यालय बन्द रहनेछ।
or
POST /api/v1/sms/send
{ "to": [...], "message": "..." } - Step 2
We check every number
Invalid numbers and duplicates are removed before anything is charged. Each number's operator is detected, and the message's real segment count is worked out.
- 9841XXXXXX NTC
- 9801XXXXXX Ncell
- 9841XXXXXXduplicate
- 12345not a mobile number
- 9862XXXXXX NTC
3 valid · 2 removed before billing · 1 segment each
- Step 3
It's routed, with failover
Messages go out through our upstream routes. If a route refuses a batch, the next one takes it automatically, so one provider's bad day isn't yours.
Route ARefusedhanded to the next route automaticallyRoute BAcceptedVerification codes also get a delivery check, and are re-sent if stuck. - Step 4
You see what happened
Every number has a status in your reports, broken down by NTC and Ncell. Your system can get webhooks, and anything that fails to send is refunded.
Report9841XXXXXXNTCSent9801XXXXXXNcellSent9862XXXXXXNTCFailed · refundedWebhook sent to your server
Send from your own code in one request
A small REST API over the same sending, billing and reporting the dashboard uses. Get a token from your account and send your first message in minutes.
- Idempotency keys: a retried request is applied once, never sent twice
- Tokens you can restrict to your server's IPs, domains and sender IDs
- HMAC-signed webhooks for your integration's events
- Every response tells you exactly how many segments were billed
curl -X POST https://api.bulletsms.com/api/v1/sms/send \
-H "Authorization: Bearer $BULLETSMS_TOKEN" \
-H "Idempotency-Key: order-4821-shipped" \
-H "Content-Type: application/json" \
-d '{
"to": ["9801234567"],
"message": "Your order #4821 has shipped.",
"senderId": "BulletSMS"
}'Response · 200
{
"success": true,
"data": {
"campaignId": "cm2x8k1q40001…",
"queued": 1,
"billedUnits": 1,
"invalidNumbers": [],
"duplicatesRemoved": 0,
"balanceRemaining": 4999
}
}Verification codes people actually receive
Login and sign-up codes go out under your approved business name, in an approved format, through a route built for codes.
- Code requestedYour system calls /otp/send with the number and the code it generated.
- Sent immediatelyCodes skip the campaign queue, so they never wait behind a bulk send.
- Checked, re-routed if stuckIf the first route hasn't delivered it, the same code goes out once more through another.
- Delivered, and you're toldThe status shows in your OTP log, and an otp.delivered webhook reaches your server.
Built for the messages Nepal actually sends
Schools, clinics, shops, banks, associations and municipalities each send something different. Here's what that looks like.
Sell SMS under your own brand
Bring your own clients, set their rates, top up their balances. Try it: this is the dashboard your clients would see.
Your brand colour
The dashboard your clients use carries your name, logo and colour instead of ours.
What changes when you switch
The same messages you send today, priced and tracked the way they should have been from the start.
Typical bulk SMS
- Billed a flat rate however long the message is
- No idea which numbers failed, or why
- Credit lost on messages that never went out
- Separate tools for contacts, templates and reports
- No way to send from your own systems
With Bullet SMS
- Billed by the real segment, exactly as the network counts it
- A status for every number, broken down by NTC and Ncell
- Anything that fails to send is refunded automatically
- Contacts, templates, campaigns and reports in one place
- A REST API with idempotency keys and signed webhooks
Pay for what you send, nothing else
No subscription, no setup fee, no feature tiers. Your per-segment rate is set for your account from the volume you expect to send.
Questions before your first send
Billing, coverage and the API: what people ask before they sign up.
Send your first SMS today
Create an account and verify your number. Once it's approved and topped up, send from the dashboard or from your own code.
