Skip to content
NishchitDOCS

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.

PartValueNote
Country code+880Bangladesh
Mobile prefix1All mobile numbers
Operator digit39Assigned per operator, and portable
Subscribereight digits
+8801712345678      valid
01712345678         valid input — normalised to +8801712345678
+8801212345678      rejected — operator digit 2 is not assigned
+919812345678       rejected — unsupported_country

Nishchit 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.

FieldWhat it describesKnowable?
statusWhat Nishchit did with your messageAlways
delivery_statusWhat the mobile network reported backOnly 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.

EncodingSingle segmentPer segment once concatenated
GSM-7160 characters153 characters
UCS-270 characters67 characters

The same notification, in both languages, through the engine that actually bills:

MESSAGEENCODINGCHARSPER SEGSEGMENTSCREDITSCOST
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-7142160110.35
BANGLA · UCS-2
হ্যালো করিম, আপনার নিশ্চিত অর্ডার ৮৮৪১ পাঠানো হয়েছে এবং আগামীকাল পৌঁছাবে। ট্র্যাক করুন nishchit.tech/o/8841 অথবা আপডেট বন্ধ করতে STOP লিখে পাঠান।
UCS-214667331.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 typeAvailable in V1What it looks like
Nishchit-managed numericYes, immediatelyA numeric short identifier
Nishchit-managed maskingYes, with a Bengali bodyAn alphanumeric brand name
Customer-owned sender IDNot 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

Ready to send one?

Signup is self-serve and a test key never touches a carrier or a credit.

NISHCHIT / SMS INFRASTRUCTURE · BANGLADESH/LLMS.TXTPRICINGSTATUSTERMSPRIVACY