Skip to main content
Every transaction gets a score — an integer that summarizes its risk. The score drives the transaction’s status (APPROVED, IN_REVIEW, DECLINED) and the decision whether to create an alert, open a case, or require user remediation.

The formula

  • Base score: 0.
  • Each matched rule contributes its configured score_delta (typically 25–35).
  • A transaction with no matching rules scores 0.

Thresholds and statuses

Score thresholds are configured per application at Transactions → Settings. Status assignment:
Individual rule actions can override this — e.g. a rule with action: change_status → DECLINED will decline regardless of score.

Rule contributions — worked example

Suppose these rules fire on a single transaction: Total score = 30 + 35 + 35 = 100. With default thresholds (60 review, 85 decline), this transaction is DECLINED.

Action overrides

Rules can also directly set the status, bypassing score thresholds: A single rule can have multiple actions — e.g. add_score(35) + add_tags(["structuring"]) + add_note("Auto-tagged by structuring preset").

Why scores beat hard rules

A pure threshold (e.g. “decline every transaction over $100k”) triggers both legitimate high-value transactions and real risk. Combining several moderate score_delta rules and a review/decline threshold gives you:
  • Layered scoring — no single rule causes a decline; multiple signals have to agree.
  • Tunable sensitivity — raise or lower thresholds without touching rule definitions.
  • Ordering of gravity — a transaction with score 65 goes to review (worth a look); score 90 goes to decline (serious).

Configuring thresholds

From Transactions → Settings:
  • Review threshold: raise if your review queue is flooded; lower to catch more edge cases.
  • Decline threshold: raise to reduce false-positive declines; lower to lean toward aggressive blocking. Set it to the maximum value (500) to route high scores to review instead of auto-declining.
Changes apply to new transactions only — historical transactions retain their evaluation-time status.

Test mode for rules

Rules can run in TEST mode:
  • Rule evaluates against transactions but does not contribute to the score or status.
  • TransactionRuleRun records are created with is_test = true.
  • Lets you validate a rule’s selectivity without risking production declines.
Switch to ACTIVE once you’re happy with the selectivity.

Severity and legacy fields

The severity field on Transaction and TransactionAlert is nullable and legacy. New rule evaluations don’t set it. Use score as the primary risk signal.

Inspecting scores

Via API

Every transaction response includes score, rules_evaluated_count, rules_matched_count, and a rule_runs[] array:

In the console

On the transaction detail page, the Score tab shows a breakdown of each matched rule’s contribution and the final status mapping. Hover over the score badge for the threshold values used at evaluation time.

Next steps

Rules

Rule anatomy and evaluation.

Alerts

What happens when a rule fires.

Settings

Configure thresholds.