Process KYC + Fraud + Watchlist Screening Results via API

How to interpret the response

After creating an evaluation, use the response to determine how your application should route the user and continue the verification flow.

Your integration should not rely on a single field. Always evaluate decision + status + tags together when determining next steps.

Evaluation flow

RiskOS™ evaluates signals in stages:

  1. Digital Intelligence (device risk)

High-risk signals (for example, bots, emulators, or risky networks) may result in an immediate REJECT.

  1. Identity verification ( Socure Verify)

Validates identity attributes (name, DOB, SSN, address).

  1. Fraud & risk signals

Sigma Identity Fraud and Sigma Synthetic Fraud evaluate fraud and synthetic identity risk. Watchlist Screening checks against global sanctions, PEP, and adverse media lists.

If no blocking risks are found, the evaluation completes. Otherwise, it may:

Decision outcomes

Decision Status Meaning Action
ACCEPT CLOSED Passed all checks Continue onboarding
REJECT CLOSED Failed a critical check Stop or route to fallback
REVIEW ON_HOLD Additional verification required Trigger step-up (for example, DocV)

Outcome handling

ACCEPT

The user passed all checks.

JSON

{
  "decision": "ACCEPT",
  "status": "CLOSED",
  "sub_status": "Accept",
  "tags": []
}

What to do:

REVIEW

The evaluation is paused pending additional verification.

Key signals:

JSON

{
  "decision": "REVIEW",
  "status": "ON_HOLD",
  "eval_status": "evaluation_paused",
  "tags": [
    "Email Risk Step Up",
    "Phone Risk Step Up",
    "Document Verification Triggered"
  ]
}

What to do:

Common REVIEW tags

These indicate why the evaluation triggered step-up:

DOB Does Not Match Step Up, SSN Verification Step Up, First or Last Name Does Not Match Step Up, First and Last Name Possibly Reversed Step Up

Email Risk Step Up, Phone Risk Step Up, Address Risk Step Up, Input Address State or Zip Does Not Match Address On File Step Up

Sigma Synthetic Step Up, Sigma Identity Fraud Step Up, Graph Intel Step Up

Digital Intel Step Up, Watchlist Review

REJECT

The user failed a critical check.

JSON

{
  "decision": "REJECT",
  "status": "CLOSED",
  "sub_status": "Reject",
  "tags": [
    "Sigma Identity Fraud Reject"
  ]
}

What to do:

Common REJECT tags

Route the user

Use decision as the primary routing field, then use status and tags to refine the user experience.

TypeScript

switch (data.decision) {
  case "ACCEPT":
    router.push("/success");
    break;

case "REJECT":
    router.push("/review");
    break;

case "REVIEW":
    router.push("/additional-verification");
    break;
}