> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Risk Assessment

> Composite KYB risk level (LOW/MEDIUM/HIGH) and ownership complexity scoring across registry, AML, key people, documents, and country risk. Pay-per-call $2.00.

Every KYB decision includes two composite risk signals on the registry check: `risk_level` (`LOW`, `MEDIUM`, `HIGH`) and `ownership_complexity` (`SIMPLE`, `COMPLEX`). They give your compliance team a quick directional read of the business without having to re-score each sub-check on your side.

## Inputs to `risk_level`

`risk_level` is a composite Didit computes from the checks that actually ran on the session. The main signals:

| Signal                           | Contribution                                                                                                                                                                                           |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Registry status**              | An `ACTIVE` / `AUTHORISED` company sits at the low end. `DISSOLVED`, `STRUCK_OFF`, `CLOSED`, `UNAUTHORISED` push toward high. `INACTIVE` or statuses that require manual inspection sit in the middle. |
| **Company AML screening**        | The company's AML score and hits count. Clean screens sit low; confirmed sanction or adverse-media matches push high.                                                                                  |
| **Person AML across key people** | The worst AML result across UBOs, directors, and other key people. Any confirmed sanction / PEP match pushes high.                                                                                     |
| **Document completeness**        | Whether every required document group is approved, vs missing or failed documents.                                                                                                                     |
| **Country of incorporation**     | Country risk tier, based on FATF and OFAC guidance and your dangerous-country policy.                                                                                                                  |

When `risk_level` is `HIGH`, the workflow typically routes the session to `IN_REVIEW` or `DECLINED` depending on your configuration.

<Note>
  Exact weighting evolves over time as we tune the model. Treat `risk_level` as a directional signal and combine it with your own policy before making onboarding decisions.
</Note>

## Inputs to `ownership_complexity`

`ownership_complexity` reflects how hard the ownership structure is to unpack. Simple structures have direct natural-person ownership with few UBOs and no opaque intermediaries; complex structures run through multiple corporate layers, cross-border holdings, or trust / foundation / nominee entities.

| Value     | Typical shape                                                                                    |
| --------- | ------------------------------------------------------------------------------------------------ |
| `SIMPLE`  | Direct natural-person ownership, few UBOs above threshold, no opaque corporate intermediaries    |
| `COMPLEX` | Multi-layer corporate chains, cross-border ownership, or trust / foundation / nominee structures |

`COMPLEX` doesn't automatically imply high risk — but it usually warrants enhanced due diligence.

## Configuration

Risk thresholds and related defaults are configurable per workflow in the Business Console:

* *Workflows → \[KYB workflow] → Risk → AML thresholds* — set the match-score and risk-score thresholds for approve/review/decline. See [AML risk score](/core-technology/aml-screening/aml-risk-score) and [AML match score](/core-technology/aml-screening/aml-match-score).
* *Workflows → \[KYB workflow] → Risk → UBO threshold* — ownership percentage at which someone is classified as a UBO (typically 10%, 25% or 50%).
* *Workflows → \[KYB workflow] → Risk → Document policy* — which documents are required vs optional.
* *Settings → Blocklist → Countries* — the dangerous-country list used in the country input.

## Illustrative examples

The examples below are illustrative of how different signals land — not an exact formula.

### Simple UK Ltd, clean AML

* Registry `ACTIVE`
* Company AML clean
* All key people AML clean
* Documents complete
* Country `GBR`

→ `risk_level = LOW`, `ownership_complexity = SIMPLE`. Approved.

### Multi-layer holding with a PEP UBO

* Registry `ACTIVE`
* Company AML clean
* One UBO has an `IN_REVIEW` PEP hit
* Documents complete
* Country `LUX`

→ `risk_level = MEDIUM`, `ownership_complexity = COMPLEX` (multi-layer chain). Session routes to `IN_REVIEW`.

### Sanctioned subsidiary detected

* Registry `ACTIVE`
* Company AML: confirmed sanctions match
* One director on a sanctions list

→ `risk_level = HIGH`. Session auto-declined with reason `aml_confirmed_sanction`.

## Risk color coding in the console

* 🟢 `LOW` — green badge.
* 🟡 `MEDIUM` — yellow badge.
* 🔴 `HIGH` — red badge.

`COMPLEX` ownership is shown alongside the risk badge with a small chain icon.

## Using the risk fields on your side

```typescript theme={null}
if (decision.status === 'APPROVED' && decision.risk_level === 'HIGH') {
  // Approved by the engine but still worth a manual reviewer glance
  await routeToEnhancedDueDiligence(decision);
}

if (decision.ownership_complexity === 'COMPLEX') {
  await requireExtraDocumentation(decision);
}
```

## Next steps

<CardGroup cols={3}>
  <Card title="Statuses" icon="list-check" href="/business-verification/statuses">
    Status taxonomy.
  </Card>

  <Card title="AML scoring" icon="gauge" href="/core-technology/aml-screening/overview">
    Two-score system used throughout Didit.
  </Card>

  <Card title="Response schema" icon="file-lines" href="/business-verification/response-schema">
    Where risk fields appear.
  </Card>
</CardGroup>
