Login and transaction OTPs
/v1/verify/send and /v1/verify/check. Codes are hashed; a check returns verified, expired, invalid, or max attempts.

SMS for banks & fintech
For a fintech, an OTP that arrives late is a failed login, and a duplicated alert is a support ticket. Taysend keeps OTP on its own queue, hashes codes at rest, accepts an Idempotency-Key on every send, and signs every delivery webhook.
Use cases
/v1/verify/send and /v1/verify/check. Codes are hashed; a check returns verified, expired, invalid, or max attempts.
Send type transactional with your own reference. Retries with the same Idempotency-Key do not double-send.
Scheduled reminders from your backend through the same POST /v1/messages path as the console.
Signed webhooks (t= and v1=) for delivery and wallet events. Dedupe on event id; replays carry the same id.
Examples
Units and cost are counted from the text, the same way the wallet bills it.
YOURAPP
Your YourApp code is 482913. It expires in 5 minutes. Never share this code, not even with our staff.
YOURAPP
Debit: GHS 120.00 to 024XXX3456 on 08/10 14:02. Bal: GHS 1,340.55. Ref TX88123. Not you? Call 0302 000 000.
Explore
Each page answers a different question. They are not copies of this one.
FAQ
If something here is product behaviour, it matches the dashboard and the API.
Yes. OTP goes out on its own queue, so a marketing campaign cannot delay a login code.
Send an Idempotency-Key header with every POST /v1/messages. A retry with the same key returns the original message instead of sending again.
Yes. sms_test_ keys send to simulated Ghana numbers and never reach a real handset. LIVE keys spend wallet balance.
Explore
Each page answers a different question. They are not copies of this one.
Start in TEST
TEST keys use simulated Ghana numbers. LIVE starts when your sender name is approved and the wallet has GHS.