Sending SMS to Bangladesh
The constraints that decide whether a Bangladesh SMS integration works — the number format, sender identity, delivery receipts, encoding and content rules — stated plainly, including the ones most providers leave out.
Bangladesh is not a difficult SMS market. It is an under-documented one. The constraints are stable and knowable, but they are spread across operator policy, aggregator convention and things people only discover in production — so most integrations here are written twice.
This page is the short version of everything that will affect your code.
The five-line answer
Recipients must be +8801 followed by a digit in the range 3–9 and then eight more digits.
Bangla text encodes as UCS-2, so a segment holds 70 characters instead of 160 and costs roughly
three times as much. The primary Bangladesh route returns no delivery receipts at all, so
delivery cannot be confirmed on it. Alphanumeric sender IDs require operator pre-registration;
Nishchit gives you a managed sender so you can send today. Two-way SMS is not available.
What is the phone number format for Bangladesh?
Every Bangladeshi mobile number is +880, then an operator digit, then eight digits — fifteen
characters including the +. Nishchit validates against +8801[3-9] and eight digits, and
rejects anything else at validation rather than letting a carrier discard it silently.
| Part | Value | Note |
|---|---|---|
| Country code | +880 | Bangladesh |
| Mobile prefix | 1 | All mobile numbers |
| Operator digit | 3–9 | Assigned per operator, and portable |
| Subscriber | eight digits |
+8801712345678 valid
01712345678 valid input — normalised to +8801712345678
+8801212345678 rejected — operator digit 2 is not assigned
+919812345678 rejected — unsupported_countryNishchit normalises the common local forms (01712345678, 8801712345678) to E.164 before
validating, so you do not have to. A number outside Bangladesh fails with
unsupported_country; a malformed Bangladeshi number fails
with invalid_recipient.
The operator digit does not tell you the operator
Bangladesh has mobile number portability. The prefix says which operator issued the number, not which one carries it today. Routing decisions made from the prefix will be wrong for ported subscribers, so do not build any.
Can I confirm that a message was delivered?
On the primary Bangladesh route, no. That route returns no delivery receipts, so messages sent over it terminate at sent with unknown and stay there permanently. This is the single most important fact on this page, and it is the one most commonly left unsaid.
Nishchit keeps two independent fields rather than collapsing them into one, because collapsing them is what forces a messaging product to invent a delivery confirmation it never received.
| Field | What it describes | Knowable? |
|---|---|---|
status | What Nishchit did with your message | Always |
delivery_status | What the mobile network reported back | Only where the route reports it |
A message that reads status: "sent", delivery_status: "unknown" has not failed. It means
Nishchit handed it to the carrier successfully and the network never said what happened next.
If your interface renders unknown as a failure — or as a success — it will be wrong for most
of your traffic.
Design your UI for this before you launch
Do not build a delivery-confirmation screen, a retry-on-undelivered loop, or a customer-facing
"delivered" tick on top of delivery_status unless you have confirmed your route reports it.
Delivery status covers the full model, including which values are
terminal.
Why does Bangla text cost about three times as much?
Because SMS is billed per segment, and an SMS carries a fixed 140 bytes of user data. GSM-7 packs seven bits per character into those 140 bytes, giving 160 characters. Bangla has no representation in the GSM 03.38 alphabet, so a single Bangla character forces the entire body into UCS-2 at sixteen bits per character — 70 characters per segment.
| Encoding | Single segment | Per segment once concatenated |
|---|---|---|
| GSM-7 | 160 characters | 153 characters |
| UCS-2 | 70 characters | 67 characters |
The same notification, in both languages, through the engine that actually bills:
| MESSAGE | ENCODING | CHARS | PER SEG | SEGMENTS | CREDITS | COST |
|---|---|---|---|---|---|---|
ENGLISH · GSM-7 Hi Karim, your Nishchit order 8841 has shipped and will arrive tomorrow. Track it at nishchit.tech/o/8841 or reply STOP to opt out of updates. | GSM-7 | 142 | 160 | 1 | 1 | ৳ 0.35 |
BANGLA · UCS-2 হ্যালো করিম, আপনার নিশ্চিত অর্ডার ৮৮৪১ পাঠানো হয়েছে এবং আগামীকাল পৌঁছাবে। ট্র্যাক করুন nishchit.tech/o/8841 অথবা আপডেট বন্ধ করতে STOP লিখে পাঠান। | UCS-2 | 146 | 67 | 3 | 3 | ৳ 1.05 |
Almost identical length. One segment against three. This is not a Nishchit surcharge and no provider can avoid it — it is how the GSM standard has counted characters since 1985. What varies between providers is whether they tell you. Bangla SMS works through the full encoding rules, and you can measure any body yourself with the segment calculator.
It is not only Bangla
An emoji, a curly apostrophe pasted from a word processor, or an en dash will each switch a fully English message to UCS-2 and cut its capacity from 160 characters to 70. This is a common source of a bill that doubles without the copy visibly changing.
Do I need a registered sender ID?
For an alphanumeric (masking) sender on the major networks, yes — and it takes weeks.
Twilio's published Bangladesh SMS guidelines, checked 11 September 2026, state that sender ID registration is required for Grameenphone, Robi/Axiata and Teletalk; that international pre-registration takes approximately three weeks; and that messages carrying unregistered sender IDs to those three networks have been blocked since 8 September 2025. The same page records that two-way SMS is not supported in Bangladesh, and that long codes and short codes are not supported on the major networks.
Nishchit's answer to this in V1 is a managed shared sender. You are not required to register anything, submit a trade licence, or wait three weeks before your first message — you send on a Nishchit-managed numeric sender from signup. Customer-owned sender IDs are on the roadmap and are not available yet, which is a real limitation and is stated here rather than discovered later.
| Sender type | Available in V1 | What it looks like |
|---|---|---|
| Nishchit-managed numeric | Yes, immediately | A numeric short identifier |
| Nishchit-managed masking | Yes, with a Bengali body | An alphanumeric brand name |
| Customer-owned sender ID | Not yet | — |
A masking sender requires a Bengali body
On the masking route a non-Bengali body is refused upstream. Nishchit detects this before
sending and tells you with invalid_sender instead of passing
back an opaque carrier error — but the constraint is real and it is not ours to waive. If your
body is English, use a numeric sender.
What content is not allowed?
Nishchit runs no KYC. Signup is self-serve and live access is immediate, which only works because every message is inspected before it reaches a carrier. Content Guard classifies each body as OTP, transactional, promotional or unknown, applies the published policy, and logs the verdict with the rule-set version that produced it.
That trade is deliberate: you are not blocked for three weeks by a document review, and in exchange the rules are enforced per message. They are published in full at content policy — read them before you hit one. A blocked message is rejected before the carrier and costs no credits.
New projects also start on a low-volume trust tier with a daily ceiling that is independent of your credit balance, and it lifts automatically. See rate limits.
What does it cost?
One credit buys one SMS segment, at a flat ৳0.35. No monthly minimum, no per-seat charge, no setup fee, no sender-ID registration fee, and credits do not expire. Test-mode traffic is never billed, and a message blocked by content policy is never billed.
The number that matters is not the per-SMS rate — it is the segment count, which is why the Bangla question above decides most invoices. Full rate card and a calculator on pricing.
Topping up is not self-serve yet
Payments are not automated in V1. Credits are added by the Nishchit team against a reference while the payment integration is built. Ask for a top-up.
What you cannot do in Bangladesh
Stated together, because every one of these has cost somebody a sprint:
- Receive replies. Two-way SMS is not available. Do not design a STOP-handling loop that depends on inbound messages reaching you — carry opt-out through your own channels.
- Confirm delivery on the primary route. No receipts are returned. See above.
- Send to a non-Bangladeshi number. Nishchit is BD-only and will reject it at validation.
- Use your own brand name as a sender today. Managed senders only in V1.
- Fit a useful Bangla message into one segment. 70 characters is roughly eight to ten Bangla words.
Still choosing a provider
Every constraint on this page is a property of the Bangladesh market rather than of any one vendor, so it will hold whoever you pick. Choosing an SMS API in Bangladesh compares the three kinds of provider and gives you seven questions to put to any of them — including Nishchit.
Start here
Quickstart
Send your first SMS in under five minutes, in test mode, without spending a credit.
Delivery status
The full two-field model, and which routes report delivery.
Bangla SMS
UCS-2, the 70-character segment, and the masking rule in full.
Content policy
What Content Guard blocks and flags, published before you hit a rule.
Glossary
DLR, A2P, masking, MNP dipping and the rest of the vocabulary these docs avoid.
Test mode
Magic numbers that produce deterministic outcomes — including failures and gateway outages — without reaching a carrier or spending a credit.
Bangla SMS
Why Bangla text costs about three times what English costs, how UCS-2 and the 70-character segment work, and the rule that a masking sender requires a Bengali body.