VirtualSMSNumbers Technologies OÜ was registered in Tallinn in September 2019. The product at the time was three countries, one upstream, a Telegram bot and a spreadsheet that reconciled balances by hand every evening. Five years is long enough that the anniversary post can be mostly numbers rather than mostly adjectives.
The numbers
| End of 2019 | End of 2021 | Today | |
|---|---|---|---|
| Countries listed | 3 | 64 | 190 |
| Services | 37 | 290 | 500+ |
| Upstream pools | 1 | 3 | 5 |
| Numbers delivered, cumulative | 11,400 | 3.9 M | 38.4 M |
| Median time to first SMS | not measured | 14.1 s | 8.4 s |
| Automatic refunds as a share of purchases | not measured | 9.8 % | 6.2 % |
| People | 2 | 6 | 14 |
The refund line is the one we watch. It is the share of paid activations that expired without a message and were credited back automatically. It has never been zero and it never will be — a fair chunk of it is customers testing pairings that were never going to work. But it went from roughly one purchase in ten to roughly one in sixteen, and that came almost entirely from removing bad offers rather than from anything clever.
The order things happened in
- 2019 — Registered the company. Three countries. Balances reconciled by hand. First paying customer in November, a QA team who needed Russian and Ukrainian numbers for signup tests.
- 2020 — Automatic refunds on expired activations, in March. It is still the decision we are asked about most in sales calls.
- 2021 — Stopped taking cards and moved to crypto-only in August, after our third acquirer terminated us. Painful, and covered honestly in its own post.
- 2022 — Rentals. Customers had been simulating them by re-buying activations and hoping for the same number, which does not work.
- 2023 — The handler_api.php compatibility layer, then HMAC-signed webhooks. Two migrations in one year, one inbound and one outbound.
- 2024 — Coverage. Twenty-four countries added, three removed, and a launch bar written down so the count means something.
Three things we got wrong
We kept card payments for eighteen months too long
We knew by early 2020 that our chargeback profile was structurally bad — the product is cheap, instant and impossible to prove delivery of to a card scheme. We kept cards because losing them looked like losing customers. Three acquirer terminations later we moved anyway, in a hurry, with two days of downtime on top-ups. Moving deliberately in 2020 would have cost less than moving in a panic in 2021.
The first success-rate badge was a lifetime average
For two years the number next to each country was the all-time success rate for that pair. It was stable, reassuring and wrong: a country that had worked beautifully for eighteen months and had been dead for three weeks still showed 91 %. Customers trusted it, bought, and failed. It is now a trailing seven-day window with the sample size shown next to it, and it moves around in a way that some people find unsettling. That is the point.
We built a Telegram bot before an API
In 2019 the bot was the product because it was the fastest thing to build. It attracted exactly the customers who wanted to click buttons, and none of the customers who wanted to automate — and automation is the entire business. The REST API arrived in mid-2020 and the customer profile changed within a quarter. The bot still exists and is used by about 4 % of accounts.
What the ticket queue taught us
Support volume per thousand activations has fallen by roughly four fifths since 2020, and almost none of that came from writing better help articles. It came from removing the situations that generated tickets: automatic refunds removed the largest category outright, crypto-only removed the second, and a trailing success rate removed most of the third — people buying into a country that had stopped working and asking us why.
What is left is mostly two things. People asking a virtual number to do something it cannot do, which is why we published that list, and people whose account was banned by a service after a perfectly successful delivery, which we cannot fix and try to be straightforward about. Both are answered better in public than in a reply.
What has not changed
- A failed activation costs nothing. Since March 2020, no exceptions, no handling fee.
- The price on the pricing page is the price you pay. No surge, no per-country surcharge at checkout, no fee for using the API.
- We say when something does not work. The coverage report lists delistings. The status page shows degraded pairs. The FAQ names things virtual numbers cannot do.
- No subscriptions. You top up, you spend, the balance is yours and it does not expire.
The plan for the next five years is unremarkable: more of our own SIMs in the countries where customers actually concentrate, a slower and better-documented API, and a coverage number that keeps meaning what it says.
Articles are published in English.