Short answer: missed call verification asks the user to give a missed call from the number they claim to own. If the caller ID your system receives matches, you treat the number as verified. It is cheaper and simpler than an SMS OTP and works on any phone, but it relies on caller ID, so use it for low-to-medium-risk checks (lead forms, sign-ups, attendance) and an OTP for logins, payments and account changes.
On Edesy, the caller-ID check works today with a missed call number and its real-time webhook. A packaged verification flow is available on request; we set it up for your account quickly.
How Missed Call Verification Works
- The user enters their mobile number in your form or app.
- You show: "To verify, give a missed call to 9XXXXXXXXX from this number within 2 minutes."
- The user dials. The call is cut with a busy tone and costs them nothing.
- Edesy sends a signed
call.missedwebhook to your server withdata.from(the caller's number in +91 format),data.toand the time. - Your server looks for a pending verification for that number inside the time window.
- If it matches, mark the number verified and update the user's screen.
You can also poll GET /missed-calls on the REST API at https://voice-api.edesy.in/v1 if you
cannot receive webhooks, but the webhook is faster.
Minimal server logic
on POST /edesy-webhook:
verify X-Edesy-Signature (HMAC-SHA256 of raw body with your secret)
event = parse JSON
if event.event != "call.missed": return 200
phone = normalise(event.data.from)
pending = find pending verification where phone = phone and created_at > now - 2 minutes
if pending and not pending.verified:
mark verified, store event.data.call_sid
return 200Retries carry the same call_sid, so storing it makes the handler idempotent. The
webhook signature verifier helps you check your HMAC code.
Missed Call vs SMS OTP vs Voice OTP
| Missed call (caller ID) | SMS OTP | Voice OTP | |
|---|---|---|---|
| What it proves | The phone dialled out from that number | The SIM received a message | The phone answered and heard the code |
| User effort | Dial and hang up | Wait, read, type a code | Answer, listen, type a code |
| Works on basic phones | Yes | Yes | Yes |
| Needs literacy | No | Yes | Partly (must type the code) |
| Cost to user | Nothing | Nothing | Nothing |
| Delivery issues | Few; user initiates the call | SMS delays and filtering | Call must be answered |
| Phishing resistance | Moderate | Weak if user shares code | Weak if user shares code |
| Spoofing risk | Caller ID can be spoofed in some routes | SIM swap | SIM swap |
| Best for | Lead forms, sign-ups, field checks | Logins, transactions | Users who miss SMS or cannot read |
When Caller ID Is Enough
- Lead and enquiry forms. You want to know the number is real and belongs to the person before a sales call.
- Free sign-ups and waitlists. Stopping fake numbers matters more than stopping a determined attacker.
- Contest and sampling entries. One verified number per entry.
- Delivery or appointment confirmation. The customer confirms from their registered number.
- Field staff attendance. The registered mobile calls in; see missed call attendance.
- Users who struggle with codes. Older or low-literacy users find "just give a missed call" far easier.
When to Use an OTP Instead
- Logins and password resets. Account takeover risk justifies a code.
- Payments, wallet top-ups and withdrawals.
- Changing the registered number, email or bank details.
- Regulated flows where an OTP is expected or required.
- Anything an attacker would profit from. Caller ID is generally reliable on Indian mobile networks but is not a cryptographic proof.
For users who do not receive SMS reliably, a voice OTP reads the code aloud in a call and works on any phone.
Design Tips for Missed Call Verification
- Short window. Accept the call only within a few minutes of the request.
- Exact match. Normalise both numbers to +91 E.164 before comparing.
- One number per flow. Use a dedicated verification number so marketing calls do not mix in.
- Clear on-screen text. Show the number large, with "from the number you entered".
- Fallback. Offer an OTP if the call does not arrive, for example from a different SIM in a dual-SIM phone.
- Rate-limit. Cap verification attempts per number and per IP.
- Do not treat it as login. Verified means "this person controls this number now", nothing more.
Example Flows
Lead form on a landing page
A user fills a two-field enquiry form. Instead of sending an SMS code, the thank-you screen says "Give a missed call from 98XXXXXXXX to confirm". Your page polls your own server every few seconds; when the webhook arrives and matches, the screen changes to "Confirmed, we will call you shortly" and the lead is pushed to sales as verified. Unverified leads can still be kept, but sales calls the verified ones first.
Delivery or cash-on-delivery confirmation
An order confirmation page asks the buyer to give a missed call from the number on the order to confirm. A matching call within the window marks the order confirmed; no match after a few hours sends it to a human or an automated confirmation call. This filters out fake numbers before you ship.
Field agent check
A field agent gives a missed call from their registered phone when they reach a customer. It is the same caller-ID match, used as a lightweight presence record, with the location caveats described in the attendance guide.
What Can Go Wrong
| Problem | Cause | Handling |
|---|---|---|
| Call never arrives | User dialled from the other SIM | Show which number to call from; offer OTP fallback |
| Number mismatch | Different formats (0, +91, spaces) | Normalise both sides to +91 E.164 |
| Duplicate events | Webhook retries after a timeout | De-duplicate on call_sid |
| Late arrival | Network delay or user waited | Allow a short grace period, then expire |
| Shared family phone | Several users on one number | Treat the number as verified, not the person |
Cost
Verification volume is usually steady, so pricing is simple:
| Volume per month | Plan | Approx. cost before GST |
|---|---|---|
| 1,000 verifications | Pay as you go | ₹499 + ₹300 = ₹799 |
| 3,000 verifications | Pay as you go | ₹499 + ₹900 = ₹1,399 |
| 10,000 verifications | Unlimited | ₹1,498 |
Add 18% GST. Above about 3,330 events per number a month, Unlimited is cheaper. A one-time setup fee may apply per number, and KYC is required before a number is issued. See missed call service pricing in India.
Honest Summary
- Live today: a missed call number, real-time signed webhook and API. You can build caller-ID verification in an afternoon.
- On request: a packaged verification flow, which we set up for your account quickly.
- Not a replacement for OTP on sensitive actions.
Read more on the mobile verification use case.