Phone validation · Use cases · Block VoIP numbers at signup
Use case
Block the VoIP numbers behind fake accounts at signup with Trueguard.
One check before every code.
Get 100 free checksNo credit card required.
Check if a signup number is VoIP.
Start with + and the country code. Try +14159929960, a ported Twilio number, or +14086343220, a number listed on a receive-SMS site.
Or try
Example: a signup with a ported Twilio number
Example data. A real result for +1 415 992 9960.
Valid
+1 415 992 9960
This number is non-fixed VoIP.
- 1
Non-fixed VoIP on a platform
line.type is voip, line.voipType is nonFixed and line.carrierType is cpaasVirtual. Anyone can rent this kind of number online.
- 2
Ported from Lumen to Twilio
line.isPorted is true. For US numbers the current carrier sets the line type, so the number reads as Twilio.
- 3
No receive-SMS history
risk.isDisposable and risk.previouslyDisposable are false, so risk.status stays safe. A VoIP line type never changes the status.
- 4
The rule returns step up
Non-fixed VoIP with no history gets step up. Send the code and add friction. With receive-SMS history, the rule blocks it.
Block, step up or allow: the rule in one paragraph
Do not block every VoIP number. Block non-fixed VoIP that has receive-SMS history, step up the rest of the non-fixed numbers, and allow fixed VoIP. Trueguard returns line.voipType and risk.previouslyDisposable in one call, and 100 checks a month are free.
Block
Step up
Allow
Why fake accounts sign up with VoIP numbers
Two studies, with what each one does and does not show.
Google, ACM CCS 2014
TMA 2023, "Your Code is 0000"
Some gateways use SIM cards, so a VoIP-only block misses them. risk.isDisposable flags the number on any line type, because Trueguard monitors public receive-SMS sites itself. Quotes read on 10 November 2026.
Fixed vs non-fixed VoIP: only one is the problem
The split comes from US 911 rules.
| voipType | What it is | SMS capable | Rule |
|---|---|---|---|
| fixed | VoIP tied to an address. | false | Allow. Send the code by voice call or email. |
| nonFixed | Numbers from apps and online services, not tied to an address. | true | Step up. Block it when the number has receive-SMS history. |
| unknown | Trueguard could not tell which kind of VoIP this is. | null | Step up. |
Under 47 CFR 9.11, providers of fixed interconnected VoIP services must provide automated dispatchable location with each 911 call, and non-fixed providers must do so "if technically feasible." The rule is about 911 location. A number tied to an address still differs from a number anyone can claim online.
Twilio's blog says of non-fixed VoIP: "This is the specific type of VoIP number our customers usually filter out." (Twilio blog, 12 July 2022). Indeed's help page says: "Indeed no longer allows non-fixed VoIP numbers for account verification." Indeed help. Both read on 10 November 2026.
What blocking all VoIP costs you
People on Hacker News describe what a blanket block does to them.
Rejected as "not a real number"
A business line
Expats
Read on 10 November 2026. These are single comments, not a measure of how many users a block loses. The knowledgebase covers who you lose with a blanket VoIP block.
The rule: block, step up, allow
Grade the response by signal combination. Block when two signals agree, step up when one is present, allow the rest.
| Signal combination | Action |
|---|---|
line.type mobile, risk.status safe | Allow |
line.voipType fixed | Allow. line.smsCapable is false, so verify by another channel such as email. |
line.voipType nonFixed, no disposable history | Step up |
line.voipType unknown | Step up |
Any line with risk.previouslyDisposable true | Step up |
line.voipType nonFixed and risk.isDisposable true | Block |
line.voipType nonFixed and risk.previouslyDisposable true | Block |
Any line with risk.status risky (disposable or premium rate) | Block |
risk.status invalid | Reject and ask the user to re-enter |
A VoIP line type never changes risk.status, so the rule reads line.voipType itself. Example: +14159929960 was ported from Lumen to Twilio. It is non-fixed VoIP with no receive-SMS history and status safe, so the rule returns step up. When line.smsCapable is false, as it is for fixed VoIP, send the code by voice call or email. Code samples are in the API documentation.
What step up looks like
You still send the code. These add friction around it.
Check the email address too
Rate limit by number and prefix
Hold free credits
Review before payouts or invites
A real Google Voice user clears these steps once. A number farm clears them for every account. The email verification API is a separate call from the phone check, so you make both.
Google Voice, TextNow and CPaaS numbers
When the holder of the number block is a communications platform such as Twilio, Telnyx, Bandwidth, Onvoy, Vonage or Sinch, Trueguard returns line.carrierType cpaasVirtual and line.voipType nonFixed. For US numbers the current carrier from porting data sets the type. The example number reads as Twilio, and a number ported to a mobile carrier reads as mobile. Outside the US, line.voipType is set where the national regulator's numbering files mark VoIP ranges. Otherwise it is unknown, and the rule steps it up.
Twilio's Lookup docs define nonFixedVoip as "A virtual phone number obtained online without requiring a physical device. For example, Google Voice or Enflick." Enflick is the company behind TextNow. Source: Twilio Lookup docs, read on 10 November 2026.
What it costs per signup
One check per signup on the Standard plan: $49.99 a month for 20,000 checks, then $0.0025 a check.
| Signups a month | Plan | Monthly cost | Per 1,000 signups |
|---|---|---|---|
| 100 | Free, no card | $0 | $0 |
| 5,000 | Standard | $49.99 | $10.00 |
| 20,000 | Standard | $49.99 | $2.50 |
| 50,000 | Standard + 30,000 × $0.0025 | $124.99 | $2.50 |
| 100,000 | Standard + 80,000 × $0.0025 | $249.99 | $2.50 |
The $2.50 cells are rounded.
Twilio lists Line Type Intelligence at $0.008 a request (read 10 November 2026), which is $160 for 20,000 lookups. Trueguard publishes this page. Trueguard does not sell SMS. We earn the same whether your rule sends the code or blocks it.
Frequently asked questions
Every field is in the phone validation API documentation.
How do I block VoIP numbers at signup without losing real users?
Use Trueguard's phone validation API and grade the response instead of blocking the whole VoIP category. Block a non-fixed VoIP number that has disposable history, step up a non-fixed number on its own, and allow fixed VoIP. line.voipType, risk.isDisposable and risk.previouslyDisposable come back in one call, and a free API key covers 100 checks a month with no card.
Why are so many services rejecting Google Voice numbers for signups?
Free non-fixed VoIP has a documented abuse history. A 2014 Google study of phone-verified accounts found that "miscreants rampantly abuse free VOIP services to circumvent the intended cost of acquiring phone numbers." That study covers Google only. Indeed's help page says it no longer allows non-fixed VoIP numbers for account verification (read 10 November 2026). A blanket line-type rule also catches business lines and people who have used Google Voice as their main number for years.
How do companies detect VoIP numbers?
They look up the number in numbering data. That data tells which block of numbers belongs to which holder, what the holder is, and, for US numbers, which carrier currently serves a ported number. In some countries the national regulator publishes the ranges used for VoIP. Trueguard returns line.type, line.voipType and line.carrierType from those sources, so a VoIP number comes back as fixed, nonFixed or unknown.
After porting a number to Twilio, is it VoIP or not?
For US numbers the current carrier decides. +14159929960 was ported from Lumen to Twilio, and Trueguard returns line.type voip, line.voipType nonFixed, line.carrierType cpaasVirtual and line.isPorted true. A number ported the other way, to a mobile carrier, reads as mobile. Porting data covers US numbers only.
Will blocking VoIP stop fake accounts that use free SMS sites?
Not on its own. A 2023 study of public receive-SMS gateways (Moreno et al., TMA 2023) watched 17,141 numbers in 29 gateways and found that some gateways rent VoIP lines from providers such as Bandwidth.com or Twilio, while others use SIM cards. A VoIP-only block misses the SIM numbers. Trueguard monitors public receive-SMS sites itself, so risk.isDisposable sets the status to risky on any line type, VoIP or not.
What happens to a number that used to be on a free SMS site?
risk.previouslyDisposable is true when Trueguard saw the number on a public receive-SMS site 31 to 180 days ago. It does not change risk.status. In the rule on this page, a non-fixed VoIP number with that history is blocked and any other line with it is stepped up.
Does the check work outside the US?
Validity and line type work for numbers in any country. line.voipType is set where the national regulator's numbering files mark VoIP ranges. Where they do not, it comes back as unknown, and the rule on this page steps that number up. Current carrier and porting status are available for US numbers.
How much does it cost to check every signup?
A free API key covers 100 checks a month. Standard is $49.99 a month for 20,000 checks, then $0.0025 a check. At 5,000 signups a month that is $49.99, which is $10.00 per 1,000 signups. At 20,000 it is $2.50 per 1,000, and at 100,000 it is $249.99 in total, about $2.50 per 1,000. Trueguard does not sell SMS, so the check has no SMS revenue behind it.
Related pages
Check the number before you send the code.
100 free checks a month, no card. Trueguard does not sell SMS.
Get your free API keyNo credit card required.

