---
updatedAt: 2026-09-23T10:06:38.000Z
agentTools:
  projectIndex: https://docs.sumsub.com/llms.txt
---

# Applicant risk scoring

Make informed decisions based on multiple factors and their weight.

Applicant risk scoring assesses applicants and their activity in real-time based on the applicant events (transactions, sign-up, login, and so on) received via the API. Each event is screened through multiple factors, each weighted differently depending on its importance and <Anchor target="_blank" href="doc:risk-level-assignment">dedicated threshold (level)</Anchor>.

Such a flexible approach allows for the creation of customizable risk profiles, adapting dynamically to user-specific criteria and guaranteeing accurate and timely risk assessment.

The multi-factor risk score shows how likely a user is to engage in suspicious or fraudulent behavior. It might be calculated based on multiple factors, signals received from any of the Sumsub features or datapoints provided by the customer, such as:

* Onboarding score performed by pre-checks (email, phone, social data).
* Applicant factors such as location, age, name.
* Payment method check results.
* Number of payment accounts used.
* Usage of [untrusted and risky devices.](https://docs.sumsub.com/sumsub/docs/device-intelligence)
* Source of Income based on questionnaire (SoI/SoF).
* Transaction risk score.
* Shareholders data for companies and many more.

The score helps companies decide whether to investigate their users further, apply additional checks, or reject them.<br />You can use the risk factors to create a custom risk matrix and categorize the detected risks as low, medium, or high to help companies prioritize them.

# How applicant risk scoring works

Ongoing risk assessment utilizes risk factors represented by scoring transaction tags. You can manage tags to customise risk assesment:

* Create a tag for any risk factor related to your applicants.
* Specify the weight for it.
* Decide whether to include it in the total score.
* View the rules it was used in. Adding tags to the rules allows Sumsub to summarize their weights and produce the final risk score associated with an applicant as a separate output tag.
* Add dependent tags.
* Edit and remove tags from applicant scoring.
* Use risk scores to define an applicant's risk level.

<Callout icon="📘" theme="info">
  ### Note

  The transaction tags differ from the [applicant tags](https://docs.sumsub.com/sumsub/docs/review-results-in-applicant-profile#assign-tags) as they are associated particularly with transactions versus that of applicant tags, which are always associated with your applicants. The applicant tags can be set up on the  [Tags](https://cockpit.sumsub.com/checkus#/sdkIntegrations/globalSettings/general/tags) page in the Dashboard.
</Callout>

The table below shows tag examples that you can use to express risk factors:

<HTMLBlock>{`
<style>
    .p-image2 {
        margin: 0;
        display: flex;
        font-size: 12px;
    }

    .p-2 {
        margin-top: 10px;
        font-size: 14px;
    }

    .tag-blue-t {
        display: inline-block;
        align-items: center;
        padding: 2px 8px;
        gap: 8px;
        height: 20px;
        background: #d6eaff;
        border-radius: 4px;
        font-weight: 500;
        font-size: 12px;
        line-height: 16px;
        color: #1542ab;
        margin-top: 10px;
        text-wrap: nowrap;
    }

    .tag-label-s {
        display: inline-block;
        align-items: center;
        padding: 2px 4px;
        gap: 4px;
        height: 16px;
        background: #edeff2;
        border-radius: 2px;
        font-weight: 500;
        font-size: 10px;
        line-height: 12px;
        color: #373d4d;
        margin-top: 0px;
    }

    .svg-image {
        margin: 0 0 0px;
        /* Center horizontally */
        display: block;
        /* Adjust display property */
        width: 100%;
        border-radius: 4px;
        margin-top: 10px;
        margin-bottom: 20px;
        /*      box-shadow: 0px 4px 14px rgba(0, 0, 0, 0.15); */
    }

    .line {
        border-top: 1px solid rgb(0 0 0 / 10%);
        margin-bottom: 32px !important;
        margin-top: 20px !important;
    }

    .footer-container {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        gap: 0px;
        margin-bottom: 0px;
        padding-top: 0px;
        max-width: 500px;
    }

    .footer-container h3 {
        font-size: 14px;
    }

    .footer-container basic {
        font-size: 12px;
        font-weight: 500;
        color: #5f666c;
        line-height: 24px;
    }

    .footer-container2 {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        gap: 0px;
        margin-bottom: 0px;
        padding-top: 0px;
        max-width: 800px;
    }

    .footer-container2 h3 {
        font-size: 14px;
    }

    .font-small-header {
        font-size: 14px;
        font-weight: 600;
    }

    --- .table-text {
        margin: 24px 0;
        border: 1px solid #e5e5e5;
        border-radius: 8px;
        overflow: hidden;
    }

    .wide-column {
        min-width: 180px;
    }

    table {
        border-collapse: collapse;
        width: 100%;
    }

    th {
        background-color: #f6f7f9;
        border: 1px solid #e5e5e5;
        padding: 8px;
        font-weight: bold;
        text-align: left;
    }

    td {
        border: 1px solid #e5e5e5;
        padding: 8px;
        text-align: left;
    }

    tr:nth-child(odd) {
        background-color: #fff;
    }

    tr:nth-child(even) {
        background-color: #f8f8f8;
    }

    .table-text h2 {
        font-size: 14px;
        margin: 0px;
        color: #384248;
    }

    .table-text p {
        font-size: 14px;
        margin: 0;
        color: #414552;
    }

    .table-text a {
        color: #377cf7;
        text-decoration: underline;
    }

    .table-text tr:first-child {
        margin-bottom: 20px;
    }

    .two-columns-container {
        display: flex;
        flex-wrap: wrap;
    }

    .two-columns {
        width: 50%;
        box-sizing: border-box;
        padding: 0 20px;
    }

    .two-columns .rdmd-table {
        width: 100%;
    }

    .two-columns.with-video iframe {
        float: right;
    }

    @media (max-width: 1024px) {
        .two-columns .info {
            width: 100%;
        }

        .two-columns {
            width: 100%;
        }

        .two-columns.with-video iframe {
            float: left;
        }
    }

    @media (max-width: 768px) {
        .two-columns {
            padding: 0;
        }
    }

    .tag-green {
        display: inline-block;
        flex-direction: row;
        align-items: center;
        padding: 1px 4px;
        gap: 0px;
        background: #d0f1e8;
        border-radius: 4px;
        font-weight: 500;
        font-size: 10px;
        line-height: 16px;
        color: #115242;
        margin-top: 4px;
    }
    .tag-red {
        display: inline-block;
        flex-direction: row;
        align-items: center;
        padding: 1px 4px;
        gap: 0px;
        background: #ffd2ce;
        border-radius: 4px;
        font-weight: 500;
        font-size: 12px;
        line-height: 16px;
        color: #5e0214;
        margin-top: 4px;
    }
    .tag-purple {
        display: inline-block;
        flex-direction: row;
        align-items: center;
        padding: 1px 4px;
        gap: 0px;
        background: #eedbff;
        border-radius: 4px;
        font-weight: 500;
        font-size: 12px;
        line-height: 16px;
        color: #250960;
        margin-top: 4px;
    }
    .tag-grey {
        display: inline-block;
        flex-direction: row;
        align-items: center;
        padding: 1px 4px;
        gap: 0px;
        background: #edeff2;
        border-radius: 4px;
        font-weight: 500;
        font-size: 10px;
        line-height: 16px;
        color: #393f4e;
        margin-top: 4px;
        text-wrap: nowrap;
    }
    .tag-yellow {
        display: inline-block;
        flex-direction: row;
        align-items: center;
        padding: 1px 4px;
        gap: 0px;
        background: #fff4c6;
        border-radius: 4px;
        font-weight: 500;
        font-size: 10px;
        line-height: 16px;
        color: #613400;
        margin-top: 4px;
        text-wrap: nowrap;
    }
</style>

<div class="rdmd-table">
    <div class="rdmd-table-inner">
        <div class="table-text">
            <table>
                <tr>
                    <th>
                        <p>Sample factor</p>
                    </th>
                    <th>
                        <p>Description</p>
                    </th>
                </tr>
                <tbody>
                    <tr>
                        <td>
                            <p>Onboarding score</p>
                        </td>
                        <td>
                            <p>Onboarding behavior signals.</p>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <p>Geo factor</p>
                        </td>
                        <td>
                            <p>IP-based applicant residence detection results.</p>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <p>Payment risk factor</p>
                        </td>
                        <td>
                            <ul>
                                <li>Payment method check results</li>
                                <li>Risky payment method</li>
                                <li>Payment accounts</li>
                                <li>Number of payment accounts used by the applicant</li>
                            </ul>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <p>Device</p>
                        </td>
                        <td>
                            <p>Device factor.</p>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <p>SoI</p>
                        </td>
                        <td>
                            <p>Source of income.</p>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <p>Txn risk</p>
                        </td>
                        <td>
                            <p>Transactional factor.</p>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>
`}</HTMLBlock>

# Set up applicant risk scoring

To allow Sumsub to calculate the risk score, you need to enable it for a specific level. If you have never used applicant risk scoring before, contact your dedicated Customer Success Manager at <csm@sumsub.com>.

## Step 1: Enable applicant risk scoring

To set up applicant risk scoring:

1. In the Dashboard, go to the [Verification levels](https://cockpit.sumsub.com/checkus/sdkIntegrations/levels/individual) section and open the level of your interest.
2. Navigate to **Configurations** and open **Advanced settings**.
3. Check the **Track Verification sessions** box.

## Step 2: Create tags

You can create a new tag from the [Applicant risk scoring](https://cockpit.sumsub.com/checkus/kyt/settings/applicantScoring) page by clicking **Add tag** and selecting **Create new tag** option.

Alternatively, you can do it directly on the [Tags](https://cockpit.sumsub.com/checkus/kyt/settings/tags) page and then add new tags on the **Applicant scoring** page.

After you open **Tags** page,  perform the following:

1. Сlick **Add tag**.
2. Enter the tag name and choose the bar color.
3. Save your changes.

## Step 3: Set up applicant scoring

After enabling this feature, configure its settings:

1. In the Dashboard, navigate to the **Transactions and travel rule** section and open **Settings**.
2. On the **Applicant scoring** page, select the tag you want to adjust.
3. Select the **Include in total score** box to add the selected tag score to the total risk score.
4. Adjust the tag weight (the % of the rule score applied to the tag based on your risk model).
5. If needed, add a dependent tag by clicking on the tag icon on the right.

## Step 4 \[Optional]: Set up Associated parties scoring

You can configure the **Associated parties&#x20;**&#x73;coring feature to assess risk scoring weights for company-related applicant roles, such as UBOs and representatives. The resulting beneficiary assessment can be used to complement and recalculate the company risk score — beneficiary values are added to the company risk scoring weight.<br /><br />To enable and set up associated parties scoring:

1. On the **Applicant scoring** page, navigate to the **Associated parties** section.
2. Select **Add new structure member** and choose the type (**Director**, **UBO**, and so on) to add a new associated party type for scoring.&#x20;
3. Add multiple associated party types if needed.&#x20;
4. Set the weight for each associated party type. To remove the type from scoring, click the remove icon next to it.
5. In the **Scoring logic** column, select the function that defines how the individual member scores of the selected role are combined into that role's score. The following options are available:
   | Score   | Calculation method            |
   | ------- | ----------------------------- |
   | Max     | Use the highest member score. |
   | Average | Average all member scores.    |
   | Sum     | Add up to all member scores.  |
6. For UBO and Shareholder roles, optionally select **Apply ownership %** to weight each member's score by their ownership share before the function is applied. When enabled, each member's score is multiplied by that member's ownership percentage; a member without a share is counted with a multiplier of 1. <br /><br />A newly added structure member defaults to the **Max&#x20;**&#x66;unction, and Apply ownership % is pre-selected for UBO and Shareholder roles.
7. Save your changes.

<Callout icon="✅" theme="okay">
  ### Tip

  - The **total associated party role score** for the company is calculated as the sum of all associated party risk scores multiplied by their configured weights, applicable ownership percentage and member scores. Based on this, applicant risk scoring **should be enabled and configured for both** verification levels used for associated party verification and the related company.
  - Use the `has(applicant.allMemberRoles, 'roleName')` expression when configuring a rule condition for associated parties risk scoring.
</Callout>

## Step 5: Add tags to rules

To add a tag to a rule:

1. [Create a rule](https://docs.sumsub.com/sumsub/docs/create-custom-rules) and set up its [condition](https://docs.sumsub.com/sumsub/docs/create-custom-rules#build-conditions).
2. In the rule actions, navigate to **Add tags to the transaction** and add the necessary scoring tag to the rule.
3. Set up the score for each rule, which will be taken into the calculation of each risk factor.

### Grouping tags

A grouping tag with dependent tags added to this parent tag calculates its score from those dependent tags.&#x20;

* You cannot add a dependent tag to a tag that already has rules attached to it. Remove or unlink the rules first if you want to add dependent tags to it.
* You cannot add a tag to a rule if it already has dependent tags. On the rule edit page, such tags are disabled in the tag selector, with a tooltip explaining why.

A tag either holds its own rules, or has dependent tags — not both.

If your account has tags configured before this update, the <Anchor target="_blank" href="https://cockpit.sumsub.com/checkus/kyt/settings/applicantScoring">Applicant Scoring</Anchor> page shows a warning banner whenever a tag with dependent tags still has rules attached to it.&#x20;

1. Open the tooltip on the affected tag to see the details.
2. Click **Unlink** inside the tooltip to detach the rule from the tag in one click. Unlinking does not delete the rules — they stay active, just no longer attached to that tag.

## Step 6: Assign risk levels

Risk levels allow you to group applicants and apply various policies, both within Sumsub and on your own platform. To learn more about risk levels, refer to <Anchor target="_blank" href="doc:risk-level-assignment">this article.</Anchor>&#x20;

# Review applicant risk scoring results

To view total score, do the following:

1. Navigate to the **Applicants** page and open **Individuals** or **Companies** tab.
2. Select the applicant of your interest and go to the **Overview** section.

<Image src="https://files.readme.io/1ba099d750d18c6f8a242e6df9df8b397962aad6de5b962c0e4361b0712f83ca-Screenshot_2026-04-30_at_14.04.00.png" align="center" framed={true} />

Alternatively, navigate to the **Transactions** section of the applicant profile and check the **Risk score breakdown** block.

Along with the total risk score, we display **Additional risk indicators** — supplementary risk signals detected for the applicant. These indicators provide extra context for manual review but do not directly contribute to the total risk score and dedicated risk level.

For example, they may include antifraud scores for the applicant’s IP address, device, phone, or email, as well as scores from other verification or onboarding checks.

To see how Sumsub calculated a specific score, click the info icon next to the corresponding risk factor or additional risk indicator.

<Image src="https://files.readme.io/cd6911c1f11432598049adceeaec63f7c1c769ce730deab0e6b33c14e2c40253-Screenshot_2026-04-30_at_14.09.00.png" align="center" framed={true} />

Each time the rule containing the scoring tag is triggered, the system updates the total risk score in the applicant profile as per the most recent transaction.

To get the scoring results, use [this API method](https://docs.sumsub.com/sumsub/reference/get-transaction#root-variables) and see the `scoringResult` object. Response example:

```json
{
  "id": "69f0721264ade593a3b99500",
  "applicantId": "69f0759064ade593a3b9923e",
  "counterpartyApplicantId": "69f0721264ade593a3bf40e",
  "scope": "events",
  "externalUserId": "selfcopied-8789g6d-1565-4004-bb75-acd4261bd014",
  "clientId": "46478hg58950d80774gj7793",
  "data": {
    "txnId": "03e47b09-f77e-4da8-9b58-4925e4ddadca",
    "txnDate": "2026-04-28 08:38:42+0000",
    "applicant": {
      "externalUserId": "87496a6d-1565-4004-ad5780-acd4261bd014",
      "fullName": "Rose Doe",
      "fullNameEn": "Rose Doe",
      "type": "individual",
      "paymentMethod": {
        "type": "card",
        "accountId": "5555 7700 4437 8890"
      }
    },
    "counterparty": {
      "externalUserId": "87496a6d-1565-4004-ad5780-acd4261bd014",
      "fullName": "Rose Doe",
      "fullNameEn": "Rose Doe",
      "type": "individual"
    },
    "type": "finance",
    "info": {
      "type": "deposit",
      "direction": "in",
      "amount": 10500,
      "currencyCode": "EUR",
      "currencyType": "fiat",
      "amountInDefaultCurrency": 10500,
      "defaultCurrencyCode": "EUR",
      "paymentDetails": "Deposit"
    }
  },
  "score": 20,
  "review": {
    "reviewId": "dlLhj",
    "attemptId": "FqpCH",
    "attemptCnt": 5,
    "elapsedSincePendingMs": 78,
    "elapsedSinceQueuedMs": 78,
    "createDate": "2026-04-28 08:44:07+0000",
    "startDate": "2026-04-28 08:44:07+0000",
    "reviewStatus": "awaitingUser",
    "confirmed": false
  },
  "createdAt": "2026-04-28 08:38:42+0000",
  "modifiedAt": "2026-04-28 08:38:42+0000",
  "scoringResult": {
    "score": 20,
    "dryScore": 0,
    "matchedRules": [
      {
        "id": "69f0721264ade593a3b7724f",
        "name": "high-dep-cc-req-EhEX",
        "revision": 1,
        "title": "High Deposit CC Request",
        "score": 20,
        "dryRun": false,
        "action": "awaitUser",
        "stage": "eval",
        "stopOnMatch": false
      }
    ],
    "action": "awaitUser",
    "ruleCnt": 1,
    "dryRunRuleCnt": 0,
    "applicantActions": [
      {
        "applicantActionId": "69f03857dace58ee8d8280ae",
        "externalActionId": "paymentMethod-2e09caa0-6fa0-476d-ad49-656781bfd686"
      },
      {
        "applicantActionId": "69f0729af84b7e89d09826d8",
        "externalActionId": "paymentMethod-02ff772b-b1bd-49b1-a5aa-65bd31855d6j"
      }
    ]
  },
  "txnInactive": false
}
```

# Change applicant risk level manually

To manage applicant risk-scoring results, you need the `changeApplicantRiskLevel` permission.

To change applicant risk level:

1. Navigate to the **Applicants** page and open the **Individuals** or **Companies** tab.
2. Select the applicant of your interest and go to the **Transactions** section.
3. Click **Override&#x20;**&#x61;nd select the risk level from the drawer.&#x20;
4. Select the **Lock level** checkbox or click the lock icon to prevent the level from changing for the defined period. To resume automated scoring, click the lock icon again.
5. Add a note explaining the reason for changes.

<Callout icon="⚠️" theme="warn">
  ### Important

  - Locking a level prevents it from changing automatically, though the underlying risk score will still be recalculated.
  - If the level is locked, any changes made to risk level thresholds on the <Anchor target="_blank" href="doc:risk-level-assignment">Applicant Risk Scoring settings</Anchor> page also do not automatically update previously scored applicants. Their risk levels are only recalculated when a new scoring event occurs for that specific applicant.&#x20;
</Callout>