Skip to content
Back to Steward

Risk Scoring

Steward assigns every application a risk score and a per-factor breakdown. This guide explains where risk data appears in the API, how to read the overall score and its band, and how the two scoring strategies differ.

SurfaceHow to access it
Application listGET /api/v1/applications — each item includes a risk object
Application detailGET /api/v1/applications/{id}risk on the populated businessApplication or individualApplication
Account configurationGET /api/v1/accountriskScoreStrategy; GET/PATCH /api/v1/account/{accountId}/risk-settings — the configured factors
Webhooksrisk_score.created when a score is first calculated, risk_score.updated when it is recalculated (see the Webhooks guide)

The risk object is the RiskData schema: an overall score plus a data[] array of per-factor RiskCategory entries.

{
"risk": {
"score": 45,
"data": [
{ "category": "Jurisdiction", "title": "Jurisdiction Risk", "score": 30, "level": "medium" },
{ "category": "PEP", "title": "PEP Risk", "score": 15, "level": "high" }
]
}
}

risk.score is a number. The qualitative band — LOW, MEDIUM, HIGH, or PROHIBITED — is not stored on the response; it is derived from the number using the account’s scoring strategy (riskScoreStrategy on the account). The band thresholds differ by strategy:

BandCUMULATIVE (default)MAXIMUM
LOW024012
MEDIUM25591335
HIGH60993699
PROHIBITED≥ 100≥ 100

To turn a score into a band, take the account’s riskScoreStrategy and find the row whose lower bound the score meets or exceeds. For example, a score of 45 is MEDIUM under CUMULATIVE but HIGH under MAXIMUM — always band a score against the strategy configured for that account, never a fixed table.

Each account uses one of two strategies, exposed as riskScoreStrategy (CUMULATIVE or MAXIMUM, defaulting to CUMULATIVE).

  • CUMULATIVE — the overall score is the weighted sum of every factor’s contribution. More risk factors push the score up additively, so the score reflects the accumulation of risk across the profile.
  • MAXIMUM — each factor category is scored by its worst-case contributor (e.g. the highest-risk jurisdiction across all owners), and those category scores are summed for the overall.

Under either strategy, a single factor that is itself prohibited pushes the application into the PROHIBITED band.

Each entry in data[] is one risk factor:

FieldMeaning
categoryIdentifier for the factor (e.g. Jurisdiction, Country Risk, PEP). The set of factors depends on the strategy, so treat this as an open string, not a fixed enum.
titleHuman-readable title for the factor.
scoreThis factor’s contribution to the overall risk.score.
levelQualitative level for the factor.

Factor level vs. overall band — two different vocabularies

Section titled “Factor level vs. overall band — two different vocabularies”

These are easy to conflate, so read carefully:

  • The overall band (derived from risk.score) is uppercase and has four values: LOW, MEDIUM, HIGH, PROHIBITED.
  • A factor’s level (data[].level) is lowercase and has five values: low, medium, high, prohibited, and bonus.

Note: bonus is a risk-reducing factor (for example, a regulated entity) that lowers the overall score. It only ever appears on a factor’s level, never as an overall band.

The factors and their weightings are configured per account and returned by GET /api/v1/account/{accountId}/risk-settings. Update them with PATCH to the same endpoint. Changing risk settings or the underlying application data triggers a recalculation, delivered as a risk_score.updated webhook.