# How to Cut SMS Costs in India Without Hurting Delivery 
Author: Aniketh Jain
Author URL: https://www.fyno.io/blog/author/aniketh-jain/
Published: 2026-11-05
Meta Title: How to Cut SMS Costs in India Without Hurting Delivery
Meta Description: Cut SMS costs in India without risking delivery. Stop duplicate and multi-part sends, route by cost and performance, and pay only for delivered messages.
Tags: SMS, Cost Savings, BFSI
Tag URLs: SMS (https://www.fyno.io/blog/tag/sms/), Cost Savings (https://www.fyno.io/blog/tag/cost-savings/), BFSI (https://www.fyno.io/blog/tag/bfsi/)
URL: https://www.fyno.io/blog/reduce-sms-costs-india/

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

![A smiling banking professional sits beside a flow diagram. Messages pass through Fyno, which shows three ticked steps: duplicate removed, fits one SMS, best vendor picked. Non-critical messages then go to the customer’s phone in-app or by push. OTPs and alerts go by SMS, with a fallback only if needed.](https://prod.superblogcdn.com/site_cuid_clsli1s4n0010sbt4d6ctqt47/images/blog-cover-02-1793862472662-compressed.png)Fyno sends non-critical messages in-app or by push, keeps OTPs and alerts on SMS, and makes every SMS leaner on the way out.

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

**Encoding**

**Fits in one SMS**

**Each part of a longer message**

GSM-7 (English letters, digits, common punctuation)

160 characters

153 characters

Unicode (Indian languages, the ₹ symbol, emoji)

70 characters

67 characters

The parts limit is lower because each part carries a small header that lets the handset stitch the message back together.

![A professional at a laptop beside two versions of the same credit card rewards SMS. The original runs to about 174 characters with a full web link, so it uses two SMS credits. After passing through Fyno, the shortened version runs to about 100 characters with a short link, so it uses one credit.](https://prod.superblogcdn.com/site_cuid_clsli1s4n0010sbt4d6ctqt47/images/image-1793862801302-compressed.png)At 174 characters, this alert splits into two billable SMS. Shortened to about 100 characters with a short link, it fits in one.

### 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](https://www.fyno.io/blog/why-personalization-might-increase-your-sms-cost-cm5akdvdp000m9fflpsfavvxx).

## 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:

1. **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.

2. **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.

3. **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.

1. **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.

2. **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.

3. **Trim the payload.** Shorten variables and links and avoid Unicode where it is not needed, so that each alert stays within one SMS.

4. **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](https://www.fyno.io/blog/rbi-transaction-alert-rules-2027/) for which alerts must still go out.

5. **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.

6. **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](https://www.fyno.io/routing).

## 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](https://www.fyno.io/blog/why-opti-channel-is-the-key-to-delivering-an-exceptional-customer-experience-clsskoycr0046xv47k19ak1f2/).

**Meta's India rates, per delivered message, not including 18% GST:**

WhatsApp category

Rate (INR)

Notes

Utility and authentication

₹0.1150 list, falling to ₹0.0805

Monthly volume tiers: 6% off above 7.5 lakh messages, rising to 30% off above 10 crore

Marketing

₹0.8631

No volume tiers

Service replies in an open 24-hour window

First 1,000 free per business number per month, then the utility rate

Free-form replies only

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](https://www.fyno.io/blog/whatsapp-business-charges-bfsi-optimization/).

## 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**

**Hidden cost**

**Where it hides**

**How to find it**

Extra parts

Long or Unicode templates

Parts billed per template, compared with messages sent

Failed sends

Submission-based billing

Invoice lines with no delivered status

Duplicates

Several systems triggering the same alert

Same template, same number, same event, within minutes

Second-route messages

Fallback sent when the first message was delivered

Both routes delivered for the same event

Overbilling

Rate or volume errors on the invoice

Invoice compared with your own delivery records

SMS where a free channel would do

Statement, service and reminder messages sent by SMS to customers active in the app

Non-critical SMS volume by message type, matched against customers active in the app

Fyno keeps one [audit-ready trail](https://www.fyno.io/audit-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](https://www.fyno.io/cost-optimisation).

## 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.
## FAQs
Q: How can lenders reduce communication infrastructure costs while scaling customer notifications?
A: Lenders reduce cost while scaling by fixing the cost per delivered message before volume grows, not after. As loan books grow, alert volume grows with them, and waste grows at the same rate: duplicate triggers from the loan and CRM systems, templates that run to two parts, and sends to stale numbers. Reminders and service updates for borrowers who use the app can go in-app or by push first, which keeps SMS volume from growing in step with the loan book. Put one control layer between those systems and the SMS vendors so that every message is checked, deduplicated and routed in one place. Then add vendors for capacity without adding integrations, and let routing move volume to whichever vendor is meeting the delivery threshold at the lowest cost. The engineering cost stays flat as vendors are added, because each system integrates once with the control layer rather than with every vendor.

Q: What role does routing intelligence play in optimizing operator selection for each message?
A: SMS vendors reach Indian mobile operators through different routes, and a vendor that delivers well on one operator or circle can lag on another. Routing intelligence uses delivery outcomes to decide where each message goes, rather than relying on a fixed vendor split. In Fyno, vendor performance is evaluated per send and underperforming vendors are automatically deprioritised, within rules the bank sets. That means a vendor that is slowing down on a particular route stops receiving traffic it is failing to deliver, and the bank stops paying for messages that do not arrive. The bank keeps control: it decides the delivery thresholds, which use cases are cost-led and which are speed-led, and when a second route is allowed.

Q: How should you compare transactional SMS API providers in India on pricing, throughput and reliability?
A: Compare them on cost per delivered message, not the per-SMS rate. Ask each provider for three things. On pricing: the billing basis (submitted or delivered), how multi-part messages are counted, and which pass-through charges, such as DLT scrubbing, sit on top. On throughput: the sustained messages per second they will commit to in writing, and what happens to queued messages during peaks such as salary days. On reliability: delivery rate and delivery time by operator, measured on your traffic, not their average. Run a trial on live traffic split across providers and compare the delivery records yourself. Most banks end up with more than one provider, which makes the routing and reconciliation layer as important as the choice of vendor.

Q: We already negotiate rates with our vendors. Why would we need this?
A: A negotiated rate lowers the price of each billed SMS. It does nothing about how many SMS are billed. Duplicates, extra parts, failed sends and invoice errors are all charged at the negotiated rate, so the waste stays on the bill however good the rate is. Fyno's levers work on volume and billing, not on price: sending non-critical messages in-app or by push first takes them off the SMS bill altogether, deduplication alone recovers around 3% of SMS spend, and the first reconciliation cycle typically recovers 3 to 5%. Routing then uses the rates you have negotiated, sending each message to the cheapest vendor that is meeting the delivery threshold at that moment. Better rates and less waste add up. One does not replace the other.

Q: Does the RBI let banks send transaction alerts on WhatsApp instead of SMS?
A: No, not for most alerts. Under the RBI's 2026 amendment to its responsible business conduct directions for commercial banks, from 1 January 2027 an SMS alert is mandatory for electronic banking transactions above ₹500, and an email alert is mandatory for all electronic transactions where the customer has an email address on file. Push, in-app and instant messaging, which includes WhatsApp, are recognised as additional alert channels. They can be sent alongside SMS and email, but they do not replace them. For transactions of ₹500 or less, whether to send an SMS is the bank's decision, and the bank cannot charge the customer for it. Read the full breakdown in Fyno's guide to the RBI transaction alert rules.

Q: Do TRAI's new SMS template rules affect messaging costs?
A: Yes, indirectly. Under TRAI's November 2025 direction, every variable in a new DLT content template must be pre-tagged with its type and purpose, for example {#numeric#} for amounts and OTPs, {#url#} for links and {#cbn#} for callback numbers, and only whitelisted links and numbers can be used. Templates registered before mid-January 2026 have to be updated within the timeline operators set. After enforcement, messages that fail validation are rejected and not delivered. A rejected OTP or alert usually triggers a resend, which is a second cost and a delay for the customer. Tagged variables also make template length more predictable, which helps keep alerts within one SMS. Audit templates now so that rejections do not show up first in delivery reports.

Q: How do Meta's WhatsApp volume tiers work for utility and authentication messages in India?
A: Meta prices utility and authentication messages in India on a monthly volume ladder. The list rate is ₹0.1150 per delivered message up to 7.5 lakh messages a month. The rate then steps down to ₹0.1081 up to 1.5 crore, ₹0.1012 up to 2 crore, ₹0.0943 up to 5 crore, ₹0.0874 up to 10 crore and ₹0.0805 above 10 crore, which is 30% below list. Marketing messages are ₹0.8631 with no tiers. All rates exclude 18% GST, and a business solution provider may add its own fee. For a bank, the tiers lower the cost of WhatsApp as a second route, but they do not change the rule that SMS stays the primary route for transaction alerts and OTPs.




---
This blog is powered by Superblog. Visit https://superblog.ai to know more.
---

