Phone Number Validation at Signup: Format, Reachability, and Fraud Checks
Three levels of checking
Level one is syntax: can this string be a phone number in the claimed country, with the right length and a valid starting pattern. It catches typos and pasted email addresses, and it costs nothing, so every form should do at least this.
For more on this, see this related guide and our earlier explainer on the same theme.
Level two is lookup: is the number allocated, what type of line is it, and has it been recently ported or flagged. Level three is possession: a one time code proves the person entering the number controls it now. Conflating the three is how forms end up either useless or unbearable.
Matching depth to risk
A signup where the phone is just a contact detail needs level one and maybe a soft level two warning. An account where the phone will approve payments or reset passwords needs level three before those powers attach, not necessarily at the first hello.
Stage the checks. Collect the number lightly, verify possession at the moment it becomes a security factor, and re verify when it changes. Staging keeps signup conversion healthy without leaving the important doors unguarded.
Line type and fraud signals
Line type data helps fraud teams quietly: mobile numbers behave differently from virtual ranges in abuse patterns, and a sudden flood of signups from one carrier range or number block is an early warning worth alerting on.
Readers also found this companion piece from our archive useful.
Use signals as scores, not verdicts. A virtual number plus a brand new account plus a rushed checkout is a pattern. A virtual number alone is a person with a privacy preference and a wallet you presumably want.
Error messages that help
When a number fails, say which check failed in plain words and what to do: check the country code, remove spaces is unnecessary since good forms strip them automatically, or try a mobile number if the service genuinely requires one.
Test your validation with real international numbers from your actual customer countries before launch. The most common phone validation bug is a form that silently rejects a whole country your marketing team is busy advertising in.
Frequently asked questions
What is the difference between format and carrier validation?
Format validation checks the digits against country rules for length and prefix. Carrier or lookup validation checks live data: whether the number is allocated, its line type like mobile or landline or virtual, and sometimes recent porting activity.
Why block virtual or VoIP numbers at signup?
Some services block them because virtual numbers are cheap to create in bulk for abuse. The tradeoff is real users who legitimately use such numbers get excluded, so blocking should match an actual abuse pattern, not a general suspicion.
When should we send a verification code?
Send one when the number unlocks something valuable: account recovery, payments, or high trust actions. For a newsletter style signup, a code step mostly adds friction and drop off without protecting anything important.
How do we validate international numbers fairly?
Use a proper parsing library with country aware rules instead of a single digit pattern. Numbers that look wrong under one country rules are normal in another, and rigid patterns quietly discriminate against international users.
See your own numbers.
A free bot-traffic audit shows the human-automated split in your live traffic - no code changes, no commitment.
Get a free bot-traffic audit