For banks, NBFCs and insurers that send millions of messages a month and must keep OTPs and mandatory alerts on SMS.
Most of what Indian banks overspend on SMS is waste, not the price of the channel. Non-critical messages sent by SMS to customers who are active in the app, duplicate sends, alerts that split into two or three billable parts, messages to numbers that cannot receive them, and invoices paid on submission rather than delivery all cost money. Removing them cuts the bill while every OTP and mandatory alert stays on SMS.
Fyno does this from a control layer between the bank's systems and its SMS vendors. It checks each message before it leaves: duplicates removed, CRM and core systems are blocked, variables and links are trimmed so that the message stays within one SMS, and invalid numbers are stopped. Non-critical messages go in-app or by push first, at no per-message cost, with SMS only if the customer cannot be reached there. It then routes each communication through the cheapest vendor that meets the bank's delivery threshold and reconciles every vendor invoice against its own audit trail.
TL;DR
Seven questions, in the order a cost review usually runs: how SMS is counted and billed, where the savings are, and how to prove them on the invoice.
What counts as 1 SMS in India? Why one rupee symbol can double the cost of an alert.
Do you pay even if an SMS is not delivered? What most Indian SMS contracts actually bill for.
What strategies can reduce total messaging spend by 20–30% without hurting quality? The levers, in order, with what each one typically recovers.
What role does intelligent routing play in minimizing messaging costs for large enterprises? Why a fixed vendor split overpays.
When should a bank add WhatsApp as a second route to SMS? The RBI rule, Meta's India rates and the two WhatsApp cost traps.
How can enterprises accurately measure the true cost of their customer communications? The one metric that exposes hidden SMS cost.
What kind of billing transparency should enterprises expect from messaging vendors? A checklist to take into the next vendor review.
What counts as 1 SMS in India?
One SMS is one segment: up to 160 characters in the standard GSM-7 character set, or 70 characters if the message contains any Unicode character, such as a regional-language word or the ₹ symbol. Longer messages split into parts of 153 or 67 characters, and each part is billed as one SMS.
The parts limit is lower because each part carries a small header that lets the handset stitch the message back together.
Two things push bank alerts over the line without anyone noticing:
Long variables. A merchant name, a full account descriptor or a long tracking link can take a 150-character alert to 170 characters, which is two SMS.
One Unicode character. A single ₹ symbol switches the whole message to Unicode. A 100-character alert that would fit in one GSM-7 SMS becomes two Unicode parts. Writing "Rs." or "INR" keeps it in one.
Across crores of alerts a month, a few extra characters per template can add a second billable part to a large share of traffic. Template length is a cost decision, not only a copy decision. See also why personalisation can increase your SMS cost.
Do you pay even if an SMS is not delivered?
Usually, yes. Most bulk SMS contracts in India bill on submission: the vendor charges when it accepts the message, whether or not it reaches the handset. Messages to invalid, inactive or unreachable numbers, and messages that fail at the operator, still appear on the invoice unless the contract says otherwise.
Vendors return delivery receipts, so the data to check this exists. What is usually missing is the step that matches those receipts to the invoice, line by line, across every vendor. Three checks close the gap:
Read the billing basis in each contract. Know whether you pay per submitted message or per delivered message, and what happens to messages with no delivery report.
Stop inactive numbers before the send. A number that has failed repeatedly will most likely fail again. Fyno blocks invalid numbers before the message leaves, so that the bank does not pay to find out.
Reconcile every invoice against your own delivery records. In Fyno's experience, most enterprises recover 3 to 5% of their messaging spend in the first reconciliation cycle.
What strategies can reduce total messaging spend by 20–30% without hurting quality?
Combine two kinds of lever. Send non-critical messages in-app or by push first, so that SMS carries only what needs it. Then remove waste from the SMS that remains: duplicates, multi-part sends, sends that should not happen, the wrong vendor and undelivered messages that still get billed. Fyno sees 15 to 25% across production deployments.
The order matters. Moving non-critical traffic to free channels is often the biggest single lever, so it comes first. Waste comes out of the remaining SMS next, because removing it costs nothing in delivery. Routing and reconciliation follow.
Send non-critical messages in-app or by push first. Statement-ready notices, service updates, reminders and offers do not have to start on SMS. For customers active in the bank's app, in-app and push cost nothing per message, and SMS or WhatsApp fires only if the customer cannot be reached there. OTPs and mandatory alerts are not part of this lever.
Deduplicate across systems. Loan, CRM and core systems often trigger the same alert for the same event. Fyno blocks duplicates before they leave, which recovers around 3% of SMS spend.
Trim the payload. Shorten variables and links and avoid Unicode where it is not needed, so that each alert stays within one SMS.
Enforce consent at send time. Messages to customers who have withdrawn consent are paid for and breach TRAI's TCCCPR rules. Checking consent at the moment of send stops both. See Fyno's guide to the RBI transaction alert rules for which alerts must still go out.
Route by cost within a delivery threshold. Send each message to the cheapest vendor that is currently meeting the bank's delivery target, not to whichever vendor holds the biggest share of the contract.
Bill on delivery and reconcile. Match every invoice line to a delivery record and dispute the gaps with evidence.
None of these levers change which channel carries an OTP or a mandatory alert. Quality holds because each one either moves a non-critical message to a channel the customer already uses, or removes a message that should not have been paid for.
What role does intelligent routing play in minimizing messaging costs for large enterprises?
Intelligent routing chooses a vendor for every message, not once a year in a contract. Fyno evaluates vendor performance per send and automatically deprioritises underperforming vendors, inside rules the bank configures. Traffic goes to the cheapest vendor that meets the delivery threshold, so that cost falls without the delivery rate falling with it.
Most large banks run two to four SMS vendors on a fixed split agreed at procurement. A fixed split overpays in two ways. When the cheaper vendor is performing well, traffic still goes to the costlier one because the split says so. When the cheaper vendor degrades on one operator or circle, the split keeps sending traffic into the failure, and the bank pays for messages that do not arrive.
Per-send routing removes both. The bank's team sets the rules, for example a tighter delivery threshold for OTPs than for statement alerts, and Fyno applies them to every message. Fyno earns nothing on delivery volume, so routing has no reason to favour one vendor over another. More on how Fyno's intelligent routing works.
When should a bank add WhatsApp as a second route to SMS?
Only where delivery data shows SMS falling short for a customer segment, operator or vendor. WhatsApp does not replace SMS for these messages. Under the RBI's alert directions, from 1 January 2027 transaction alerts above ₹500 must go by SMS, and WhatsApp can only be added on top. A second message is a second cost.
So the question is not which channel is cheaper. It is where a second route earns its cost. For non-critical messages, in-app and push come before either, because they cost nothing per message. Fyno's delivery analytics show where SMS is underperforming, and the bank's routing rules decide when the WhatsApp route is used. How Fyno decides which channel goes first is covered in what opti-channel communication is.
Meta's India rates, per delivered message, not including 18% GST:
Two WhatsApp cost traps matter more than the rate itself:
Category. A utility template that Meta reclassifies as marketing costs 7.5 times more. Template wording that drifts into offers or cross-sell is the usual cause.
The service window is no longer free for alerts. Since 1 October 2026, Meta bills utility templates sent inside an open customer service window at the utility rate. Bank alerts are templates, so an open window no longer makes them free.
Low-value alerts are one place where a second route clearly helps. For transactions of ₹500 or less, the RBI leaves the SMS to the bank's discretion and allows push, in-app or WhatsApp alongside the mandatory email. In practice most banks will keep sending the SMS as well, so the extra route is unlikely to lower the SMS bill. What it improves is delivery: a better chance that the customer sees the alert in time.
More on WhatsApp Business charges for BFSI.
How can enterprises accurately measure the true cost of their customer communications?
Measure cost per delivered message, by use case, across every vendor and channel, instead of the rate-card price per submitted message. The true cost includes failed sends, extra parts, duplicates, DLT scrubbing charges, second-route messages, SMS sent where a free in-app or push message would have reached the customer, and vendor overbilling. Without one delivery record across vendors, these never appear on a single report.
The working formula for any use case, for example OTPs:
Cost per delivered OTP = all charges for OTP traffic, across vendors and channels ÷ OTPs delivered
Fyno keeps one audit-ready trail of every message across vendors and channels, which is the record this calculation needs.
What kind of billing transparency should enterprises expect from messaging vendors?
Line-item billing that can be matched to delivery records: message ID, timestamp, template, parts billed, delivery status and rate applied, for every message. A bank should be able to reconcile each invoice on its own, dispute mismatches with evidence, and see what a send will cost before it goes out, not a month later.
A checklist for the next vendor review:
Is billing per submitted or per delivered message, and how are messages with no delivery report treated?
Does every invoice line carry a message ID that matches your own records?
Are parts billed shown per message?
Are DLT scrubbing and other pass-through charges shown separately?
Can delivery data be exported in full, without a support ticket?
Fyno reconciles vendor invoices against its delivery records in real time, flags anomalies across vendors, and attaches dispute-ready data. Its overbilling detection runs continuously, not only at month-end. See Fyno's cost optimisation for BFSI.
Summary
Most SMS overspend in Indian BFSI is waste and billing, not the channel.
Template length is a cost decision. One ₹ symbol or a long variable can turn one SMS into two.
Most Indian SMS contracts bill on submission, so failed sends are paid for unless invoices are reconciled.
In-app and push first for non-critical messages, then deduplication, payload trimming, consent at send time, per-send routing and reconciliation on the SMS that remains: together, 15 to 25% in Fyno's production deployments.
WhatsApp is a second route, not a replacement. Add it only where delivery data shows SMS falling short.
Track cost per delivered message by use case, across every vendor and channel.