What is A2P SMS?
Application-to-Person SMS (A2P SMS) is text messaging in which the sender is a piece of software rather than a person holding a phone. A bank's transaction alert, a delivery app's out-for-delivery update, a one-time passcode and a retailer's festive offer are all A2P: a server calls an SMS Gateway or aggregator over HTTP or SMPP, the aggregator hands the message to a mobile operator's SMSC, and the operator delivers it to the handset.
The opposite is P2P (person-to-person) texting, one subscriber typing to another, which operators treat as part of a retail mobile plan. A2P traffic looks different on the network: high volume, bursty, one-to-many, usually from an alphanumeric sender ID or a short code, often one-way. Operators therefore carry it on separate commercial terms, priced per message, through registered connections and filtered against anti-spam rules. Its direction is described in the same terms as MO vs MT Messages: the business's outbound texts are mobile-terminated, customer replies mobile-originated.
Regulation follows the traffic. In India A2P SMS falls under TRAI's TCCCPR 2018, so every commercial message must come from a principal entity registered on DLT, using an approved header and a registered content template; since 1 October 2024 messages carrying URLs, APKs or OTT links that are not whitelisted are blocked. In the US the equivalent regime is A2P 10DLC, alongside short codes and toll-free verification. A2P traffic disguised as P2P to dodge these rules travels on a Grey Route.
Key takeaways
- A2P SMS is any text sent by software, such as an OTP service, an order system or a campaign tool, to a person's phone.
- Operators price, route and filter A2P traffic separately from P2P texts between people, on commercial terms and under their own rules.
- In India every A2P SMS must come from a DLT-registered entity, header and content template, or operators block it.
- A2P is billed per segment: 160 GSM-7 or 70 UCS-2 characters, or 153 and 67 per part once a message is split.
- Sending A2P traffic through SIM farms or other grey routes so it looks like P2P breaks operator rules and gets filtered.
A2P or P2P: what changes when software sends the text?
Compared on
A2P SMS
Software to person: OTPs, alerts, offers
P2P SMS
Person to person, typed on a phone
- A2P SMSA server, through a gateway or aggregatorP2P SMSA subscriber's handset
- A2P SMSAlphanumeric header, short code or long codeP2P SMSThe sender's own mobile number
- A2P SMSHigh volume, bursty, one-to-manyP2P SMSLow volume, conversational, one-to-one
- A2P SMSPer message (per segment), on commercial termsP2P SMSInside or billed under a retail mobile plan
- A2P SMSRegistered A2P connections into the operator's SMSCP2P SMSThe operator's own subscriber network
- A2P SMSDLT: registered entity, header and templateP2P SMSNo DLT registration for personal texts
- A2P SMSOne-way from headers; two-way via long or short codesP2P SMSTwo-way by default
Verdict
If software sends it, it is A2P: register it and route it properly, even when it is one OTP to one person.
Verdict: If software sends it, it is A2P: register it and route it properly, even when it is one OTP to one person.
Why does A2P SMS matter?
A2P SMS is still the one text channel that reaches every phone, with or without mobile data or an app, which is why OTPs and critical alerts keep an SMS path even when WhatsApp is the primary channel. Knowing that a message is A2P, and not just texting, explains what a business must register, why prices differ between domestic and international traffic, why some messages vanish into filters, and why a cheap route that bypasses the rules is a risk rather than a saving.
Key facts at a glance
A2P SMS: key facts and limits
- Sender
- Software, through an SMS gateway or aggregator
- Protocols
- HTTP APIs; SMPP v3.4 to operator SMSCs
- Segment size
- 160 GSM-7 / 70 UCS-2 characters (153 / 67 per part when split)
- India rules
- TRAI TCCCPR 2018 on DLT: entity, header, template
- India links
- Non-whitelisted URLs, APKs, OTT links blocked since 1 Oct 2024
- US equivalent
- A2P 10DLC, short codes, verified toll-free
- Receipts
- Per segment: DELIVRD, UNDELIV, EXPIRED, REJECTD…
How does A2P SMS work?
Your application creates the message
An event such as a login, a payment or a dispatch triggers your code to build the text, choose the sender ID and, in India, the DLT template that matches the wording.
It is submitted to a gateway
The request goes to an SMS gateway or aggregator over an HTTP API or an SMPP bind, carrying the destination, sender, text and encoding, plus the PE ID and template ID for Indian traffic.
The aggregator routes it to an operator
Routing picks a direct operator connection or another registered route for the destination network, usually weighing price against delivery rate.
The operator checks and delivers
The operator's systems check the traffic (in India, DLT scrubbing against header, template, consent and preferences), then the SMSC delivers it to the handset, retrying while the phone is off.
A delivery report comes back
The operator returns a receipt with a state such as DELIVRD, UNDELIV or EXPIRED, which the aggregator forwards to your webhook so you can track, retry and reconcile each segment.
Example: Three kinds of A2P SMS from one Chennai app
A Chennai food-delivery start-up sends login OTPs, order-status updates and weekend offers by SMS. All three are registered on DLT under the company's principal entity, but under different categories: the offer is promotional, so it skips customers who have set DND preferences and only goes out in daytime hours, while OTPs and order updates are service messages that reach every number at any time. Each send carries its template ID, and the gateway's delivery reports are matched to orders; when UNDELIV results spike on one network, the team raises it with the aggregator the same day instead of discovering it from complaints.
A2P SMS in code
submit_sm # one MT message, SMPP v3.4source_addr_ton = 5 # alphanumeric sender ID (the header)source_addr_npi = 0source_addr = "ABCSHP"dest_addr_ton = 1 # international numberdest_addr_npi = 1 # E.164destination_addr = "919812345678"esm_class = 0x00 # 0x40 when short_message starts with a UDHregistered_delivery = 1 # ask the SMSC for a delivery receiptdata_coding = 0x00 # SMSC default alphabet (GSM-7); 0x08 for UCS-2short_message = "482913 is your login OTP for ABC Shop. Valid for 10 minutes. Do not share it."# India: the DLT PE ID and template ID travel as optional TLVs whose tags your aggregator specifiesdeliver_sm # the receipt that comes backesm_class = 0x04 # this is a delivery receipt, not an inbound messageshort_message = "id:7c1e5b20 sub:001 dlvrd:001 submit date:2610191030 done date:2610191030 stat:DELIVRD err:000 text:482913 is your log"
The fields an A2P sender actually sets on an SMPP bind, and the delivery receipt format operators return.
Common wrong turns
Common mistakes with A2P SMS
Calling it bulk SMS and skipping registration
Every commercial SMS to Indian numbers needs a registered entity, header and template. Unregistered traffic is blocked at scrubbing, not merely delayed.
Choosing the cheapest route
Rates far below the market often mean termination through SIM farms or international bypass. Delivery is erratic, OTPs arrive late and senders get blocked. Ask providers which operators they connect to directly.
Ignoring encoding
One emoji or Hindi character switches the whole text to UCS-2, cutting a single SMS from 160 to 70 characters and multiplying the segments you pay for. Check the segment count before every campaign.
Assuming submission means delivery
Gateways accept messages instantly; only the delivery report shows the phone received it. Track receipts and alert on falling DELIVRD rates per operator.
Good practice
Best practices for A2P SMS
- Keep OTP texts short, in GSM-7 and inside one segment.
- Use separate templates and categories for OTPs, updates and promotions, so a problem with one cannot block the others.
- Ask whether your provider bills on submission or on delivery.
- Send WhatsApp first and keep A2P SMS as the fallback channel for people you cannot reach there.