Time-bound codes
Set expiry and resend intervals that suit the risk of each action in your app.
One OTP API for sign-ups, account recovery and payments. Your app calls Send once; Send delivers the code over WhatsApp, SMS or email, in the order you choose.
Set expiry and resend intervals that suit the risk of each action in your app.
Attempt limits, rate controls and abuse monitoring protect every verification.
Requested, delivered, expired and approved are separate events you can report on.
Your product never builds separate WhatsApp, SMS and email verification logic. Send stores the code securely, handles the channel order and tells you when the customer is verified.
POST /v1/verify{ "to": "+255700000000", "channels": ["whatsapp", "sms", "email"], "template": "login_code", "expires_in": 300}POST /v1/verify/check{ "verification_id": "vrf_01K7SA2B9T", "code": "408921"}// 200 OK{ "status": "approved", "channel": "whatsapp" }Your app starts a verification for a phone number or email.
Send delivers the code on the first available channel.
The customer enters the code in your app.
Send checks it once, before expiry, and returns the result.
Create your account in a minute. Prepaid in shillings, no card needed, and our team is one message away.
Larger volumes or a bank? Talk to sales