Identity
With Fraud
Fraud Flow Nodes

Fraud Flow Nodes for Identity & Device

A fraud flow is a graph of nodes. Several of them read identity and device evidence and branch the flow on what they find. This page documents the four that matter for the identity bridge: identitySnapshotGuard, profileLookup, blacklistLookup and velocityCheck. For each: what it does, how you configure it, and how it branches.

These nodes run inside Fraud's flow engine, in-platform. They consume the identity evidence that was already resolved onto the evaluation (see Carrying the Snapshot) — you don't call them directly.

identitySnapshotGuard

The gate that validates the identity snapshot before the rest of the flow relies on it. It checks that input.identity is present, fresh, bound to the right subject and merchant, and decision-grade. If any check fails, the node emits a fail code and the flow branches accordingly.

What it validates

  • Presence — an identity snapshot is actually on the input.
  • Freshness — the snapshot is not expired or stale.
  • Subject binding — the snapshot belongs to the subject/session under evaluation.
  • Merchant binding — the snapshot was issued for this merchant.
  • Decision grade — the snapshot is graded for downstream decisioning.

Fail codes

CodeMeaning
snapshot_missingNo identity snapshot on the input
not_decision_gradeSnapshot is not decision-grade
merchant_mismatchSnapshot was issued for a different merchant
subject_*_mismatchSnapshot's subject binding does not match the session
expiredSnapshot is past its freshness bound
staleSnapshot is too old to rely on

Config

OptionEffect
requireDecisionGradeRequire the snapshot to be decision-grade (else not_decision_grade)
requireMatchingMerchantEnforce merchant binding (else merchant_mismatch)
requireMatchingSubjectEnforce subject binding (else subject_*_mismatch)
maxAgeSecondsFreshness window; older than this fails expired/stale

Branches — a pass continues the flow with the validated snapshot; a fail branches to the fail path carrying the specific fail code, so you can route, for example, a snapshot_missing session differently from an expired one.

profileLookup

Looks up an aggregated risk profile for one of several entity types and branches on whether a profile exists. The profile families themselves live in identity; this node reads the aggregated profile keyed for the fraud evaluation.

Config

OptionEffect
profileTypeWhich entity to look up: device, ip, identity or payment

How it reads — profiles are read from Redis under fraud:profile:* keys, keyed by the resolved entity id for the chosen profileType.

Branches

BranchWhen
foundA profile exists for the entity — continue with its aggregated history
not_foundNo profile yet — the entity is new to the profile store

blacklistLookup

Checks the session's markers against block lists and branches on a hit. It covers the highest-signal identifiers.

What it checks — IP, email, device and card markers against their respective block lists.

Branches — a hit branches to the blocked path (carrying which marker matched); a clean lookup continues the flow. Pair it with the snapshot's own ipBlacklisted / fingerprintBlacklisted / deviceTokenBlacklisted flags for defence in depth.

velocityCheck

Counts events over a rolling window, per tenant, and branches when a threshold is crossed. It catches bursts — many attempts from the same entity in a short span — that a single-session view would miss.

How it works — a tenant-scoped rolling-window counter tracks event frequency for the entity under evaluation. When the count in the window exceeds the configured limit, the node branches to its high-velocity path.

Branches — under the limit continues the flow; over the limit branches to the velocity-exceeded path so the flow can add friction or route to review.

How they fit together

A typical identity-aware fraud flow gates on identitySnapshotGuard first, so downstream nodes can trust that a valid, fresh, correctly-bound snapshot is present. It then enriches with profileLookup, screens with blacklistLookup, and rate-limits with velocityCheck — each branch feeding the decision that Fraud ultimately emits (allow / force_3d / review / block).

Next steps