How it works
How VirtualSMSNumbers works
The full lifecycle of an activation, from top-up to refund, with nothing hidden in the middle.
VirtualSMSNumbers sits between you and a pool of mobile operators and number resellers in 225 countries. You never touch a SIM card: you request a number for a specific service, we lease it from the healthiest operator that has stock, we forward the SMS we receive on it, and we release the number afterwards.
- 1
Funding your account
Balances are prepaid and denominated in euros. The first top-up is €30 and is paid in cryptocurrency through OxaPay — Bitcoin, Ethereum, USDT on Tron or Ethereum, USDC, Litecoin, TON, BNB and a dozen others. The invoice locks the crypto amount for 30 minutes; your balance is credited on the first network confirmation, usually well before the invoice expires.
- 2
Choosing a number
Every service is matched to an operator pool. When you request, say, a Telegram number in Portugal, we look at every provider that has Portuguese numbers registered as Telegram-capable, drop the ones whose recent success rate has fallen below our threshold, and reserve from the cheapest one left. That is why the price you see can change between two refreshes — it tracks the real pool, not a price list.
- 3
Receiving the SMS
Activations have a 20-minute window by default. During that window the number is exclusively yours and we listen for inbound SMS on it. When a message lands, we store the full text, extract the numeric or alphanumeric code, show it in the dashboard, push it to your webhook and expose it on the API. If you need a second SMS on the same number — a re-send, or a login flow that sends twice — enable multi-SMS before you buy.
- 4
Closing the order
Once you have the code, mark the activation as complete so the number returns to the pool. If nothing arrives before the window closes, the activation expires by itself and the full amount is credited back to your balance within seconds. There is no ticket to open and no percentage retained.
- 5
Automating it
Everything above is available over HTTPS. Buy with a POST, wait for the code with a long-poll or a webhook, and release with a PATCH. Existing scripts written for the classic handler_api protocol also work unchanged against our compatibility endpoint, so migrations usually take an afternoon.
One activation, end to end
Four parties, seven hops. Everything on our side of the line is visible from the API — the only step we do not control is the one where the target service decides to send the message.
- Your app → VirtualSMSNumbers: Request a number
- VirtualSMSNumbers → Operator pool: Lease the cheapest healthy range
- VirtualSMSNumbers → Your app: Number issued, window opens
- Your app → Target service: Number submitted at signup
- Target service → Operator pool: Verification SMS sent
- Operator pool → VirtualSMSNumbers: Inbound message captured
- VirtualSMSNumbers → Your app: Code parsed and delivered
Steps 1 to 3 take about a second. Step 5 is the part that occasionally never happens, and the part you are never charged for.
Lifecycle states
The status field returns exactly these six values — in the dashboard, in the webhook payload and on the API. There is no seventh state and no manual review step in the middle.
| State | What puts it there | Billed |
|---|---|---|
Waitingwaiting | The number is reserved and the 20-minute window has opened. The price is held against your balance, not yet spent. | Held |
Code receivedcode_received | The first inbound SMS matched this activation. We store the full text, extract the code and push it to the dashboard, your webhook and the API. | Yes |
Completedcompleted | You closed the order, from the dashboard or with a PATCH. The number goes back to the pool and the hold becomes a charge. | Yes |
Cancelledcancelled | You cancelled before any message arrived. The hold is released in the same request. | No |
Expiredexpired | The window closed with no message. The system cancels the order for you — no ticket to open, no percentage retained. | No |
Refundedrefunded | Terminal state that follows a cancelled or expired order once the credit has landed on your balance, normally within a second. | No |
A completed activation cannot be refunded afterwards: once a code has been delivered, the operator has already billed us for it. If the code arrived but was rejected by the service, cancel before marking the order complete.
Limits and honest caveats
Some services aggressively block virtual numbers in some countries. Our success-rate badge tells you the real observed rate over the last 24 hours — read it before buying in bulk.
A number is leased, not owned. You cannot keep an activation number after the window; use a rental if you need persistence.
Outbound SMS and voice calls are not part of activations. Rentals with the “all senders” mode can receive voice-to-text on selected countries.
We do not resell numbers for fraud, spam or impersonation, and we cooperate with operator abuse desks. Accounts used that way are closed without refund.
Your first number is forty seconds away
Create an account, top up €30 in crypto, and get your first verification code before the invoice finishes confirming.