Android SMS Gateway delivery reports: Limits

Featured illustration for Android SMS Gateway delivery reports: Limits

Android SMS Gateway delivery reports — limits. Feature deep dive on delivery reports (limits). Unique examples and failure modes; link matching /features path when exists. Priced by devices and SMS send volume; BYO phone and operator credit.

Written by the SMS Gateway team for operators who run phones and airtime themselves — not for theoretical cloud SMS demos.

InformationAndroid SMS GatewayFeaturesOperations
Article
Published
December 2, 2025
Updated
December 4, 2025
Reading time
16 minute read

Key Takeaways

  • A delivery report is the operator’s verdict when the device and the SMSC provide one. “Pending” can stick. Your app must timeout, not wait forever.
  • HTTP 200 on enqueue is not delivered. Drive resend policy from DLR or a measured SLA, not from the send call.
  • Message history retention is a plan limit: Free 30 days, Starter 90 days, Professional 1 year, Business 2 years, Developer 90 days. Export what compliance needs before it ages out.
  • Webhooks are not on Free. Polling GET /messages/{id} still needs backoff so you do not DDoS your own DLR lookup.
  • Priced by devices and SMS send volume. You use your own phone and operator SMS credit. Failed sends and retries still use operator credit even when DLR never resolves.

What a DLR can and cannot promise

On a SIM gateway, a delivery report is whatever the Android stack and the operator SMSC bother to tell you. It is not a Twilio-style fabric guarantee. The product walkthrough is the delivery reports guide. This page is the ceiling: pending that never ends, history that ages out, webhooks that are not on Free.

Design OTP as if DLR might never arrive. Then enjoy it when it does. The opposite order creates lockouts.
Queued, pending, delivered, unknown — pending is not successQUEUEDPENDINGDELIVEREDUNKNOWN / TIMEOUTYour SLA must leave pending. Carriers will not always close the loop.
DLR limits are silence, retention, and your own polling manners

Carrier silence is a limit

Some destinations never return a final status. Some prepaid SIMs swallow reports. International hops are worse. “We did not get DLR” is not automatically “the app is broken.” Check pairing and airtime first, then treat residual pending as unknown.

Lookup shape (live fields in Developer Center): GET https://app.sms-gateway.app/api/v1/messages/{id}. Do not revive old /dlr/?apikey= samples.

History retention by plan

Published message history: Free 30 days, Starter 90 days, Professional 1 year, Business 2 years, Developer 90 days. If a bank asks for nine months of OTP evidence, Free will not hold it. Export. Retention is not “unused credits rolling over.”

Limit table

LimitWhat you getDesign response
FinalitySometimes neverTimeout → unknown
Free webhooksDash in the comparison tableDo not build webhook-only OTP on Free
History30 days to 2 years by planExport for audit
Poll rateYour courtesy, then our rate limitsBackoff; prefer webhooks
Meaning of 200Accepted by control planeNot delivered
InternationalWeaker reportsDo not promise SMSC-grade DLR

Webhook limits

Paid plans get SMS webhooks. Verify signatures. Retry your consumer idempotently — the control plane may redeliver. A webhook that 500s forever is how you “lose” DLR you actually received.

Live event names: SMS API documentation.

How to design around DLR limits

  1. Define pending timeout in your app. Example: 10 minutes for OTP, 2 hours for bulk. After that, status = unknown, not delivered.
  2. Subscribe to webhooks on a paid plan. message.delivered and message.failed. Verify X-SmsGateway-Signature. Idempotent consumers.
  3. Back off polling. If you GET /messages/{id}, exponential backoff. Do not poll every 200ms per OTP.
  4. Export before retention lapses. Free’s 30-day history is not an audit archive. Pull what finance or support needs.
  5. Map failures to action. Permanent vs transient. Permanent leaves the list. Transient may retry with a budget.
  6. Canary on cold phones. Measure time-to-DLR after reboot. That number sets OTP expiry, not a blog you copied.

OTP and pending forever

If you resend because pending lasted 20 seconds, you will double-text and burn airtime. Align expiry with measured P95 on a cold OTP phone. See OTP and 2FA SMS on Android and the app OTP in-depth guide.

Cost of not knowing

Service pricing is based on device count and total SMS sent through the gateway. You need a working Android phone with a SIM and SMS credit from your mobile operator. Operator message costs are yours—we do not sell carrier SMS balance. Blind retries are a tax you pay the operator. Free is 300 SMS lifetime — easy to spend on DLR experiments. Paid from $19/month. Device and SMS volume pricing.

Next steps

Read delivery reports, wire webhooks, and keep send keys on the server per the API guide.

Jump to the live product docs for this topic—not another long-form article.

FAQ

Frequently asked questions

Direct answers about android sms gateway delivery reports.

Why is my Android SMS gateway DLR stuck on pending?

Many operators never emit a final state for some destinations, or the handset never got a status PDU. Treat pending longer than your measured P99 as unknown. Do not mint a second OTP on a timer without a policy.

Does Free include delivery report webhooks?

Published comparison: webhooks start on Starter and up. Free has basic DLR in-product. Confirm live behavior in Developer Center before you architect a webhook-only OTP loop on Free.

How long are delivery reports stored?

Message history: Free 30 days, Starter 90 days, Professional 1 year, Business 2 years, Developer 90 days. That is panel/API history, not a promise the carrier kept a copy.

Can I get DLR for every country?

No. Domestic SIMs often have better reports than international hops. Aggregators sell richer DLR on some routes; a handset gateway inherits whatever that operator returns.

Where is the DLR product guide?

The delivery reports page. This spoke is limits: retention, silence, webhook absence on Free, and pending timeouts.
Keep learning

Topically related guides—chosen by subject overlap, not a fixed sitewide footer.

Information
android sms gateway auto reply

Android SMS Gateway auto-reply and STOP: Limits

Android SMS Gateway auto reply and stop — reply and STOP-limits. Feature deep dive on auto-reply and STOP (limits). Unique examples and failure modes; link matching /features path when exists. Priced by devices and SMS send volume; BYO phone and operator credit.

Mar 1, 202616 min
Read article
Information
android sms gateway bulk csv

Android SMS Gateway bulk CSV import: Limits

Android SMS Gateway bulk csv import — limits. Feature deep dive on bulk CSV import (limits). Unique examples and failure modes; link matching /features path when exists. Priced by devices and SMS send volume; BYO phone and operator credit.

Jun 6, 202516 min
Read article
Information
android sms gateway contacts

Android SMS Gateway contact lists: Limits

Android SMS Gateway contact lists — limits. Feature deep dive on contact lists (limits). Unique examples and failure modes; link matching /features path when exists. Priced by devices and SMS send volume; BYO phone and operator credit.

Dec 22, 202516 min
Read article
Information
android sms gateway dual sim

Android SMS Gateway dual SIM routing: Limits

Android SMS Gateway dual sim routing — limits. Feature deep dive on dual SIM routing (limits). Unique examples and failure modes; link matching /features path when exists. Priced by devices and SMS send volume; BYO phone and operator credit.

Mar 28, 202516 min
Read article

Browse the full Android SMS gateway knowledge base or return to how an Android SMS gateway works.

Get started

Test the gateway on your own Android phone

Install the app, pair one device, and validate your API flow before choosing a paid plan.

You supply the phone, SIM, and operator SMS credit.