Back to blog
Replace SMS codes

How to Execute an SMS OTP Replacement in Banking Flows

Glide ID Team10 min read
How to Execute an SMS OTP Replacement in Banking Flows

The breaking point usually shows up in recovery, not in the happy path. A passkey rollout can look healthy until a customer gets a new phone, forgets a device, or calls support because the code never arrived. The outcome is straightforward: replace SMS OTP by moving primary login to passkeys and substituting SMS fallbacks with carrier-verified network authentication, so interceptable codes no longer sit behind every critical flow. To do that without damaging recovery or conversion, you need FIDO server readiness, carrier network access, clear telemetry on login success and account takeover, and a recovery path for complete device loss.

How to take the direct path to SMS OTP replacement in banking flows

The direct path starts by treating the code as the weakness, not as a neutral delivery mechanism. US guidance moved away from SMS for authentication after CISA and the FBI advised against using SMS as a second factor, citing lack of encryption and interception risk. That matters in consumer banking because a code is both a security artifact and a conversion dependency. If it is delayed, intercepted, forwarded, read aloud, or typed into the wrong page, the whole flow bends around a fragile shared secret.

Why shared codes fail customer login and account recovery

The failure mode is simple: you send a secret to a channel outside your app, then ask the customer to copy it back. MDN describes the shared weakness of SMS and email one-time passcodes as the risk that an adversary can intercept the transmission, with SMS materially weaker. In the AI era, the same code can also be socially extracted during a convincing call. Customer education helps, but it cannot carry the whole control. The cleaner fix is to remove the shareable string.

The core architecture: passkeys plus carrier authentication

The replacement architecture has two layers. Passkeys handle the primary sign-in, using device-bound or synced credentials instead of passwords and text codes. Carrier-verified network authentication handles the fallback by checking whether the customer holds the SIM for the claimed phone number. It checks the SIM directly, and the customer taps once without receiving a text code.

Prerequisites for phasing out SMS codes without dropping conversion

Before you touch active authentication pipelines, establish the technical and analytical foundation. A safe SMS OTP replacement is a migration, not a switch flip, because login, step-up, phone-number change, and recovery all fail in different ways. Your team needs to know which flows depend on SMS, which customers already have passkeys, and which support queues light up when codes fail.

Carrier network connectivity and FIDO server readiness

Start with two building blocks. First, your passkey layer needs a FIDO Certified server design or an equivalent production-ready passkey stack that can support customer login across your mobile and web surfaces. Second, the fallback layer needs access to carrier network verification built on the GSMA Open Gateway standard, with operation across Wi-Fi, 5G, or cellular data. That matters because customers do not authenticate in clean lab conditions. They are at home on Wi-Fi, in a branch lobby, on cellular data, or moving between networks.

Baseline telemetry: login success, ATO rates, and support volume

Before rollout, freeze a baseline for the metrics that tell you whether the migration is working: login success, account takeover rate, false blocks, recovery completion, phone-number change completion, and support calls about codes. Add event names that separate "passkey not enrolled," "carrier verification unavailable," "SIM change detected," and "manual review required." Without that separation, every drop-off looks the same, and fraud teams end up arguing with product teams over the wrong failure.

Step 1: deploy passkeys for primary customer authentication

With those prerequisites in place, move the primary sign-in path to phishing-resistant credentials first. Coverage is the reason. You want as many normal logins as possible to succeed without touching any fallback channel, because every successful passkey login reduces pressure on SMS and gives you room to replace the fallback carefully.

Enroll biometrics during high-trust moments

Enroll customers when you already trust the session: after a successful login, during mobile app setup, after an in-branch identity check, or after a completed high-assurance recovery. Do not ask every customer to enroll from a cold start. Use plain copy that explains the practical result: "Use your device screen lock next time, without a code." Avoid making the customer choose between security labels they do not understand. The UI should make the safer path feel ordinary.

A simple event model helps:

auth.passkey.prompt_shown
auth.passkey.enrolled
auth.passkey.used
auth.passkey_declined
auth.fallback_invoked

Establish clean conditional UI prompts

Conditional UI matters because aggressive prompts can hurt conversion even when the technology works. Show passkey options when the device and browser can support them, suppress them when they cannot, and always give the customer a clear next step. If a customer skips enrollment, keep the session moving but mark the account for a later prompt during a high-trust moment. The goal is not instant full adoption. The goal is fewer code-dependent logins every release.

Step 1: deploy passkeys for primary customer authentication
Step 1: deploy passkeys for primary customer authentication

Step 2: replace SMS fallback with carrier-verified SIM authentication

Once passkeys handle primary logins, close the SMS fallback window with direct carrier verification. This is where the SMS OTP replacement becomes real. Instead of generating a one-time string and sending it through a message channel, the authentication service asks the carrier network whether the customer holds the SIM associated with the phone number on the account.

Verify the SIM directly via the carrier network

With MagicalAuth®, the app can use SIM-based cryptographic authentication to confirm SIM possession without sending a code. The underlying pattern is deterministic verification for one specific fact: whether the person has the SIM for that number. It does not prove intent, and it does not stop a real customer from being manipulated into authorizing a bad action. That distinction matters for risk policy. Use the SIM check to replace the code, then keep transaction monitoring and scam controls where they belong.

A typical fallback decision can stay compact:

if passkey_success:
  allow_login
else if sim_verified and no_high_risk_change:
  allow_login_or_step_up
else:
  route_to_recovery_review

Evaluate SIM-swap risk and device signals in a single handshake

A cleaner implementation combines SIM possession, SIM-swap risk, and device-change signals in the same decision point. If the SIM verifies and there is no high-risk change, the customer gets a fast path. If the SIM verifies but the device is new, you may allow login with limited privileges or require step-up before sensitive actions. If the SIM does not verify, do not fall back to SMS. Route the customer into passkey recovery, identity verification, or manual review based on risk.

Step 3: secure step-up authentication and account recovery

Replacing codes at login only works if high-risk recovery flows also stop relying on shared text strings. New phones, lost phones, and phone-number changes are the exact moments attackers target because customers expect friction and support teams expect exceptions. Your architecture should treat these moments as first-class flows, not as edge cases bolted onto login.

Bind passkeys to verified SIMs on new phones

For a new phone, the preferred path is SIM-anchored passkey registration. SuperPasskey® binds the new passkey setup to a verified SIM, so a customer moving to a new device can recover access without reading out a text code. The customer experience should be short: confirm the number, complete the carrier-backed check, complete the device screen-lock check, and register the new passkey. Behind the scenes, your policy engine records the device change and sets any limits you require for sensitive transactions.

Establish out-of-band verification for complete device loss

Complete device loss still needs a different path. If the customer has no working device and cannot pass SIM verification, route them to identity verification or manual review. Do not recreate the SMS backdoor because the customer is frustrated. Conversion pressure is real here, but a weak fallback can undo the rest of the migration. Give support clear scripts, clear escalation thresholds, and clear language: "We cannot use a text code for this recovery. We need to verify you another way."

Troubleshooting edge cases: Wi-Fi, roaming, and carrier mismatches

Carrier verification at scale needs clear playbooks for network edge cases. Most rollout friction is diagnosable if engineering, fraud, and support teams see the same reason codes. Avoid generic failure states such as "verification failed." Split failures into network unavailable, carrier unsupported, SIM mismatch, device change, policy block, and manual review required. That turns a vague conversion problem into a fixable queue.

Handling dual-SIM devices and cellular data toggles

Dual-SIM devices need explicit handling because the account phone number may sit on one SIM while data routes through another. If verification fails, prompt the customer to choose the correct line or enable the cellular line tied to the account number. Do not ask them to retrieve a text code as the next option. If the platform works across Wi-Fi, 5G, or cellular data, make the customer instruction about the line, not about abandoning Wi-Fi. The diagnostic question is simple: does the carrier network see the SIM that owns the number?

For support, the playbook should include a small set of observable checks:

account_number_line_present
active_sim_matches_account_number
recent_sim_change_flag
device_change_flag
carrier_verification_available

Managing international roaming and unlisted virtual operators

Roaming and virtual operator cases should fail closed into a non-SMS recovery path. If carrier verification is unavailable for a customer segment, keep passkeys as the primary path and route fallback to identity verification or review. The rule needs to be consistent: unsupported carrier coverage is not a reason to send an interceptable code. It is a reason to choose a different recovery method.

Troubleshooting edge cases: Wi-Fi, roaming, and carrier mismatches
Troubleshooting edge cases: Wi-Fi, roaming, and carrier mismatches

Support teams also see tickets where the customer insists they never received the code. That ticket category should shrink as codes disappear, but during migration it is a useful signal. Track whether the customer was still on SMS, whether passkey enrollment was skipped, and whether carrier verification was attempted. If the attempted path is visible, the fix is usually product copy, carrier routing, or risk policy rather than a full authentication redesign.

What done looks like: a zero-code login architecture

When these controls are integrated, customer authentication reaches a defensible steady state. Normal logins use passkeys. Fallbacks use carrier-backed SIM checks. New-phone setup binds a new passkey to a verified SIM. Complete device loss goes to identity verification or manual review. SMS no longer sits behind every flow as the easy escape hatch.

Key metrics for a successful migration

Done does not mean every customer has a passkey. Done means code-dependent authentication keeps shrinking while login success, false blocks, account takeover rate, and support volume stay visible by cohort. Track passkey enrollment, passkey usage, carrier verification success, manual review rate, and recovery completion. If one metric improves while recovery breaks, the migration is not done.

Next steps: evaluating network authentication in production

Start with a contained cohort, instrument every branch, and refuse to add SMS back as a silent fallback. Glide ID's compliance posture includes ISO/IEC 27001, 27701, 42001, and ISO 22301 certifications valid through June 2029, along with SOC 2 Type 2 and FIDO Certified server designations. Use that kind of readiness checklist to evaluate any production authentication path: standards fit, operational telemetry, recovery behavior, and the absence of shareable codes.

Ready to replace SMS OTP? Test our secure authentication SDK today.

Frequently asked questions

What is the main benefit of an SMS OTP replacement?

The main benefit is removing the shareable code from login and recovery. SMS can be intercepted, delayed, forwarded, or socially extracted, which makes it a weak fallback even when the primary login is strong. A passkey plus carrier-verification model keeps the customer flow short while taking away the text string an attacker would ask for.

How do I handle device loss or a new phone without falling back to SMS codes?

For a new phone, bind the new passkey to a verified SIM so the customer can recover without reading out a code. For complete device loss, use identity verification or manual review. A lost-phone case should not automatically reopen SMS because that creates the same account-recovery weakness you were trying to remove.

How do I get started migrating our authentication stack?

Start by mapping every place SMS appears: login, step-up, password reset, phone-number change, new-device setup, and support-assisted recovery. Then deploy passkeys for primary login, add carrier-verified SIM authentication for fallback, and instrument the flow around login success, account takeover, false blocks, and support calls about codes.

What are the most common mistakes to avoid during an SMS OTP rollout?

The biggest mistake is replacing SMS at primary login while leaving it in recovery. Attackers follow the fallback. Other common mistakes include using one generic failure state, prompting passkey enrollment at low-trust moments, and treating deterministic SIM verification as proof of customer intent. It proves SIM possession for the number. Your risk controls still need to handle manipulation and high-risk transactions.