The message that
cannot be late.
A one-time passcode is the highest-stakes message most products send. Late and the user retries; wrong and the user is locked out. Nishchit sends it over one REST call, in one segment, in either language.
curl https://api.nishchit.tech/v1/messages \
-X POST \
-H "Authorization: Bearer $NISHCHIT_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: signup-otp-user-9281" \
-d '{
"to": "+8801712345678",
"body": "Your Nishchit OTP is 482913",
"reference": "user_9281"
}'Four requirements,
and none of them is speed.
Speed is the one everybody optimises and the one nobody controls — it belongs to the network. These are the four you can actually decide.
It has to be one segment
A passcode that costs three credits is a passcode written badly. Both an English and a Bangla passcode fit in one segment if you keep the body to the code and the brand — the comparison below is measured, not asserted.
How segments are counted →It has to be exercised before launch
Passcode flows fail in the branches nobody tests: the gateway outage, the terminal failure, the rate limit. Test mode has magic recipient numbers that produce each of those deterministically, without reaching a carrier or spending a credit.
Magic numbers →It has to survive a retry
A user double-tapping Resend, a queue redelivering, a load balancer retrying — each can send a second passcode at a second charge. An idempotency key keyed to the attempt makes the duplicate a no-op that returns the original response.
Idempotency semantics →It has to be rate limited by someone
Passcode endpoints are the most abused surface in any product. New projects start on a low-volume trust tier with a daily ceiling independent of the credit balance, so a leaked key cannot drain an account overnight.
Trust tiers and ceilings →A passcode is short
enough to stay cheap.
Bangla costs roughly three times what English costs per unit of message — but a passcode is short enough that the difference never appears. Both of these are one segment.
Your Nishchit OTP is 482913
- CHARACTERS
- 27
- PER SEGMENT
- 160
- SEGMENTS
- 1
- CREDITS
- 1
আপনার নিশ্চিত ওটিপি ৪৮২৯১৩
- CHARACTERS
- 26
- PER SEGMENT
- 70
- SEGMENTS
- 1
- CREDITS
- 1
What pushes a passcode over one segment is everything you add around the code: a long expiry sentence, a support number, a link, or a typographic apostrophe pasted from a word processor — that last one alone switches an English body to UCS-2 and cuts its capacity from 160 characters to 70. Measure your own body
Designing a passcode flow
you cannot observe.
The primary Bangladesh route returns no delivery receipts. Most providers do not mention this. It changes how a passcode screen should be built, so here is how.
You will never receive a signal saying the passcode arrived, so a screen that waits for one waits forever. Build for the absence instead:
- Treat status: "sent" as the success condition for your UI. It means the carrier accepted the handoff, which is the last thing anyone can actually observe.
- Show a resend countdown from the moment you send, not from a delivery event that will not come. Thirty to sixty seconds is enough to stop double-sends without stranding a user on a slow network.
- Never render delivery_status: unknown as a failure. It is the normal terminal state for most Bangladeshi traffic, and a red cross against it will generate support tickets for messages that arrived fine.
- Key the resend to the same idempotency key as the first attempt if it is genuinely the same attempt, and to a new one if the user is asking for a fresh code. The difference is whether you want a duplicate suppressed or a second message sent.
Passcode questions,
answered plainly.
Is there a separate OTP endpoint or a verify API?
Can I confirm the passcode was delivered?
Does a Bangla passcode cost more than an English one?
Will Nishchit rewrite my passcode body?
Do I need a registered sender ID to send passcodes?
Your product has something to say.
Give it a reliable way to say it.
Self-serve signup, live immediately. Content checked instead of paperwork.
One credit per segment at ৳0.35. No contract, no minimum.
An nk_test_ key never reaches a carrier or spends a credit.
One country, done properly — Bangla pricing, observable delivery.