> ## Documentation Index
> Fetch the complete documentation index at: https://www.vobiz.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Bank SMS Format: OTP and DLT SMS Templates for India

> Bank SMS format samples, OTP messages and DLT-ready SMS templates for Indian businesses, with TRAI variable tags, RBI alert fields and approval checks.

*November 3, 2026 · By [Piyush Sahoo](https://www.linkedin.com/in/piyush-s713/)*

A bank SMS format in India puts the bank's name in fixed text, then fills labelled blanks for the amount, masked account, date and time, channel, and beneficiary. It also gives a number to text if the customer objects. You must register the wording on DLT before you send it.

This guide gives you 30 original samples for banks, OTPs, orders, services and offers. It also shows how to pick the right category, tag each blank, and avoid the checks that stop a message.

> [!NOTE]
>
> **Key takeaways**
>
> * **The category comes first.** One line of promotion turns a bank alert or OTP into a [promotional message under TRAI's rules](https://trai.gov.in/sites/default/files/2025-02/Regulation_12022025.pdf).
> * **Every blank now needs a label.** TRAI's [November 2025 direction](https://trai.gov.in/sites/default/files/2025-11/Directions_18112025_0.PDF) replaced generic blanks with tags such as #number#, #url# and #cbn#.
> * **Banks face a new alert list.** [RBI's June 2026 directions](https://rbi.org.in/Scripts/NotificationUser.aspx?Id=13543\&Mode=0) set out what instant alerts must contain from 1 January 2027.
> * **Plan for three variables.** More than three needs a written justification, so fix what you can in the wording.
> * **Avoid the rupee sign in English messages.** It is [outside the GSM-7 character set](https://en.wikipedia.org/wiki/GSM_03.38), so it cuts one segment from 160 characters to 70.

## What does DLT mean for your message wording?

India's telecom operators run a shared registry called Distributed Ledger Technology (DLT). You register your business there, along with your sender name and each message's wording. [Vobiz's India DLT guide](https://www.vobiz.ai/docs/sms/compliance/india-dlt.md) explains the three IDs you receive.

A registered message has two parts. The fixed text stays identical on every send, and the variables are the blanks you fill per customer. Operators reject a message when its text doesn't match a template registered under that sender name.

This changes how you write. A library of nice-sounding messages isn't enough, because you can't improvise after approval. You design each message around what will change, what must stay, and which category it belongs to.

If you're a customer looking for the keyword to text your bank for a balance, those commands differ by bank. Your bank's website or branch can give you its list.

## Which category does your message belong to?

Choose the category before you write a word. TRAI's [2025 regulation](https://trai.gov.in/sites/default/files/2025-02/Regulation_12022025.pdf) defines each one, and the operator adds the matching [-P, -S, -T or -G suffix](https://www.medianama.com/2025/05/223-suffixes-commercial-sms-headers-spam/) to the sender name your customer sees.

![Decision map with three questions. If a message contains any offer it is promotional with suffix -P. If not, and the customer just started a transaction with the message sent within 30 minutes, it is transactional with suffix -T. If not, and it informs an existing customer about something they already have, it is service with suffix -S. Otherwise you need explicit consent and a compliance check.](https://mintcdn.com/vobizai/Gqjw4qC2csbNZrm6/images/blog/sms-templates-for-businesses-india/category-map-light.svg?fit=max\&auto=format\&n=Gqjw4qC2csbNZrm6\&q=85\&s=87c85a17aa6b1380887ca7b2c8bdfbbd)

The same bank can send all three in one week:

| Message | Category | Why |
| - | - | - |
| OTP for a payment the customer just started | Transactional | The customer started it, and it arrives within 30 minutes |
| Debit alert after a payment | Transactional | TRAI names transaction alerts and confirmations |
| EMI due next week | Service | TRAI treats [EMI reminders as service messages](https://trai.gov.in/sites/default/files/2025-02/Regulation_12022025.pdf) based on inferred consent |
| Monthly balance update | Service | TRAI names periodic balance alerts |
| Debit alert with "Get a personal loan today" at the end | Promotional | Mixed content counts as promotional |
| Pre-approved credit card offer | Promotional | It advertises a product |

Getting this wrong now costs more. TRAI's [Third Amendment of September 2026](https://www.trai.gov.in/sites/default/files/2026-09/Regulation_18092026.pdf) blacklists a template when a complaint arises from registration in the wrong category. Five such blacklisted templates in 90 days suspend the sender for at least a month. That provision starts 90 days after gazette publication, so no earlier than mid-December 2026.

One older label may also catch you out. TRAI's regulation describes service messages sent with explicit consent, limited to seven days, so check how your portal shows any template labelled "service explicit".

## What a bank SMS format needs from 2027

RBI's [Third Amendment Directions for commercial banks](https://rbi.org.in/Scripts/NotificationUser.aspx?Id=13543\&Mode=0), dated 24 June 2026, apply to transactions from 1 January 2027. Banks must send instant SMS alerts for electronic transactions above ₹500. Smaller transactions are left to the bank's policy, without charge to the customer.

The directions also list what an alert should carry: the card or account number, amount, date, time, channel, and beneficiary or point of transaction. The alert must include a number the customer can text straight away to object. Banks must also tell customers to report fraud to the bank, and to lodge a complaint on the 1930 helpline or the National Cyber Crime Reporting Portal.

![A filled bank debit alert split into chips. Fixed text reads Acme Bank Rs, debited from A/c, on, via, to, and Not you? SMS BLOCK to. Six orange variables are amount, masked account, date and time, channel, beneficiary, and reply number. A note says six variables needs a written justification, while one template per channel and a fixed reply number brings it down to four.](https://mintcdn.com/vobizai/Gqjw4qC2csbNZrm6/images/blog/sms-templates-for-businesses-india/bank-alert-anatomy-light.svg?fit=max\&auto=format\&n=Gqjw4qC2csbNZrm6\&q=85\&s=7957c865335fc32b4aa04b10176fb4fb)

Here is the catch. RBI's list runs to about six details, and TRAI's rules allow [more than three variables only in special circumstances](https://trai.gov.in/sites/default/files/2025-02/Regulation_12022025.pdf). A request needs reasons and a sample message, and a separate authority at the operator records the justification.

You have three ways to keep the count down:

* **Fix the channel.** Register one template each for UPI, cards, ATM and net banking.
* **Fix the reply number.** Your objection number rarely changes, so it can sit in the fixed text.
* **Join date and time.** One blank can hold both, within the length limit.

Six blanks can still be the right answer for a bank. Ask your DLT portal what it needs before you commit to a design.

### Bank SMS format samples

These samples use a fictional Acme Bank. Each one is a starting point, not pre-approved wording. Only a licensed bank, or a vendor acting for one, should register them, since imitating a bank is a stated reason for rejection.

| Use | Sample template | Category |
| - | - | - |
| UPI debit | Acme Bank: Rs #alphanumeric# debited from A/c #alphanumeric# on #alphanumeric# via UPI to #alphanumeric#. Not you? SMS BLOCK to #cbn#. | Transactional |
| Card spend | Acme Bank: Card #alphanumeric# used for Rs #alphanumeric# at #alphanumeric# on #alphanumeric#. Not you? SMS BLOCK to #cbn#. | Transactional |
| ATM cash | Acme Bank: Rs #alphanumeric# withdrawn at ATM #alphanumeric# with card #alphanumeric# on #alphanumeric#. Not you? SMS BLOCK to #cbn#. | Transactional |
| Money received | Acme Bank: Rs #alphanumeric# credited to A/c #alphanumeric# on #alphanumeric#. See details in the Acme app. | Service |
| Failed payment | Acme Bank: Your payment of Rs #alphanumeric# to #alphanumeric# did not go through. Need help? Call #cbn#. | Transactional |
| Monthly balance | Acme Bank: Balance in A/c #alphanumeric# is Rs #alphanumeric# as on #alphanumeric#. See more in the Acme app. | Service |
| EMI reminder | Acme Bank: EMI of Rs #alphanumeric# on loan #alphanumeric# is due on #alphanumeric#. Keep funds ready in your account. | Service |
| Statement ready | Acme Bank: Your statement for #alphanumeric# is ready. View it securely at #url#. | Service |
| New device login | Acme Bank: A new device signed in to your account on #alphanumeric#. Not you? Call #cbn# right away. | Service |

The first three rows carry five variables on purpose, to fit RBI's list, so expect to justify them. Writing the reply number as fixed text brings each one down to four. Filled in, the first sample reads like this, with a masked reply number:

> Acme Bank: Rs 1,250.00 debited from A/c XX1234 on 03-Nov 14:22 via UPI to ABC Stores. Not you? SMS BLOCK to 1XXXXXXXXX.

## OTP message samples you can adapt

TRAI's definition of a transactional message [names OTPs from banks, e-commerce and app logins](https://trai.gov.in/sites/default/files/2025-02/Regulation_12022025.pdf). RBI's [2025 authentication directions](https://www.rbi.org.in/Scripts/NotificationUser.aspx?Id=12898) require two factors for digital payments, and RBI said that framework [doesn't call for ending SMS OTP](https://www.rbi.org.in/Scripts/BS_PressReleaseDisplay.aspx?prid=61282). So OTP templates stay relevant, alongside other factors your security team may add.

A sound OTP message does five jobs: it names the brand, gives the code, says what it's for, states when it expires, and warns against sharing. Your security team should set the expiry, so treat the times below as placeholders.

| Use | Sample template |
| - | - |
| App login | #number# is your Acme login OTP. It expires in 10 minutes. Keep it private, even from Acme staff. |
| Mobile number check | Use #number# to confirm your mobile number on Acme. Valid for 10 minutes. Acme will never call you to ask for it. |
| Password reset | #number# is your Acme password reset code, valid for 10 minutes. Did not ask for this? Change your password now. |
| Card or net banking payment | #number# is your Acme Bank OTP for Rs #alphanumeric# at #alphanumeric#. Valid for 5 minutes. Never share it with anyone. |
| Delivery handover | Share #number# with your Acme delivery partner only after you receive order #alphanumeric#. |
| Hindi login | #number# आपका Acme OTP है। 10 मिनट तक मान्य। किसी को न बताएं। |

Filled in, a login message looks like this:

> 482913 is your Acme login OTP. It expires in 10 minutes. Keep it private, even from Acme staff.

Naming the amount and merchant on a payment OTP helps a customer notice a payment they didn't start. Keep links out of OTP messages, because a customer has no reason to tap anything to read a code.

## Order, service and reminder templates

These suit teams outside banking. Note the split between a confirmation, which follows a customer's action, and a later update.

| Use | Sample template | Category |
| - | - | - |
| Order confirmed | Acme: Order #alphanumeric# is confirmed for Rs #alphanumeric#. Track it here: #url# | Transactional |
| Refund started | Acme: Refund of Rs #alphanumeric# for order #alphanumeric# has started. It should arrive within #number# working days. | Transactional |
| Shipped | Acme: Order #alphanumeric# has shipped and should reach you by #alphanumeric#. Track it here: #url# | Service |
| Out for delivery | Acme: Order #alphanumeric# is out for delivery today. Need help? Call #cbn#. | Service |
| Appointment | Acme Clinic: Your appointment is on #alphanumeric# at #alphanumeric#. To change it, call #cbn#. | Service |
| Invoice due | Acme: Invoice #alphanumeric# is due on #alphanumeric#. View and pay at #url# | Service |
| Support ticket | Acme Support: Ticket #alphanumeric# is now #alphanumeric#. Need help? Call #cbn#. | Service |
| Policy renewal | Acme Insurance: Policy #alphanumeric# is due for renewal on #alphanumeric#. See details at #url# | Service |
| Hindi delivery | Acme: ऑर्डर #alphanumeric# आज पहुंचेगा। मदद: #cbn# | Service |

Adding "and save 10% on your next order" to any of these moves it to promotional. Send that offer as its own message.

## Promotional templates that stay on the right side of consent

Promotional messages reach only people who haven't blocked that category, unless you hold explicit digital consent. TRAI's [2025 regulation](https://trai.gov.in/sites/default/files/2025-02/Regulation_12022025.pdf) also requires an opt-out in the same message, in the manner the regulator specifies. Check the exact mechanism with your DLT portal, since the samples below simply show one link.

| Use | Sample template |
| - | - |
| Seasonal sale | Acme: End-of-season sale, up to #number#% off. Shop at #url#. Opt out: #url# |
| Abandoned cart | Acme: Your cart is saved and ready when you are. Finish your order at #url#. Opt out: #url# |
| Festive offer | Acme wishes you a happy Diwali. Use code #alphanumeric# for festive savings at #url#. Opt out: #url# |
| Plan upgrade | Acme: Move to our annual plan by #alphanumeric# for extra free months. See how at #url#. Opt out: #url# |
| New launch | Acme: Our new savings account is here, with no paperwork at the branch. Learn more at #url#. Opt out: #url# |
| Win-back | Acme: We have not seen you in a while. Use code #alphanumeric# for Rs #number# off. Opt out: #url# |

Someone who asks about your product can also receive messages for a limited time. TRAI's [press note on the Third Amendment](https://www.trai.gov.in/sites/default/files/2026-09/PR_No119of2026.pdf) allows this for seven days from a written or digital inquiry, and you must keep verifiable proof of it. See [UCC and NDNC compliance](https://www.vobiz.ai/docs/compliance/india/ucc.md) for how Do Not Disturb preferences and complaints work.

## How the variable tags work

TRAI's [direction of 18 November 2025](https://trai.gov.in/sites/default/files/2025-11/Directions_18112025_0.PDF) ended the era of generic blanks. It requires a tag on each variable, because [operators can't check an unlabelled blank](https://www.pib.gov.in/PressReleasePage.aspx?PRID=2191273\&reg=48\&lang=2) against the list of approved links and numbers.

| Tag | What goes in | The trap |
| - | - | - |
| #number# or #numeric# | Digits only, such as an OTP | Commas, decimals and letters fail, so "1,250.00" and "XX1234" don't belong here |
| #alphanumeric# | Mixed values such as order IDs, amounts or masked accounts | Scrubbing allows at most 40 characters |
| #url# | A web link | It must match a link you registered in advance |
| #urlott# | An app or OTT download link | It must match a registered app or OTT link |
| #cbn# | A callback number | It must match a registered mobile, landline or toll-free number |
| #email# | An email address | It must be a validly formed address |

Your portal may wrap these in braces, so copy the exact form it displays. TRAI's annexure is brief about which special characters #alphanumeric# accepts, so test a real amount format during approval.

Keep each value short as well. The 2025 regulation refers to a [limit of thirty characters per variable](https://trai.gov.in/sites/default/files/2025-02/Regulation_12022025.pdf), and it allows adjoining blanks of the same type only with justification. Long merchant names are the usual problem, so trim them before filling the template.

**Where the rollout stands:** new templates had to comply from ten days after the direction. Operators were to begin checking tags within 30 days and could run in a warning-only mode for 60 days after that. On TRAI's timetable, rejection would begin around mid-February 2026. We didn't find a notice confirming each operator's final date, so treat tagging as required and check your portal for any old template.

## What stops a message on its way to the customer?

Five checkpoints stand between your idea and a delivered SMS. The first three happen once per template, and the last two happen every time you send.

![Five numbered checkpoints in order. Register business and header. Whitelist links and numbers. Tag and approve the template. Send with the three DLT IDs. Operator checks text, tags, whitelist and preferences. Each one lists what stops a message there, and passing all five delivers the SMS with a category suffix on the sender name.](https://mintcdn.com/vobizai/Gqjw4qC2csbNZrm6/images/blog/sms-templates-for-businesses-india/delivery-checks-light.svg?fit=max\&auto=format\&n=Gqjw4qC2csbNZrm6\&q=85\&s=bf2a4bc9220ed7f0b330cc0b4027db5b)

Use this table when something goes wrong:

| What you see | Likely cause | What to do |
| - | - | - |
| Template rejected for too many blanks | Blanks outnumber the words around them | Add meaningful fixed words between blanks, and keep [at least 30% fixed](https://trai.gov.in/sites/default/files/2025-02/Regulation_12022025.pdf) |
| Template rejected as vague | Fixed text says almost nothing | Name the brand and the purpose in the fixed text |
| Offer sent as a transactional template | Wrong category | Register a separate promotional template |
| Rejected template can't be changed | Most portals don't allow edits | Create a corrected template and submit it again |
| Message with a link fails | The link wasn't [whitelisted by the sender](https://trai.gov.in/sites/default/files/2025-02/Regulation_12022025.pdf) | Register the domain or short link first |
| Message fails after a wording tweak | Sent text no longer matches | Build the text from the exact registered wording |
| Old template suddenly stops working | [Unused for 90 days](https://trai.gov.in/sites/default/files/2025-02/Regulation_12022025.pdf) and deactivated | Ask for reactivation through your portal |
| Second sender name refused for a template | [One template links to one header](https://trai.gov.in/sites/default/files/2025-02/Regulation_12022025.pdf) | Register a copy under the other header |

Protect your sender name too. The Third Amendment says [a misused header or template must be suspended within six hours](https://www.trai.gov.in/sites/default/files/2026-09/PR_No119of2026.pdf) of the operator noticing the misuse. That rule starts 60 days after gazette publication, so no earlier than mid-November 2026. Limit who can reach your DLT and messaging credentials.

## How long should an SMS template be?

Aim for one segment, because a longer message is split and billed per segment. [Vobiz's SMS guide documents the limits](https://www.vobiz.ai/docs/sms/channels/sms.md). Plain English text uses a character set called GSM-7, which fits 160 characters in one segment and 153 per part when split. Hindi and other characters need a wider set called UCS-2, which fits 70 and 67.

![Grouped bar chart of segments by message length. At 70 characters GSM-7 and UCS-2 both use 1 segment. At 160 characters GSM-7 uses 1 and UCS-2 uses 3. At 300 characters GSM-7 uses 2 and UCS-2 uses 5. At 450 characters GSM-7 uses 3 and UCS-2 uses 7.](https://mintcdn.com/vobizai/Gqjw4qC2csbNZrm6/images/blog/sms-templates-for-businesses-india/segment-chart-light.svg?fit=max\&auto=format\&n=Gqjw4qC2csbNZrm6\&q=85\&s=ebf95503de20280c336a911c3d29b21f)

One character can move a whole message across those bars. The [rupee sign and curly quotes aren't in GSM-7](https://en.wikipedia.org/wiki/GSM_03.38), so one ₹ in an English alert can triple the segments for a 160-character message. Write "Rs" and use straight quotes in English templates.

Regional languages are still worth the extra length when they help a customer act. Keep those templates short, and run a real sample through a cost preview before you approve the design.

## How Vobiz handles DLT templates

You register your business, header and templates on a DLT portal first. Then Vobiz carries those identifiers with each message:

* **Single messages:** [Send a message](https://www.vobiz.ai/docs/sms/api/messages/send-message.md) takes `dltEntityId`, `dltHeaderId` and `dltTemplateId`, and your text must match the registered template.
* **Bulk sends:** [Broadcasts](https://www.vobiz.ai/docs/sms/broadcasts.md) apply the same three IDs to every recipient and fill the wording from your uploaded list. The filled result must still match the DLT template.
* **Sender names:** Indian traffic uses registered headers rather than long-code numbers. Contact [support@vobiz.ai](mailto:support@vobiz.ai) to enable your header on your account.
* **Length checks:** [Preview message cost](https://www.vobiz.ai/docs/sms/api/messages/cost-preview.md) shows the segment count without sending anything.
* **Opt-outs:** The [opt-out list](https://www.vobiz.ai/docs/sms/opt-outs.md) is checked before every send, and you can add people to it by API.
* **Delivery records:** [Webhooks (callbacks)](https://www.vobiz.ai/docs/sms/webhooks.md) send you status events, which you can keep with your own alert logs.

The [DLT registration guide](https://www.vobiz.ai/docs/best-practices/dlt-registration.md) walks through the portal steps. Sending is billed and reaches real people, so use your own Auth ID and Auth Token, and confirm the recipient list before each send.

## Frequently asked questions

> [accordion] What is the format of a bank SMS in India?
>
> A typical bank alert names the bank in fixed text, then gives the amount, masked account or card, date and time, channel, and beneficiary or merchant. RBI lists these details for alerts from 1 January 2027. It also requires a number the customer can text to object.

> [accordion] What is a good sample OTP message?
>
> Try: 482913 is your Acme login OTP. It expires in 10 minutes. Keep it private, even from Acme staff. It names the brand, states the purpose and expiry, and warns against sharing. Only the code changes, so the template needs one numeric tag.

> [accordion] Is an OTP message transactional or service in India?
>
> An OTP is transactional when the customer triggers it. TRAI's 2025 definition names OTPs from banks, e-commerce and app logins, and it expects the message within 30 minutes of the transaction. Register OTP templates in that category, and keep offers out of them.

> [accordion] How many variables can a DLT template have?
>
> Plan for three or fewer. TRAI allows more than three only in special circumstances, on a justified request, with every variable tagged and at least 30% of the characters fixed. Ask your DLT portal how it applies this before you design a long alert.

> [accordion] Why was my DLT template rejected?
>
> Common reasons include too many variables, vague fixed text, a bare link with no context, the wrong category, and wording that imitates a bank or government body. Most portals do not let you edit a rejected template, so you correct it and submit a new one.

> [accordion] How can a customer tell whether a bank SMS is genuine?
>
> Check that the sender name matches your bank and ends in -T or -S for an account message. A suffix alone proves little, so never share an OTP or open an unexpected link. Report suspected fraud to your bank, and also on the 1930 helpline or the National Cyber Crime Reporting Portal.

## Further reading on Vobiz

* [India DLT for SMS](https://www.vobiz.ai/docs/sms/compliance/india-dlt.md) · [DLT registration guide](https://www.vobiz.ai/docs/best-practices/dlt-registration.md)
* [Send SMS with Vobiz](https://www.vobiz.ai/docs/sms/channels/sms.md) · [Broadcasts](https://www.vobiz.ai/docs/sms/broadcasts.md) · [Opt-outs](https://www.vobiz.ai/docs/sms/opt-outs.md)
* [UCC and NDNC compliance](https://www.vobiz.ai/docs/compliance/india/ucc.md) · [Vobiz Messaging API overview](https://www.vobiz.ai/docs/sms/overview.md)
* [E.164 phone number formatting](https://www.vobiz.ai/docs/blogs/what-is-e164-phone-number-formatting.md)

## Sources

**Indian regulators**

* TRAI, [Direction on misuse of headers and content templates, with the tag annexure](https://trai.gov.in/sites/default/files/2025-11/Directions_18112025_0.PDF), 18 November 2025.
* PIB, [TRAI mandates pre-tagging of variables in SMS content templates](https://www.pib.gov.in/PressReleasePage.aspx?PRID=2191273\&reg=48\&lang=2), 18 November 2025.
* TRAI, [Telecom Commercial Communications Customer Preference (Second Amendment) Regulations, 2025](https://trai.gov.in/sites/default/files/2025-02/Regulation_12022025.pdf), February 2025.
* TRAI, [Press release 119/2026 on the Third Amendment](https://www.trai.gov.in/sites/default/files/2026-09/PR_No119of2026.pdf), 18 September 2026.
* TRAI, [Third Amendment Regulations, 2026](https://www.trai.gov.in/sites/default/files/2026-09/Regulation_18092026.pdf), September 2026.
* RBI, [Commercial Banks, Responsible Business Conduct, Third Amendment Directions, 2026](https://rbi.org.in/Scripts/NotificationUser.aspx?Id=13543\&Mode=0), 24 June 2026.
* RBI, [Press release on the digital payment authentication directions](https://www.rbi.org.in/Scripts/BS_PressReleaseDisplay.aspx?prid=61282), 25 September 2025.
* RBI, [Authentication mechanisms for digital payment transactions Directions, 2025](https://www.rbi.org.in/Scripts/NotificationUser.aspx?Id=12898), 25 September 2025.

**Industry and reference**

* MediaNama, [Telcos add suffixes to commercial SMS headers](https://www.medianama.com/2025/05/223-suffixes-commercial-sms-headers-spam/), May 2025.
* Wikipedia, ["GSM 03.38"](https://en.wikipedia.org/wiki/GSM_03.38).

> [card] [Send India SMS with your DLT IDs](https://www.vobiz.ai/docs/sms/compliance/india-dlt.md)
>
> Add your entity, header and template IDs to every message.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.