Every TDS Risk response includes an indicators array containing reason codes that explain exactly why a number scored the way it did. Not just a score — a full picture.
Unlike a simple pass/fail, TDS Risk returns the full set of carrier signals that drove the result. Each code is returned in the indicators array alongside your trustScore or KYC match fields.
Know exactly why a number scored the way it did — not just what score it received.
Use codes to build conditional rules in your own risk engine — e.g. block on D1, review on LS.
Every code is preserved in your immutable audit record — timestamped and signed.
Use the colour-coded tiers below to wire reason codes directly into your risk engine. Each tier maps to a concrete action.
riskLevel: 1phoneRisk: trueisLostStolen: trueD1CF
High-confidence fraud or account takeover signals. Reject the submission before any downstream process runs — do not trigger a credit check, KYC flow, or account creation.
riskLevel: 2LSINLAUV
Elevated risk — not an automatic block, but worth a second look. Route to manual review, add step-up verification, or apply a lower credit limit before proceeding.
lineType: fixedvoiplineType: nonfixedvoipRLNMPNTF
High-risk, non-mobile, toll-free or inactive numbers. These submissions are unlikely to represent genuine customers — deprioritise or discard before further processing.
riskLevel: 4callDivert: falsephoneRisk: falselineType: mobileverified: true
No recent SIM swap, no call forwarding, a real mobile line and an identity that matches the number. Use these signals to reduce friction for genuine customers — fewer step-up checks, faster journeys.
PTWSNDCUTRDTNCXBCN
Informational codes: a ported number, missing carrier or identity data, a timeout. Log them for context and combine them with the signals above rather than acting on them alone.