ScreeningReason
Why a screening policy reached its verdict: which layer matched, and what it matched on in the vendor's own vocabulary.
Only provider and matched are always present. The rest depend on the
vendor and on which leaf actually fired — a floor match on a Chainalysis
cluster carries a category and no riskType.
The vendor whose response produced this verdict.
trm-wallet-screening, chainalysis-address-screening, dynamic-sanctions-screening Which layer decided. floor is the non-configurable sanctions
baseline, address an allow/deny list entry, customer one of the
environment's own rules, default the terminal allow. On this event
it is always customer or address; a floor block emits
wallet.sanctions.blocked instead.
floor, address, customer, default The policy generation that produced this verdict. Scoped to one screening moment, so two verdicts in the same environment can legitimately carry different revisions.
The matched rule, verbatim as evaluated. Present only when matched
is customer: the floor and the terminal allow are generated from
code, so there is nothing stable to point at. Deliberately untyped —
nothing routes on its internal shape, and it is carried for the audit
record.
The vendor's category string, verbatim, in the vendor's own casing.
128TRM only. OWNERSHIP, COUNTERPARTY or INDIRECT.
64TRM only. The numeric risk score the matched signal carried.
Chainalysis only. The risk level the matched signal carried.
32Human-readable rendering of what matched, for display and logs.
DISPLAY ONLY AND NON-CONTRACTUAL: the wording may change in any
release. Do not parse it — route on category, provider and
matched instead.
256