Phone Verification
User-initiated verification that's secure, global, and affordable. With Reverse OTP, users send messages TO us via Telegram, WhatsApp, or SMS.
Why Reverse OTP?
Traditional SMS verification sends codes TO users. We flip it - users send codes TO us. This simple change transforms cost, reliability, and security.
Traditional OTP
You send SMS → User receives code → User enters code → You verify
$0.0457–$0.3868 per SMS abroad
Sending SMS costs vary widely by country, and verifying users abroad gets expensive fast. Twilio rates, October 2026.
Codes That Never Arrive
Carrier filtering, network issues, and regional blocks stop codes on the way. Microsoft has reported SMS delivery as low as 50% in some regions.
SIM Swaps
An attacker who gets the number moved to their SIM receives the code and passes the check.
Regional Complications
Different carriers, regulations, and formats per country. A global nightmare.
Reverse OTP
User sends code to us → We verify instantly → You get proof token
Up to 97% less than sending an SMS abroad
Receiving a message costs a fraction of sending one abroad: Twilio charges $0.0457–$0.3868 to send one SMS to the 10 countries below and $0.0075 to receive one on a European number (October 2026). One proof on the €79 plan costs €0.0079. Over 90% less for Germany, the Netherlands, the UAE and Nigeria.
Nothing Outbound to Filter
The user sends the message, so no outgoing SMS is waiting on a carrier's spam filter.
The User Starts It
The code goes from the user to us, so there is no incoming code to intercept or phish.
Instant Verification
No waiting for SMS delivery. Message sent = verified within seconds.
What a SIM Swap Can Still Do
On Telegram and WhatsApp the proof comes from the messaging account, so a SIM swap alone is not enough — the attacker must also take over the account, which two-step verification blocks when the user has turned it on. On plain SMS, whoever holds the SIM can send the message, and a proof attests control at the moment it was made.
| Country | Sending one SMS | One proof costs less by |
|---|---|---|
| Germany | $0.112 | 92% |
| France | $0.0798 | 88% |
| Netherlands | $0.1143 | 92% |
| Lithuania | $0.0578 | 84% |
| Poland | $0.0457 | 80% |
| United Kingdom | $0.056 | 84% |
| United Arab Emirates | $0.1176 | 92% |
| India | $0.0832 | 89% |
| Nigeria | $0.3868 | 97% |
| Brazil | $0.0599 | 85% |
Users verify via their preferred channel
User sends a message to prove they control the phone number
Create Verification
Call our API with the phone number to verify. We generate a unique challenge code and verification link.
User Sends Message
User sends the challenge code to our number via their preferred channel (WhatsApp, Telegram, or SMS).
Proof Generated
We verify the message came from the claimed number and return a cryptographic proof token.
API Integration
Integrate phone verification in minutes
1. Create Verification Request
curl -X POST https://api.proof.holdings/api/v1/verifications \
-H "Authorization: Bearer pk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "phone",
"channel": "telegram",
"identifier": "+37069199199"
}'2. Verify the Proof Token
# Poll for verification status
curl https://api.proof.holdings/api/v1/verifications/VERIFICATION_ID \
-H "Authorization: Bearer pk_live_YOUR_API_KEY"Response Example
{
"id": "507f1f77bcf86cd799439011",
"type": "phone",
"channel": "telegram",
"status": "verified",
"identifier": "+37069199199",
"verified_at": "2026-03-15T10:51:30Z",
"verified_data": {
"telegram_user_id": "123456789"
},
"proof": {
"token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_at": "2027-03-15T10:51:30Z"
}
}