Pay for codes, not for guesses
Every account is pay as you go: one prepaid USD wallet, no plans, no monthly fee and no subscription. You only pay for a verification code if it arrives. All amounts in USD.
Temporary verification numbers
Charged only if the code arrives
- Order by service + country through one endpoint
- 20-minute activation window per number
- No code? The full amount goes back to your wallet automatically
- Live price per service and country in the dashboard and via
GET /api/v1/prices - Cap any order with
max_price
Dedicated virtual numbers
Prepaid from your wallet, renewed from your wallet
- A United States or Canada number that stays yours
- Inbound SMS to the dashboard and the
number.sms_receivedwebhook - Outbound SMS and browser calling, billed from your wallet at the rates shown in the dashboard
- Turn off auto-renew or release the number any time
One wallet pays for both products. Current prices are always shown in the dashboard before you order.
What's included
There is only one way to use OTP Route: pay as you go. Every account gets the same features and the same limits.
Full REST API
Services, countries, live prices, activations and dedicated numbers through one versioned API. Up to 10 API keys per account.
Signed webhooks
HMAC-SHA256 signed events with test-send and a delivery log. Up to 5 webhook endpoints per account.
300 requests / minute
One clear rate limit for every account, with 429 and Retry-After when you exceed it.
Sandbox on request
Simulated numbers and codes with no wallet spend, enabled by support for development accounts.
Automatic invoices
A PDF invoice is emailed for top-ups and renewals, ready for your accounts payable process.
Account security
Two-factor authentication (TOTP), optional Google sign-in and bot protection on sign-in forms.
Automatic refunds
An activation that expires or is cancelled without a code is refunded in full to your wallet — exactly once, no ticket required.
Usage analytics
Per-day API calls and errors plus your top endpoints, so you can spot regressions early.
Email support
Questions about the API, billing or your account are answered by email within one business day.
One prepaid USD wallet
Top up any amount, spend it across codes and numbers, and get money back automatically when a code never arrives.
Paying in
- Card — processed by Stripe with 3-D Secure authentication.
- USDT or USDC — exact-amount stablecoin payments with an on-domain QR code. Send the exact amount on the selected network.
- Coupons apply automatically at checkout when eligible.
- Invoices are emailed as PDF automatically.
Spending
- Verification codes — the live price is debited when you order and returned in full if no code arrives within the 20-minute window, or if you cancel.
- Dedicated numbers — the term is paid from your wallet when the number is assigned and renews from your wallet while auto-renew is on.
- Release any time — release a number from the dashboard or turn off auto-renew to let it lapse at the end of its paid term.
- Outbound SMS and calls on dedicated numbers are billed from your wallet at the rates shown in the dashboard.
Learn more: OTP Gateway · Virtual Numbers · Choosing an OTP provider
Refund summary
- Expired or cancelled activations without a code are refunded to your wallet automatically.
- Dedicated-number terms are prepaid and not refunded once a term starts, unless the number cannot be provisioned.
- Unused card top-ups may be refunded to the original card within 30 days, at our discretion.
- Crypto deposits sent with the wrong amount or on the wrong network cannot be credited.
Same limits for everyone
Webhook deliveries do not count toward your request rate.
Pricing questions
Are there plans or a monthly fee?
How much does a verification code cost?
GET /api/v1/prices, and you can cap it with max_price.What happens if no code arrives?
How much does a dedicated number cost?
How are outbound SMS and calls billed?
Can I withdraw my wallet balance?
What are the API limits?
Create an account and pay as you go
No monthly fee. Top up any amount and route your first OTP.