FEATURE
WhatsApp first, SMS fallback
Try WhatsApp first and automatically drop to SMS when delivery fails.
nOtp gives your product teams a clean API, balance-based billing, hosted checkout, and an admin cockpit for margins, content, and client operations.
99.9%
Delivery reliability target
24/7
Admin visibility and support cadence
Global
Multi-country OTP coverage model
Delivery flow
Automatic failoverDeveloper app calls the OTP API
Authenticate with an nOtp API key and send a single request.
WhatsApp delivery is attempted first
Template delivery keeps the experience branded and instant.
SMS takes over on failure
Fallback status, delivery channel, and cost stay attached to the same message record.
Admin console
Clients, keys, balances, content, costs, and profit.
Developer portal
Apps, API keys, OTP logs, billing history, and package catalog.
Platform
Messaging Core
nOtp records each delivery attempt, final channel, estimated delivery cost, and end-user verification status.
Billing Rail
Create products and prices, accept payment, credit client balances, and track refunds and webhook events.
Ops Layer
Edit client balances, manage API keys, update site settings, and keep homepage and docs content editable.
FEATURE
Try WhatsApp first and automatically drop to SMS when delivery fails.
FEATURE
Sell prepaid credit bundles, debit usage per OTP, and keep cost vs revenue visible to operators.
FEATURE
Issue app-specific API keys, provide a Flutter package, and document the full send and verify flow.
Pricing
Developers buy prepaid balance through the hosted billing flow, then nOtp debits usage automatically as WhatsApp or fallback SMS messages are delivered.
starter-50
Launch quickly with enough credit for low-volume verification traffic.
growth-250
Balanced pricing for shipping OTP at scale across WhatsApp and fallback SMS.
scale-1000
High-volume bulk credit package for teams with regional failover needs.
Developer Experience
The repo includes a ready-to-publish Flutter client package scaffold so teams can add send and verify calls without rebuilding transport logic.
Quick example
cURLcurl -X POST "https://notp.app/api/v1/otp/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"recipient": "+15551234567",
"purpose": "login",
"code_length": 6
}'