# A message was not delivered > Every reason a WhatsApp message fails, in the order worth checking them. > Source: https://onpad.in/docs/message-not-delivered Work down this page in order. The first three causes account for most failures. ## 1. Is the number right? **"Invalid phone number"** means Meta could not use it. Check the number in full international form — `919876543210`, not `9876543210`. After separators are stripped it must be 8 to 15 digits. The usual cause is a **CSV import with the wrong default country code**. Export your contacts and look at what the numbers actually became. If 10-digit numbers stayed 10 digits, the country code was never applied, and every one of them will fail. ## 2. Is the number on WhatsApp? **"Not on WhatsApp"** means exactly that. The number exists, somebody answers it, and it has no WhatsApp account. Nothing to fix. Mark the contact or remove it so you stop paying for the attempt. ## 3. Can Meta charge you? **A payment reason** means Meta has no valid payment method on your WhatsApp Business Account and has stopped delivering. This is **Meta's bill, not ONPAD's**. An active ONPAD plan does not help. Open Meta Business Manager, find your WhatsApp Business Account, and fix the payment method there. For Indian businesses there is a second version of this: accounts that have not migrated to **INR billing by 31 December 2026** can see delivery disrupted from 1 January 2027. See [What it costs](https://onpad.in/docs/what-it-costs). ## 4. Is the template still approved? **"Template not approved"**, or a campaign that worked last week and fails now. Meta can **pause** a template after it has been approved, when too many recipients block or report. Open Templates and look at its status: - **Paused** — temporary, but do not just wait it out. Something about the message made people react badly. - **Disabled** — permanent. Write a new one. See [Templates](https://onpad.in/docs/templates). ## 5. Have you hit the messaging limit? **"Messaging limit reached"** means Meta's cap on how many *different* customers your number may start a conversation with in 24 hours. New numbers start low. The limit rises on its own as you send messages people welcome. Send in smaller batches, use the campaign throttle, and spread a large list over several days. See [Messaging limits and quality](https://onpad.in/docs/messaging-limits). ## 6. Was the window open? **"The 24-hour reply window has closed"** when sending free text from the inbox or `type: "text"` through the API. Free text is only allowed within 24 hours of the customer's last message. After that, only an approved template gets through. This is Meta's rule and nothing changes it. ## 7. Is WhatsApp still connected? If **everything** fails rather than some things, check the connection in Settings. An expired Meta token fails every send with the same error. Reconnect from the setup page. Nothing is lost. --- ## Stuck at "Sent" and never delivered Not a failure. `sent` means Meta accepted it and is trying. A phone that is switched off, out of coverage or has no storage left will not receive until it comes back. Meta retries for up to 30 days. Nothing to do but wait — or reach the person another way. ## Delivered but never read Also not a failure. `read` only appears when the recipient has **read receipts switched on**, and many people do not. A low read rate across a campaign usually says more about read receipts than about your message. Judge campaigns by **replies**, not reads. ## It worked for one person and failed for another Then the problem is the specific contact, not the setup. Check that one number against causes 1, 2 and 6 above. ## Everything suddenly fails Four things fail *everything* at once: 1. **Meta payment problem** — most likely 2. **The connection broke** — expired token 3. **The number was paused by Meta** for a red quality rating 4. **The workspace went read-only** — unpaid plan, which returns `403` on the API Check in that order. The first two cover most cases. ## None of this fixed it Email [support@onpad.in](mailto:support@onpad.in) with: - The **campaign or message id** - The **recipient number** - The **exact error text** shown on the row - Roughly **when** it happened Every send is logged, so those four things let us find it. A screenshot of the whole screen is less useful than the error text. ## Related - [Messaging limits and quality](https://onpad.in/docs/messaging-limits) — the limit and the rating behind many failures - [Why a template was rejected](https://onpad.in/docs/template-rejected) - [What it costs](https://onpad.in/docs/what-it-costs) — Meta's billing, and the INR deadline