Risk Scoring
Understand the 0–100 score, the signals that feed it, and how to react to decisions.
The risk score (0–100) is computed by a deterministic, config-weighted rule engine — not a machine-learning model. Each matched risk flag adds a configurable weight to the score; the higher the total, the greater the estimated risk.
Score bands
| Score | Band | Typical action |
|---|---|---|
| 0–20 | Low | allow |
| 21–50 | Medium | allow (below review_threshold by default) |
| 51–80 | High | review if above your review_threshold |
| 81–100 | Critical | block if above your block_threshold |
The actual allow/review/block decision depends on where the score falls relative to
your own configured review_threshold and block_threshold (see
Quickstart) — the bands above are descriptive, not the
literal decision boundaries.
Signal categories
Shield evaluates several independent categories per transaction and combines their weighted flags into the final score:
IP intelligencecategoryoptionalVelocitycategoryoptionalCard BIN riskcategoryoptionalDevice fingerprintcategoryoptionalBlocklistcategoryoptionalSanctions screeningcategoryoptionalReacting to decisions
const res = await fetch('https://api.wajub.com/payments', {
method: 'POST',
headers: { Authorization: 'pk_test.xxxx', 'Content-Type': 'application/json' },
body: JSON.stringify(params),
}).then(r => r.json());
switch (res.shield?.decision) {
case 'block':
return showError('Payment declined for security reasons.');
case 'review':
return showPending('Verification in progress, you will be notified.');
default:
return redirect(res.authorization_url);
}No real-time Shield webhook yet
There is currently no dedicated webhook event for Shield decisions — react to the shield
block in the synchronous payment response, and review flagged transactions in the Dashboard
or in Konsole → Routing Log / API Logs.