PlatformXeDocs
Get API Key

Fraud Detection Overview

Synchronous fraud verdicts, deterministic rules, and an immutable decision trail — the control plane for fraud-resistant infrastructure.

The PlatformXe Fraud Detection Engine renders synchronous risk verdicts on every action your application protects, with a clear reason chain, immutable audit trail, and tenant-controlled rule logic.

What it does

  • Decide in real timePOST /api/v1/fraud/decide returns one of allow, review, step_up, or block for any subject + action + resource tuple, in milliseconds.
  • Explain every verdict — every response includes a structured reasons[] chain so reviewers and customers can always trace why an action was flagged.
  • Reproduce any past decision — every rendered verdict is recorded in fraud_decisions (append-only, 90-day default retention) and exposed under fraud:audit.
  • Validate rules safelyshadow-decide runs a verdict without enforcement, so you can publish rules with confidence.
  • Stay deterministic — verdicts are produced by rules and signals you control, not a black-box model.

The control-plane principle

PlatformXe is the fraud control plane — the layer between your application and the action it protects. The engine never decides whether to commit a transaction, freeze an account, or send a wire. The tenant is always the decision authority of record. Every decide response carries a mandatory notice field reminding callers of this boundary; the full liability framing lives in the Fraud Detection Terms.

The verdict is informational. Your app keeps full control over what action is taken on the basis of it.

What ships in each phase

PhaseCapabilityStatus
6ADecision spine — decide, shadow-decide, decision audit, scopes, eventsLive
6BVelocity rules engine + ABAC-shape rule DSLLive
6CSanctions / PEP screening + tenant lists + multi-provider fallbackLive
6C2Per-source list fetchers (OFAC / UN / EU / UK HMT / NFIU) wired to daily refresh cronLive
6DDevice fingerprint registry + IP intelligence + 4 built-in signalsLive
6ECases workflow + auto-open on block + SLA cronLive
6FNigerian KYC: BVN, NIN, liveness, face-match, account-name + KMS-encrypted audit trailLive
6F.5Identity Resilience: country plugins, per-(country, provider) circuit breakers, provider health endpointLive
6F.5bDLQ + replay endpoints, hedging primitive, latency observations, KE / GH / ZA country pluginsLive
6GFederated rule + tenant list push for ENTERPRISE multi-org tenantsLive
6HLiability T&Cs + click-through gate (/legal/fraud-detection-terms)Live

Plan & access

The Fraud Detection Engine is a Detection Pack addon to the flat tier. It is available to both Pro and Enterprise organizations, with Enterprise unlocking federation push and commercial-screening volume tiers.

CapabilityProEnterprise
fraud:decide quota included10,000 / month100,000 / month
Detection Pack base₦40,000 / monthincluded
Per-call overage above quota₦8 / call₦5 / call

API scopes

ScopeEndpoints
fraud:decide/decide, /shadow-decide, /devices/seen
fraud:screen/screen (Phase 6C)
fraud:manage/rules, /lists (Phase 6B–6C)
fraud:audit/decisions, /decisions/:id
fraud:cases/cases (Phase 6E)

Endpoints (Phases 6A–6E — live)

MethodPathDescription
POST/api/v1/fraud/decideRender a synchronous verdict
POST/api/v1/fraud/shadow-decideDry-run a decision (no enforcement, no metering)
GET/api/v1/fraud/decisionsAudit query — list rendered decisions
GET/api/v1/fraud/decisions/:idFetch a single decision by id
GET/api/v1/fraud/rulesList tenant rules
POST/api/v1/fraud/rulesCreate a rule (always draft)
GET/api/v1/fraud/rules/:idFetch one rule
PATCH/api/v1/fraud/rules/:idUpdate a draft or shadow rule
DELETE/api/v1/fraud/rules/:idSoft-archive
POST/api/v1/fraud/rules/:id/transitionLifecycle transition
GET/api/v1/fraud/rules/:id/shadow-reportTrigger-rate metrics
POST/api/v1/fraud/screenSanctions / PEP / adverse-media / tenant-list screening
GET / POST/api/v1/fraud/listsTenant lists CRUD (allowlists / blocklists)
GET / PATCH / DELETE/api/v1/fraud/lists/:idSingle list operations
GET / POST/api/v1/fraud/lists/:id/entriesList entry CRUD (bulk add ≤ 1,000)
DELETE/api/v1/fraud/lists/:id/entries/:entryIdRemove a single entry
POST/api/v1/fraud/devices/seenRegister a device fingerprint observation
GET / POST/api/v1/fraud/casesList or open cases
GET / PATCH/api/v1/fraud/cases/:idFetch or update a case
POST/api/v1/fraud/cases/:id/transitionState-machine transition (open / triaging / escalated / resolved)
POST/api/v1/identity/verify-bvnVerify BVN + match against expected name
POST/api/v1/identity/verify-ninVerify NIN + match against expected name
POST/api/v1/identity/livenessLiveness detection on a selfie image
POST/api/v1/identity/face-matchSelfie ↔ ID-document similarity
POST/api/v1/identity/verify-accountBank-account-name verification (NIBSS-equivalent)
GET/api/v1/identity/providers/healthProvider circuit-breaker rollup (per country)

Performance contract

Operationp50p95p99
POST /v1/fraud/decide15ms60ms120ms

The hot path is Redis-only on the engine side; the durable fraud_decisions write is fanned out asynchronously via Inngest so it never blocks the verdict.

Next steps