Key Takeaways
- android sms gateway troubleshooting carrier rejected: the operator refused the PDU. A 2xx from POST /messages already happened.
- Separate HTTP errors, pairing, empty airtime, and true carrier reject before you change application code.
- Spammy copy, purchased lists, and unregistered bulk get numbers barred. That is not a gateway bug.
- Retries still burn operator SMS. Idempotency and a pause beat a loop.
- Priced by devices and SMS send volume. You use your own phone and operator SMS credit. We do not refund carrier rejects as platform credits.
- Free 300 SMS lifetime is for canaries, not for hammering a barred MSISDN.
On-call searches android sms gateway troubleshooting “carrier rejected” after a DLR that is not Pending. Start by splitting layers. Docs: Developer Center. DLR lookup is GET /messages/{id}; production prefers webhooks.
Priced by devices and SMS send volume. You use your own phone and operator SMS credit.
If the same template was rejected on three operators, the SIM is not unlucky. The copy or the list is the incident.
Rejected is usually radio, not JSON
401/422 are your client. Pairing down is the phone. Reject after send is the operator or the destination network. Do not “fix” it by inventing a new host.
Reject vs fail vs pending
| What you see | Likely layer | First move |
|---|---|---|
| HTTP 4xx/5xx on POST | API / auth / body | Key, E.164 to[], docs |
| Queued, never leaves phone | Device / OEM / airtime | Charge, pairing, SMS balance |
| Sent then failed/rejected | Operator / destination | Copy, consent, SIM reputation |
| Pending forever | No DLR (common) or stall | Do not treat all Pending as reject |
Wording and lists
Promo language, URL shorteners, purchased CSVs. Spammy wording. India/Nigeria bulk is not a handset loophole. STOP.
Empty wallet is not a reject stamp
Zero SMS balance often looks like stall, not a branded “rejected.” Check the operator wallet before rewriting templates.
Do not retry-storm
Idempotency on user-visible OTP. JSON API. Pace. Carrier fair-use still applies — this is not unlimited send.
OTP playbook is different
Keep codes boring, GSM-7 if you can, isolated device. OTP. A reject on promo must not move that blast onto the auth SIM.
Checklist
- HTTP vs DLR vs pairing split on paper.
- Same template on a staff SIM / second operator.
- List consent; no dump files.
- Pause retries on content rejects.
- Airtime and OEM checked.
- Webhook
message.failedlogged without OTP bodies.
Next steps
Fix the layer you proved, not the one that is easiest to restart. Setup · devices + volume.
Related product pages
Jump to the live product docs for this topic—not another long-form article.
- SMS API documentationLive endpoint reference
- device and SMS volume pricingPlans and allowances
- Android SMS gateway product guideDefinition, product, and how to buy
- download the Android gateway appGet the APK





