Connect validation to your OTP flow
Acudo does not replace your existing OTP provider. The validation layer sits before it.
Once the application has captured and normalised the UK number, run structural validation and number intelligence before making the OTP request. Your application can then pass only numbers that meet your flow's criteria to the existing OTP provider.
The basic sequence is:
User input → E.164 normalisation → structural validation → Acudo number intelligence → decision → OTP provider → code verification
This separation also makes the system easier to operate. The OTP provider remains responsible for sending and verifying the code, while the validation layer is responsible for deciding whether the submitted number is suitable to enter that process.
The exact decision rules depend on the use case. A consumer signup flow may reject non-mobile numbers, while an onboarding process may use carrier or subscriber-status signals as additional risk or contactability inputs rather than hard rejection rules.
Send and verify the OTP
After the number passes your validation rules should the application request an OTP. Send the canonical E.164 value produced during validation rather than the raw user input.
From this point, your existing OTP provider handles the code-generation and delivery workflow. The important distinction is that Acudo's role ends at the number-intelligence decision; it does not need to orchestrate the OTP itself.
Your application should still apply standard OTP controls: short code lifetimes, single-use codes, server-side verification, and rate limits on both OTP requests and failed code attempts. OWASP's guidance provides the relevant implementation guidance.
Store the verified number
Write the number to your database after the OTP checks out. Store the canonical E.164 value and a timestamp of the OTP confirmation and, where useful, the validation results used before the send. That timestamp is what lets you re-verify numbers that have sat untouched for two years.
If your interface shows numbers in national format, keep that as a separate display field rather than reformatting on read. Whenever you need to send anything to that number later, whether a delivery notification or a second number OTP, you're pulling the E.164 value straight out of storage with no parsing in between. One canonical column also stops duplicate accounts.
Test UK phone number verification
Ofcom reserves 07700 900000 to 900999 for TV and radio drama, and those numbers are never allocated to real subscribers. They're the right choice for structural test cases, because they parse as valid GB mobiles while never reaching a handset. Combine them with one live handset you control for the end-to-end path.
Work through the cases that actually break things:
-
Valid national input, and its international equivalent. Both must produce the same stored value.
-
The 0044 variant, which normalises identically.
-
+440XXXXXXXXXX, the retained trunk prefix. Your parser must reject it rather than passing it to the gateway.
-
A number with the +44 missing and no leading zero. GB as the default region resolves it.
-
A landline and an 070 personal number, each of which must fail with its own message.
-
Malformed input: too few digits and a pasted string with a trailing full stop.
Return a specific correction for each failure. A generic "invalid number" tells users nothing and sends them back to the same mistake.
Test the validation and decision paths as well. Confirm that structurally invalid numbers never reach the OTP provider. Test numbers that return different line types and subscriber-status signals and verify that your application applies the intended decision to each. Then test the handoff to the OTP provider with a valid number and confirm that the canonical E.164 value, rather than the raw input, is sent.
Finally, test the OTP abuse controls separately: repeated requests, repeated incorrect codes, expired codes, and resend limits. The validation layer should prevent unsuitable numbers from reaching this stage in the first place.
Conclusion
Effective UK phone number verification starts before the OTP is sent. Normalise the submitted number, validate it against UK numbering rules, then add number intelligence to understand the line before deciding whether it should proceed to your OTP provider.
That division of responsibilities matters. Your OTP provider handles code delivery and verification; the validation layer determines whether the number is suitable to enter that process in the first place.
Acudo provides that number-intelligence layer, combining phone validation and HLR lookup capabilities across 220+ network operators. The resulting network signals can help product, engineering, and trust & safety teams make better decisions before sending OTPs, running onboarding checks, or delivering critical customer messages. They are point-in-time signals rather than guarantees of handset reachability or OTP delivery.
If you're building or improving a UK verification flow, speak to our team about where number intelligence can fit before the send.