01 - Understanding Risk Levels & Risk Scores
Risk levels are the customizable building block for defining your organization's risk appetite: they translate numerical risk scores into human-readable categories such as Low, Medium, or High. In the Console, risk scores range from 0 to 100, and each risk level owns a contiguous slice of that range.
How Score Intervals Work
Each risk level is defined by a score interval, and the intervals for all levels together span the full 0-100 range. To classify a score, find the interval that contains it. For example, if Medium owns the 35-56 interval, a computed risk score of 40 falls inside that interval and is therefore classified as Medium.
Note: Interval endpoints can be inclusive or exclusive depending on how the sliders are set. A hollow endpoint means that boundary value belongs to the next risk level up, not the current one. For example, if Very Low owns 0-44 with a hollow upper endpoint, a score of 43 is Very Low but a score of 44 is Low. |
Determining Risk Levels from Risk Scores
Going the other direction, locate the score interval that contains a given risk score; the level corresponding to that interval is the risk level. A risk score of 20 falls within a 19-35 interval, which corresponds to a Low risk level.
Note: When a risk score lands exactly on the upper bound of an interval, it is treated as belonging to the next interval up. A risk score of 35 is therefore classified as Medium, not Low, since 35 is the upper bound of the 19-35 Low interval. |
Adjusting Risk Levels
Go to Risk Scoring in the Console, then open the Risk Level sub-section.
Click Update Risk Levels to unlock the levels for editing.
For each level, set its risk score (out of 100) using the sliders; moving one slider automatically adjusts the adjacent one so intervals stay contiguous.
Click Save. You'll be asked for a comment describing the change, which becomes part of the audit trail.
The Risk Levels page: each level's score range, adjusted with sliders.
Note: Every save creates a new version with your comment attached, so you can review history, understand why a change was made, meet audit requirements, and roll back to a previous configuration via Version History if needed. |
Version History for Risk Levels, with each version's comment, timestamp, and author.
Renaming Risk Levels with Aliases
If your organization prefers different labels than Low/Medium/High/Very High, go to Settings > Risk Scoring and scroll to the Risk Levels Alias section. Enter an alias next to the corresponding risk level and click Update. The new label propagates across the platform. This is useful if you only want to work with three of the five levels; for example, renaming Very High to a label like Prohibited or Blocked to communicate its specific usage.
Note: Aliases are cosmetic and console-only. Over the API, Flagright always returns the underlying canonical values, such as VERY_HIGH and HIGH, regardless of what alias is displayed in the Console, so renaming a level never causes a breaking change for your integration. |
02 - Risk Score Formulas: KRS, TRS & CRA
Flagright combines several risk scores into an overall assessment. Each is produced by a configurable, weighted formula, so the underlying algorithm can be tuned to your organization's risk model.
KYC Risk Score (KRS)
KRS is the risk score of a customer's profile. It is a weighted combination of the risk scores of the customer's individual risk factors, divided by the sum of those factors' weights. KRS is calculated the moment a user is created (typically at onboarding, over the API), and it's recalculated automatically on every subsequent user event. For example, if the customer updates their name, email, or residence a few days later, KRS is recalculated to reflect the change.
Risk Factor | Example Value | Weight |
Country of residence risk | 44 | 0.5 |
Country of nationality risk | 54 | 0.3 |
Age group risk | 76 | 0.2 |
For an Indian national aged 30-40 residing in Dubai with the values above, KRS = ((44 × 0.5) + (54 × 0.3) + (76 × 0.2)) ÷ (0.5 + 0.3 + 0.2) = 53.4, placing the customer in the Medium risk category.
Transaction Risk Score (TRS)
TRS is the risk score of a given transaction or action, calculated the same way as KRS: a weighted combination of the transaction's risk factors. Once a customer starts transacting, every transaction gets its own TRS; a customer's profile shows the average TRS across all of their transactions.
Risk Factor |
Payment origin country risk |
Payment destination country risk |
Receiver merchant risk |
Payment method risk |
Receiving (payout) payment method risk |
Transaction amount risk |
Each risk factor has a corresponding weight that determines its influence on the final TRS, following the same weighted-average structure as KRS. In practice, transaction-level factors commonly include the transaction type (deposit, withdrawal, internal transfer), the currency involved, the payment method (cash is typically scored riskier than ACH, wire, or card), and the origin and destination country.
A transaction's TRS breakdown, showing each contributing risk factor, its value, weight, and risk level.
Customer Risk Assessment (CRA)
CRA is the overall, dynamic risk assessment for a customer: a composite of KRS and average TRS. By default it's a simple average of the two; a custom weighting can be configured instead (for example, 90% KRS / 10% average TRS), as long as the weights sum to 1.
CRA is best understood as a behavioral risk profile layered on top of the profile-based KRS: a customer might onboard as Medium risk based on their KYC profile, but if their ongoing transaction behavior looks increasingly risky, their average TRS pulls their CRA up toward High over time, and vice versa. This is also what connects risk scoring to transaction monitoring: a customer's current risk level can drive different rule thresholds, so riskier customers get scrutinized at lower transaction amounts (see Section 03).
Once your risk factors are configured with risk levels and weights, each factor's inputted risk level is quantified into a score (the average of that level's lower and upper bound), and CRA aggregates all of it. To see a customer's calculated CRA, KRS, and average TRS, open their profile on the Users page.
A user's profile showing CRA risk level (with lock control), KYC risk score, and average TRS risk score.
Note: Weighted risk factors let you fine-tune how much influence each individual factor has on KRS, TRS, and CRA. Whenever a user or transaction is created or updated over the API, the response already includes the resulting risk levels, scores, and a full factor-by-factor breakdown; many organizations persist that breakdown in their own systems as a record, without needing a separate call. |
03 - Risk-Based Monitoring: Connecting Risk to Rule Thresholds
Risk levels aren't just descriptive labels; they can directly change how strictly a rule is applied. Pairing a customer's or transaction's current risk level with a rule's thresholds is what Flagright calls risk-based monitoring: the riskier a customer or transaction is, the lower the amount it takes to trigger scrutiny.
Configuring Risk-Based Thresholds
When configuring a rule's parameters, the Risk-Based Thresholds tab lets you set a separate transaction amount threshold (per currency) for each risk level from Very Low through Very High, plus the action to take if the rule is hit at that level. This means the same rule can, for example, flag a Very High risk customer at a much lower transaction amount than a Very Low risk one.
Risk-based thresholds: enabling CRA-based logic, then setting a transaction amount threshold and rule action per risk level.
04 - Configuring Risk Factors
Risk factors are the individual parameters, such as Country of Nationality, transaction type, or a custom field, that feed into a user's or transaction's overall risk score. Consumer users, business users, and transactions each have their own separate default list of risk factors, and default and custom risk factors can run side by side.
Risk Scoring Configuration
Before configuring individual risk factors, decide which risk scoring layers your organization uses. Go to Settings > Risk Scoring in the Console to control this.
Algorithm type: choose the algorithm used for transaction monitoring. Heuristic is the default, and calculates TRS from your manually configured risk factors and their weights.
Risk scoring CRA: toggle CRA on or off for all users. With CRA off, KRS and TRS are still calculated and available individually, but the combined CRA is not.
Risk algorithms for CRA: choose how CRA combines KRS and average TRS: Default (a simple average of the two), Custom (your own weighting, which must sum to 1), or Moving Average (a moving average between KRS and the customer's latest CRA).
Click Update to save your selection.
Settings > Risk Scoring: algorithm type, the CRA toggle, and the CRA algorithm choice.
Default Risk Levels
Every risk factor has a default risk level: the risk level automatically assigned to any value that has not been explicitly configured. For example, if the Country of Nationality risk factor has no risk level assigned to a specific country, that country will be scored using the factor's default risk level.
Open the risk factor and click Edit.
In the Default Risk Level section, select a risk level (Very Low through Very High).
The risk score is automatically calculated as the average of that level's bounds, or you can enter your own score directly in the field next to it.
Click Save. As with any other change, this creates a new version with your comment attached.
Example: Minimizing the Default Risk Level's Impact
Some organizations don't want missing or unmapped data to carry meaningful risk on its own. There are two ways to reduce that impact, and they can be combined for a full effect:
Set the Default Risk Level to Very Low. Its score falls near the bottom of the Very Low interval, so a missing value contributes only a small amount rather than being penalized as if it were high risk.
Set the factor's Weight to 0 (see Setting Weights below). A weight of 0 means the factor has no impact on KRS or CRA at all, regardless of what value, including the default, it resolves to.
Note: Setting Weight to 0 fully neutralizes the factor for every value, not just the default; use Default Risk Level = Very Low instead if you still want known values to score normally and only want missing data treated as low risk. |
Managing Existing Risk Factors
Navigate to Risk Scoring > Risk Factors in the Console sidebar.
Choose a category (Consumer, Business, or Transaction) and click the arrow next to a factor to open its parameter settings.
Click Edit to unlock the factor for editing.
For each variable, choose the desired risk level; the score is auto-calculated as the average of that level's bounds, or you can override it manually, and the corresponding risk level updates to match.
Delete variables you no longer need using the Delete icon.
Add a new variable via the search bar below the last entry: pick a suggestion or enter your own, assign a risk level, and click Add.
Click Save to lock in your changes; you will be prompted for a comment describing the update.
A consumer risk factor (Country of Residence) with its weight, default risk level, and status.
Note: Every save creates a new version with your comment attached, giving a full audit trail. Use Version History on any risk factor to review past changes or restore a previous configuration, useful for both internal review and regulatory documentation. |
Setting Weights
Weights range from 0 (no impact) to 1 (maximum impact) and determine how much influence a factor has on the overall score; if no weight is assigned, the system defaults it to 1. The system doesn't enforce a total, but as a practical convention, most organizations make the weights across all factors in a category add up to 1: it makes the framework easier to track and reason about than, say, a total of 8.
Range-Based Factors
Some factors, like customer age, are naturally banded rather than categorical. For these, you configure numeric ranges with sliders and assign each range its own risk level, rather than picking from a fixed list of values. Each range has a lower bound and an upper bound; a value that falls exactly on a boundary belongs to the higher range. For example, if you set 0-21 as Low, 21-45 as High, and 45-80 as Medium, a user aged exactly 45 falls into the Medium range, not High, because the boundary value belongs to the range that starts at 45.
A range-type risk factor (Customer Age) with risk levels assigned to numeric bands.
Bulk-Assigning Countries
For country-based factors, you can select countries individually, or paste in a semicolon-separated list of ISO 2-letter country codes to bulk-assign many countries to a risk level at once, useful when applying a published country risk list in one pass.
Country of Nationality with risk levels assigned across the full country list.
Default Country Risk Lists
As a starting point for country risk, many organizations use the FATF grey list and black list (countries under increased monitoring or subject to a call for action, revisited at each FATF plenary meeting), alongside published indices such as the Basel AML Index. A common approach is to mark FATF grey- and black-listed countries as High or Very High risk, and to revisit the mapping periodically as these lists are updated.
Overriding Risk for Specific Countries
For countries you consider unacceptable risk outright, commonly heavily sanctioned jurisdictions, you can mark them Very High and enable the overriding risk factor option (see Section 06), so that KRS and CRA are forced to 100 whenever a customer's nationality or residence matches, regardless of any other factor.
Default and Custom Risk Factors Together
Default and custom risk factors can be activated simultaneously across Consumer Users, Business Users, and Transactions. When both are in use, the final risk score reflects the values and weights of all activated risk factors. A full breakdown of any transaction's risk score is available via the (i) button in the Transaction view; the same button on a user's page shows the KRS/CRA breakdown.
Common Risk Factors
Beyond the country, age, employment, and funds-source factors covered above, these are commonly used across the three categories:
Business | Consumer | Transaction |
Business Industry | Employment Status | Origin Country |
Registration Country | Source of Funds | Destination Country |
Company Age | VPN Usage | Currency |
Director/Shareholder Nationality | Source of Wealth Country | Merchant Category Code |
Registration Status | Wealth Tier | Travel Rule Data Completeness |
Beneficial Owner Geography | Source of Wealth Type | Blockchain Exposure Type |
High-Risk Product or Service Type | Consumer Industry | Blockchain Risk Category |
Expected Monthly Turnover | Acquisition Channel | Blockchain Risk Level |
Expected Monthly Transaction Amount | Adverse Media | Destination Wallet Network |
Merchant Category Code | Recent SAR Filing | Origin Wallet Network |
License Risk Status | PEP Status | Destination Wallet Type |
Adverse Media | Expected Monthly Transaction Amount | Origin Wallet Type |
Recent SAR Filing | Email Address Change Frequency | Card Network Provider Risk Score |
Business PEP Exposure | Phone Number Change Frequency | Card POS Entry Mode |
| Residential Address Change Frequency | Card Funding Type |
|
| Card Present Status |
|
| Card Authentication Result |
|
| Origin Payment Channel |
|
| Product Type |
|
| VPN Used |
|
| Transaction Source of Funds |
|
| Transaction Velocity |
|
| Round-Amount Transaction Frequency |
|
| Unhosted Wallet Cumulative Amount |
|
| Number of Distinct IP Addresses |
|
| Number of Distinct Devices |
|
| New Counterparty |
Bulk Uploading Risk Factor Inputs
For large numbers of inputs beyond countries, prepare a comma-separated list of values and copy it. In the Console, paste the list into the input section; Flagright automatically separates the values. Choose the risk level to apply and click Save.
For example, to bulk-assign several employment statuses as High risk, copy the following and paste it into the Value field:
Self-employed, Unemployed, Cash-intensive business, Freelancer |
After pasting, each value appears as a separate tag. Select High as the risk level and click Add, then Save.
Handling Missing Data
Note: When no data is available for a risk factor, Flagright scores that factor using the factor's configured default risk level (see Default Risk Levels above). Out of the box this defaults to Very High, but it can be changed to any risk level. For example, if the default risk level for Country of Nationality is set to Very High, a user with no recorded nationality will be scored as Very High risk for that parameter until the data is provided. |
Importing Risk Levels from Legacy Systems
If you already classify KYC or CRA risk levels in a legacy or third-party onboarding system, you can send those levels directly into Flagright via the API rather than reclassifying risk in multiple platforms. Flagright doesn't require you to abandon a framework you're already happy with. This keeps a single, holistic view of customer and transaction risk and streamlines reporting.
Decide which risk data to send: KYC Risk Level or CRA Risk Level (categorical values such as Very Low, Low, Medium, High, Very High).
Map your legacy fields to the corresponding Flagright API fields using the API documentation.
Send a POST request to the relevant endpoint (e.g. /consumer/users) with Content-Type: application/json, your API key, and a JSON body containing riskLevel (for CRA), kycRiskLevel (for KYC), the user ID, and timestamp.
If the imported level should stick and not be overwritten by Flagright's own recalculation, add the lockCraRiskLevel=true or lockKycRiskLevel=true query parameter (matching whichever field you sent) described in Section 12.
Note: On the user's profile, an externally set KYC risk level shows an "External" tag next to its badge in the KYC risk score (KRS) box. The CRA score box does not carry this tag, even when the CRA risk level was set externally in the same request. |
05 - Creating Custom Risk Factors
Beyond the default library, you can build fully custom risk factors from scratch, no coding required, by combining aggregate variables (transaction counts, sums, or change frequencies) with entity variables (countries, user attributes) into your own risk logic.
Getting Started
In the Console, go to Risk Scoring > Risk Factors and click Create or Custom Risk Factor.
Enter a clear name and description for the factor.
Set a Default Risk Level, applied when none of the factor's conditions are met.
Set a Default Risk Weight, which determines how much this factor influences the overall score.
Basic details step when creating a custom risk factor: name, description, default risk level, and default risk weight.
Example: Sanctions Screening Match Override
A common use of an overriding custom factor is a sanctions screening match. Add a Sanctions Match variable, then define two conditions: when the match is true, assign Very High risk with a weight of 1 and enable the overriding risk factor option, so that whenever this condition is met it overrides KRS and CRA outright; the transaction-side TRS is unaffected. When the match is false (the vast majority of customers), assign a score of 0, and optionally tick the option to exclude this factor from the calculation entirely for those customers, so it doesn't dilute their score. Each condition can be given a logic name, for example, "Sanctions match true", which is exactly what appears, labeled, in that customer's risk breakdown.
Example: Average Transaction Value
This example scores a consumer based on how large their typical transaction is. In Risk Factor Configuration, add one aggregate variable: field to aggregate = Transaction Amount, function = Average, entity = Sender, time period = last 90 days. Then define logic conditions comparing that average against fixed thresholds that reflect your organization's risk appetite.
90-Day Average Transaction Amount | Risk Level |
≥ $50,000 | Very High |
$20,000 - $49,999 | Medium |
$5,000 - $19,999 | Low |
< $5,000 | Very Low |
Example: Aggregate Variables for Behavioral Signals
The Average Transaction Value example above shows the core pattern: one aggregate variable, scored against fixed threshold bands. The same pattern applies to behavioral signals, just with a different field and function. For example, instead of averaging transaction amounts, you can count how many times a user has changed their email address in the last 90 days.
In Risk Factor Configuration, click Add variable and choose an aggregate variable.
Set Variable type to User, since this tracks a change to the user's own profile rather than a transaction.
Set Aggregate field to email address and Aggregate function to Count.
Set Aggregate target to Time, with Time from = 90 days ago and Time to = now.
Define logic conditions on the resulting count: more than 3 changes might be scored Very High, 2-3 Medium, and 0-1 Low. The same pattern works well for phone number or address changes.
The aggregation variable modal, where you set variable type, aggregate field, function, and time window.
Example: Cross-Border Transaction Monitoring
This example flags a transaction as high risk when it is sent to a country on your high-risk list and that country is not in the customer's declared expected transaction countries, a common pattern for detecting undisclosed cross-border activity.
Add an entity variable for the transaction's destination country.
Add an entity variable for the customer's expected (declared) transaction countries, pulled from their profile.
Set a condition: IF the destination country is on your high-risk country list AND the destination country is NOT in the customer's declared transaction countries, THEN assign High risk.
Optionally add a second condition with a lower threshold: if the destination country is high-risk but IS in the declared countries, assign Medium risk instead.
Best Practices
Combine multiple variables, aggregate and entity together, for a more complete risk picture.
Set thresholds that reflect your organization's actual risk appetite rather than generic defaults.
Layer conditions to capture nuance instead of relying on a single cutoff.
Note: When you're ready, click Create, add a descriptive comment (e.g. "Cross-border transaction monitoring"), and click Confirm to activate the factor. As with edits to existing factors, that comment is stored in the factor's version history. |
06 - Overriding & Excluding Risk Factors
Not every risk factor is relevant to every customer or transaction, and some risk indicators are severe enough that they should outweigh everything else. Flagright supports both cases.
Conditional Risk Factors
Some risk factors only matter when a specific condition is true. For example, a PEP status factor should increase the customer's score when PEP is confirmed, but shouldn't lower or affect the score at all when the customer is not a PEP. Flagright gives you two options for handling this: assign a score of 0 for that value (the factor stays in the calculation but contributes nothing), or tick the Exclude from calculation option so the factor is completely removed from the weighted average for that customer. The difference matters: a score of 0 still dilutes the average slightly because it adds a zero-weighted term, while excluding it removes it entirely.
Overriding KRS Risk Factors
Selecting the "overriding risk factor" checkbox in a KRS factor's configuration means that when its condition is met, it takes precedence over the customer's other risk factors. If multiple overriding KRS factors apply, their weighted average determines the final score and level. The resulting KRS becomes the new CRA, and the CRA is then locked.
A consumer risk factor (Country of Residence) with the Override checkbox available per value, scoped to KRS.
Overriding & Excluding TRS Risk Factors
The same override checkbox is available for TRS risk factors, but scoped to the transaction rather than the customer. An overriding TRS factor changes that transaction's TRS, and also updates the customer's CRA to match, locking it in place, the same way an overriding KRS factor does. When multiple overriding TRS factors apply to one transaction, their weighted average determines that transaction's final TRS, the same way KRS overrides combine.
A transaction risk factor (Destination Country) with the same Override checkbox, scoped to TRS.
Note: PEP status and heavily sanctioned countries (Section 04) are the two most common real-world uses of an overriding KRS factor. An overriding TRS factor works the same way, but is triggered by a transaction-level condition instead of a profile-level one; because it also updates and locks the customer's CRA, treat it with the same care as a KRS override. |
07 - Enriching Risk Inputs with User Tags
User tags are custom attributes that enrich user profiles and can feed directly into risk scoring, segmentation, and rule logic, particularly useful when a parameter isn't available from source systems but is still relevant for a risk decision (for example, tagging a user with a Financial Risk level of High, Medium, or Low).
Creating and Managing Tags
Navigate to Settings > Users > Tags.
Click Add Tag and choose an input type: String for a free-text key, or Enum for a key with a fixed list of allowed values.
Enum tags standardize entry across the team and prevent manual entry errors.
Settings > Users: status locks and a custom Enum tag (Financial Risk).
Note: Tag keys and their values cannot be edited or deleted after creation, so confirm naming and values during initial setup. |
Once a tag exists, assign it to a user by opening their profile, clicking Edit Tags, selecting the tag key, and choosing the appropriate value. Tags can also be passed in programmatically via the API. When creating or updating a consumer user, include a userTags array in the JSON body with the tag key and value:
{ "userId": "U-101", "userTags": [ { "key": "Financial Risk", "value": "High" } ] } |
Related User Settings
The same Settings > Users screen offers two related locks: KYC/User Status Lock prevents further edits to the KYC status and user status fields, and PEP Status Lock prevents further edits to PEP status, once those have been confirmed and shouldn't be casually changed. Note that updating a user's PEP status, for example, as the outcome of an alert investigation, automatically triggers a risk scoring recalculation for that customer.
08 - Approval Workflows for Risk Changes
Approval workflows add a review step to changes made to risk levels and risk factors, ensuring only authorized personnel can approve modifications before they take effect.
Accessing Approval Workflows
Navigate to Settings, then open the Risk Scoring tab.
Two sections are available: Risk Level Approval Workflow and Risk Factor Approval Workflow.
For each section, select a workflow from the Approval Workflow dropdown and click Update Workflow.
Different workflows can be assigned to risk level approval and risk factor approval independently.
Settings > Risk Scoring: Risk Level Approval and Risk Factor Approval workflow selection.
Multi-Level Workflows
Beyond a single approver, you can build multi-level approval chains. For example, a change proposed by an analyst goes first to an approver, then to a manager, before it takes effect. You pick a role for each level when building the workflow, and can attach the finished workflow specifically to risk level overrides, to risk factor changes, or to both.
How Approvals Work
Once configured, any change to risk levels or risk factors, including a manual risk level override, generates a notification for the assigned approver(s), who can approve or deny it before it takes effect. This provides oversight and control, and helps satisfy regulatory requirements for reviewed and authorized changes.
09 - Re-Running Risk Score Calculations
Risk score recalculations can be triggered manually or scheduled to run automatically, keeping Customer Risk Assessments current as your configuration or a customer's circumstances change.
Running Simulations First
Changing a risk factor's configuration only applies going forward; it doesn't retroactively rescore your entire existing user base. Before committing a broad change, use the Simulator to test it against a sample of users (or the full base) and preview the impact before anything goes live.
Choose the algorithm to simulate with: Default (a simple average of KRS and average TRS), Custom (your own weighting between the two, which must sum to 1), or Moving Average (a moving average between KRS and the customer's latest CRA).
Run the simulation to see the distribution of scores before and after your proposed change.
Drill into individual users, or filter to see who moved between risk bands, for example from Medium to High, before deciding whether to proceed.
If you're happy with the result, apply the updated risk factors directly from the simulation view.
Choosing What Gets Recalculated
KRS/CRA and TRS can be enabled independently in the Console under Settings > Risk Scoring. The key settings on this page are:
Algorithm type: determines how TRS is calculated. Heuristic is the default, and calculates TRS from your manually configured risk factors and their weights.
Risk scoring CRA toggle: turns CRA on or off for all users. With CRA off, KRS and TRS are still calculated individually, but the combined CRA is not.
Risk algorithms for CRA: Default (a simple average of KRS and average TRS), Custom (your own weighting, which must sum to 1), or Moving Average (a rolling average between KRS and the customer's latest CRA).
Batch re-run schedules: daily, weekly, or monthly automatic recalculations.
Re-run trigger settings: whether SAR filings and list changes automatically trigger recalculations for affected users.
If you don't yet have a transaction risk scoring framework in place, you can start with KRS and CRA only and add TRS later.
Manual Re-Runs
Go to Settings > Risk Scoring and use the Rerun Now button in the CRA section. This recalculates KYC Risk Scores (KRS) and Customer Risk Assessments (CRA) for the affected population; Transaction Risk Scores (TRS) are not affected and remain unchanged.
Manual re-runs are a limited resource: your organization has a re-run allowance. Use this sparingly, and only when a configuration change genuinely requires a full recalculation rather than waiting for the next scheduled batch run. If you need more re-runs than your current limit allows, contact your Customer Success Manager to request an increase.
Batch Re-Runs
You can also schedule automated re-runs that only execute when your risk configuration has actually changed, useful for factors that drift on their own over time, such as customer age, even when a customer makes no API calls.
Frequency | Behavior |
Daily | Recalculates at the start of each day (UTC) if risk factors have changed |
Weekly | Recalculates at the start of the first day of each week (UTC) if risk factors have changed |
Monthly | Recalculates at the start of the first day of each month (UTC) if risk factors have changed |
Automatic Re-Runs for Dynamic Events
Individual customers can also be automatically rescored when a blacklist or whitelist change affects them, or when a Suspicious Activity Report (SAR) is filed and your risk factors include SAR-related parameters, keeping assessments current with compliance events in real time.
Settings > Risk Scoring: re-run trigger settings for SAR filings and list changes.
Sending Risk Levels Without Auto-Recalculation
Normally, any API request that touches a user triggers a recalculation. If you're feeding risk levels in from an external onboarding or legacy system and want tighter control over exactly when Flagright recalculates, you can enable risk scoring while suppressing automatic recalculation on every API call, and instead trigger recalculation manually or on a fixed schedule, for example, quarterly.
Default Lock Expiry
You can set an organization-wide default expiry period for manual CRA overrides (for example, 365 days), so that an analyst's override automatically expires unless a different expiry, or a permanent lock, is explicitly chosen at the time of the override.
Key behaviors to understand:
Locks are respected during re-runs. If a batch or manual re-run occurs while a customer's CRA is locked, the lock is not overridden. That customer is skipped by the recalculation.
After expiry, the lock is automatically removed and the customer's CRA reverts to being calculated normally. The next triggering event recalculates their CRA using the standard formula.
Permanent locks never expire and are only removed manually by an authorized user in the Console or via the API.
Monitoring & Tracking Changes
While a re-run is processing, the Rerun button on the Settings > Risk Scoring page is disabled to prevent duplicate runs. You can monitor real-time progress on this same page: a progress indicator shows recalculation status, and the button re-enables when it finishes. Re-run allowances are limited and set by the super admin for your organization. Use them sparingly, only when a configuration change genuinely requires a full recalculation. If you need additional re-runs beyond your current limit, contact your Customer Success Manager to request an increase. To review history, click the CRA info icon on a user's profile to see both current and previous risk score calculations.
The CRA score modal, showing the formula and the full history of CRA and TRS score changes over time.
10 - Risk Data Webhooks
Any risk-relevant change that doesn't originate from an API call, such as a manual override made in the Console, an automatic lock, a recalculation triggered by a SAR filing or a list update, or a PEP status change, has no API response for your system to read it from. Webhooks close that gap by pushing the change to your own systems as it happens.
Configuring Webhooks
Go to Settings > Developers to add a webhook endpoint: a URL that your own system exposes to receive Flagright's requests.
A CRA_RISK_LEVEL_UPDATED webhook, for example, arrives as a POST request to your endpoint with a JSON body along these lines:
{ "type": "CRA_RISK_LEVEL_UPDATED", "userId": "U-101", "previousRiskLevel": "MEDIUM", "newRiskLevel": "HIGH", "previousRiskScore": 43.5, "newRiskScore": 62.0, "reason": "Manual override", "timestamp": 1731234567890 } |
Field names and values follow the same conventions as the rest of the API; consult the webhooks reference for the full payload schema and the complete list of event types.
Choosing What Triggers a Webhook
Risk level changes only, for example, a user moves from Medium to High.
Risk score changes, even when the level doesn't change, for example, a score moves from 60 to 61 and stays Medium, but you still want to know.
Any risk data change, even if neither the score nor the level changes, for example, a business's industry is updated to a different value that happens to map to the same score.
Note: Webhooks are only sent for changes that originate outside of a direct API call. When you create or update a user or transaction over the API, that same request's response already contains the up-to-date risk levels and breakdown, so Flagright doesn't also send a webhook for it. Read it from the API response instead. |