Confirm that your users’ phone numbers and email addresses really belong to them without ever exposing the code. Verify delivers it over WhatsApp, SMS or Email with an automatic cascade, includes anti-fraud and only charges for approved verifications.
sustained verifications, with bursts of 2,000 per second
4
carriers connected directly: Claro, Movistar, Tigo and WOM
Verifying a phone number or email is the most fragile step in any sign-up: if the code does not arrive, the user leaves, and building the logic in-house means maintaining secure codes, expiry, attempt limits, retries, WhatsApp templates and fraud defenses.
With Inalambria Verify your application makes two HTTP calls, one to send the code and one to check it, and we take care of everything else: the code never touches your systems, is never stored in clear text and never shows up in a log. It all runs on the same redundant network, connected directly to all four Colombian carriers, that we already use to deliver OTPs for Colombia’s most demanding banks and fintechs.
Examples
Phone or email verification at sign-up
Two-factor authentication (2FA) at login
Password recovery
Transaction and payment confirmation
Delivery and courier confirmation
Periodic re-verification of contact details
What we commit to
Three commitments you can hold us to
Zero code exposure
It never passes through your systems, it is stored as an irreversible hash and it never shows up in a log. There is nothing to leak.
There is always an answer
Every verification ends, approved, expired or failed, and your backend finds out through a signed webhook, without having to ask.
You only pay for the yes
Expired, failed, blocked for fraud or out of attempts: zero. You pay for verified users, not for messages.
How it works
From code to approval, in two calls
Your application only sends and checks. Verify takes care of generating the code, the channel cascade, the attempts and closing the verification.
Your user wants to sign up or log in, and your app needs to check that the number is theirs.
Your backend calls POST /v1/verifications with the number.
Verify generates the code, stores only its hash, checks the anti-fraud limits and responds right away with the id and the pending status.
The code goes out over the first channel in the cascade, WhatsApp, with the authentication template.
Your user receives the code.
If nobody has checked the code after 120 seconds, the cascade moves on by itself: the same code goes out by SMS. Either the WhatsApp or the SMS code works.
Your user types the code into your form.
Your backend sends it to POST /v1/verifications/{id}/check.
Verify compares it against the hash, closes the verification, cancels any pending channels and responds approved.
A signed webhook confirms the result to your backend; it also tells you if the verification expires or fails.
Only approved verifications are billed. Expiring, running out of attempts or being blocked costs nothing, however many messages went out.
Code generated with cryptographic randomness (CSPRNG)
Stored with salted Argon2id; deleted when the verification closes
Banned from logs: the build fails if it shows up
Numbers masked in every output, and an immutable audit trail
TLS 1.2+ in transit and AES-256 at rest
At Inalambria
ISO/IEC 27001:2022 certified ISMS
SIEM/SOC monitoring for incident detection
Tested, up-to-date contingency and disaster recovery plans
MFA, least privilege and vendor management
Law 1581 of 2012 (data protection) and configurable retention
Defense in depth, layer by layer
24/7 response · alerts and escalation
Detection · SIEM/SOC and continuous monitoring
Edge · WAF, DDoS, bot management and limits
Network · private subnets and IPSec VPN
Identity · MFA, SSO and least privilege
Data · AES-256 encryption, versioning and retention
The code: an Argon2id hash, never in clear text
Optional · Risk signals
Add SIM Swap and portability to your verifications
An OTP confirms that someone receives the code, not whether the line was hijacked. With Inalambria you can also add two optional checks that spot risk signals before you send the code or approve a sensitive operation.
SIM Swap
Was this number’s SIM changed recently?
Checks whether the SIM tied to the number was changed recently. It is the classic sign of SIM hijacking: someone duplicates your user’s SIM to receive their codes. If the change is recent, you can ask for an extra factor, hold the operation or review it before sending the OTP.
Number portability
Did this number switch carriers in Colombia?
Checks whether the number was ported and which carrier it belongs to today. A recent port, right before a sign-up or a change of details, is a risk signal worth weighing, and knowing the current carrier confirms the number is valid and active in Colombia.
Check SIM Swap and portability
Decide based on the risk
Verify with the OTP
Both checks are optional and combine with Verify in the same flow: you decide which signal calls for an extra step, such as a second factor or a manual review. They are ideal for sign-ups, account recovery, changes of details and high-value transactions.
Integration, availability and support
Built for the volume and standards of a bank
Stateless services with autoscaling: if a non-critical component goes down, such as analytics, webhooks or a channel, verifications keep going.
Three ways to connect, to fit your network policy
Protected public API
REST API behind Cloudflare: WAF, DDoS protection, rate limiting, IP and country blocking, and TLS.
AWS PrivateLink
100% private traffic between AWS accounts: no public IP, no internet, no VPN.
Site-to-site VPN
IPSec IKEv2 tunnel with AES-256 encryption from your core systems or your datacenter.
A managed operation, not just an API
Two regions, no single point of failure
Multi-AZ with cross-region replication and failover, backups and tested disaster recovery.
24/7 monitoring
Operations watched day and night, tracking SLA compliance.
Incidents with a protocol
Portal, email and WhatsApp, handling through resolution, and a relationship manager with monthly reviews.
Your own traceability
A portal with reports, users and roles, a status API and webhooks with 32+ states.
Frequently asked questions
Can Inalambria see the codes it sends?
No. The code is generated with cryptographic randomness, stored only as a salted Argon2id hash and deleted when the verification closes. No response, log or webhook includes it.
What happens if the WhatsApp message does not arrive?
If nobody checks the code within 120 seconds, the cascade sends the same code by SMS and then by Email. Any of the messages received works, and your application does not have to do anything.
How much does a verification that is not completed cost?
Nothing. Only approved verifications are billed: expired, failed, fraud-blocked or out-of-attempts verifications cost nothing, however many messages went out.
Can I tell whether my user’s SIM was swapped or their number ported?
Yes. Besides Verify, Inalambria offers optional SIM Swap checks, which tell you whether the number’s SIM changed recently, and number portability checks in Colombia, which tell you whether the number switched carriers and which one it belongs to today. You can run them before sending the code or approving a sensitive operation, and ask for an extra step when there is risk.
How do I connect if my network policy does not allow internet traffic?
Besides the public API protected by Cloudflare, you can connect over AWS PrivateLink, with no public IP or internet, or through a site-to-site IPSec VPN from your datacenter.
Can I try Verify before signing up?
Yes. The test environment with test_ keys sends no messages and is never billed, and the full documentation is at docs.inalambria.com. After that, a pilot with measurable goals takes your flow to production.
Verifying your users should not be a risk. With Inalambria Verify, it is not.
Start today with test keys and documentation, then go live with a measurable pilot.