Step-up Verification Flows

Learn how workflows request additional proof — document scans, OTP challenges, or selfie captures — when the initial risk assessment is inconclusive.

Step-up verification is the process of triggering additional identity checks when an initial evaluation can't reach a confident decision. Instead of immediately rejecting borderline cases, the workflow pauses and requests further evidence from the user.


When step-up verification triggers

Step-up verification is triggered by workflow logic — typically a Condition step that evaluates enrichment signals and routes inconclusive cases to a verification step:

Trigger conditionStep-up actionExample
Identity score below thresholdDocument verification (DocV)"Score is 0.6 — request a government-issued ID"
Address can't be verifiedOTP verification"Send a one-time passcode to the phone on file"
Device risk increasesSelfie/liveness check"Request a biometric selfie to confirm identity"
Fraud signals detectedMultiple verifications"Request both document capture and OTP"
Inconclusive initial resultAdditional data collection"Prompt the user for missing PII"

Step-up verification methods

MethodWorkflow stepWhat it verifiesUser interaction
Document Verification (DocV)Enrichment (Predictive DocV)Government-issued ID authenticity and identity matchUser captures ID with camera
OTP VerificationOTP stepUser controls the phone number or email on fileUser enters a one-time code
Selfie / livenessEnrichment (DocV with selfie)The person presenting the ID is physically presentUser captures a selfie
Hosted FlowHosted Flow stepAny combination of PII, OTP, DocV, and consentUser completes a Socure-hosted page

How step-up fits into a workflow

flowchart TD
    EVAL["Evaluation starts"] --> ENRICH["Run enrichments"]
    ENRICH --> COND{"Confident decision?"}
    COND -->|Yes| DECIDE["Decision: ACCEPT / REJECT"]
    COND -->|No| STEPUP["Step-up: DocV / OTP / Hosted Flow"]
    STEPUP --> PAUSE["Evaluation paused"]
    PAUSE --> USER["User completes verification"]
    USER --> RESUME["Evaluation resumes"]
    RESUME --> DECIDE2["Final decision with additional signals"]
  1. The evaluation runs initial enrichments and rules.
  2. If the workflow reaches a confident decision, it returns immediately (synchronous).
  3. If the workflow cannot decide, a step-up step pauses the evaluation (asynchronous).
  4. The user completes the required verification.
  5. The evaluation resumes with the new signals and reaches a final decision.

Step-up via workflow configuration

A Decision Rules step can be configured to route inconclusive evaluations back for additional data collection. When the workflow reaches this state, your application should:

  1. Prompt the user for the required information.
  2. Send a PATCH request to /api/evaluation/{eval_id} with the new data.
  3. The workflow resumes from where it paused.

This is functionally equivalent to a step-up verification, but initiated by the decision logic rather than a conditional branch.


Related concepts