Skip to main content

Use case

Multi-channel OTP for login authentication

Add a possession check to sign-in without rebuilding the system that already creates authentication requests. Send through Flow2FA routes, your existing providers, or both.

3D isometric illustration of a smartphone receiving a login OTP code next to a padlock

What the flow must protect

What the OTP shows

  • The person completing sign-in currently controls the phone number, WhatsApp account or mailbox on file.
  • The code was issued for this specific sign-in request and was redeemed once, within its lifetime.
  • The delivery attempts and the verification result can be reconciled against the otpId your application stored for this sign-in.

What it does not show

  • That the person is the account holder. Possession of a destination is evidence, not identity.
  • That the sign-in is not phished. OTP is not a phishing-resistant factor and can be relayed in real time.
  • That a delivery receipt equals a completed sign-in. Only a verified code and a recorded outcome show that.

Where the flow breaks

  • Slow or filtered codes

    A code that arrives after the user has given up is the same as no code. Operator filtering, throttling and long queues push latency past the point where people retry or abandon.

  • One-provider dependency

    When every login code leaves through a single provider or bind, a degraded route becomes a login outage for the markets that route serves.

  • Duplicate and stale resends

    Impatient users press resend. Without throttles and clear invalidation rules, several live codes exist at once and users enter the wrong one.

  • No link between attempt and outcome

    If send attempts live in a messaging log and sign-ins live in the application, nobody can answer why completion dropped in one country last night.

Factor and assurance decision matrix

What a sign-in factor proves is not the same as what it resists. Use this to decide which factor, or combination, fits a given login risk level.

A manually entered OTP, over any channel, is not a phishing-resistant factor. It is a possession check that can be relayed if a user is deceived into reading it out.

A production flow

  1. User submits credentials

    Your application handles the password, SSO assertion or existing first factor as it does today.

  2. Your system decides a challenge is required

    Policy or your risk engine decides whether this sign-in needs a second factor, and which destination is allowed.

  3. The request reaches Flow2FA

    Submit over the documented REST API or an SMPP v3.4 bind. REST returns an otpId, which your application stores against its own sign-in record.

  4. An approved route and channel are selected

    Routing follows the policy you configure across the channels enabled on your account — SMS, email and, where configured, WhatsApp — on Flow2FA routes, your own vendors, or both.

  5. Configured retry and fallback run

    If the first attempt is not confirmed within your window, the next approved channel is tried according to your rules.

  6. Your application verifies the code

    Verify through the API or against your own store, enforcing lifetime, single use and attempt limits.

  7. The outcome is recorded

    Your application records success, failure or expiry against its own sign-in record, keyed by the stored otpId, so delivery data and sign-in data agree.

How Flow2FA fits

  • Second factor without rebuilding the challenge path

    Keep the code that already issues sign-in requests and add a possession check across the channels enabled on your account.

  • Routing you control per market and risk level

    Choose which route goes first and which channel is allowed as fallback for a given market or risk tier.

Controls to define, and what to measure

Controls to define

These are your decisions. Flow2FA carries and verifies the code; the policy stays yours.

  • Code length, alphabet and lifetime
  • Single-use enforcement and invalidation of earlier codes
  • Attempt limits per code, per account and per IP
  • Resend throttles and cooldown windows
  • Application-level binding: only accepting an otpId your record ties to this exact sign-in session
  • Protection of phone number and email changes with a separate challenge
  • Risk-based fallback rules, including when fallback is not allowed
  • Retention period for destinations, attempt logs and message content

What to measure

Measure completed verification, not accepted API calls. Acceptance and delivery receipts are progress indicators, not outcomes.

  • Login verification completion rate, measured on verified codes rather than accepted API calls
  • First-attempt success rate before any resend or fallback
  • p50 and p95 latency from request to delivery attempt
  • Resend rate and average resends per completed sign-in
  • Completion split by country, operator and channel
  • Expiry rate: codes issued that were never redeemed

Integration options

Most teams adding login OTP to a modern web or mobile stack start with REST. Teams that already run an SMS platform with SMPP binds usually keep that path and point it at Flow2FA.

Shared integration detail

REST vs SMPP, the provider model, routing and fallback, and full channel detail are covered once, in full, on the OTP API overview. For how to weigh those choices against your own requirements, see the buyer guide.

Channel availability depends on the setup configured for each account. The current public REST reference documents SMS and email channel values, while configured Flow2FA setups may also include WhatsApp.

Put a second factor on sign-in without rewriting it

Tell us how your login flow issues challenges today and which markets are giving you trouble. We will map it to REST or SMPP and show the routing and fallback options.