A scoring engine built for fraud ops, not fraud researchers.
Three layers: ingestion normalizes the transaction payload, signal compute fans out across device fingerprint, velocity, behavioral drift, network, identity, and history in parallel, and the decision API returns score 0–1000 with contributing_signals[] — all within 50ms. No black box. Every decision explained.
Three-layer architecture.
Every scoring call passes through ingestion, signal compute, and decision — in sequence, in parallel where possible, within a hard 50ms budget.
Ingestion
Transaction data ingested via REST or webhook
POST /v1/score with structured JSON payload. Required fields: transaction_id, amount, currency, merchant_id, card_fingerprint, device_id, ip_address. Optional fields extend signal depth. Ingestion validated and normalized in ~2ms.
Signal Engine
140+ signals computed in parallel across 6 categories
Device & browser fingerprint, velocity & frequency patterns, behavioral drift, network & geolocation, identity consistency, transaction history. Signal categories fan out to independent compute workers, results merged before inference. Typical compute: 38ms.
Decision API
Risk score 0–1000 with ALLOW / REVIEW / BLOCK label
Model inference on merged signal vector returns score, label, confidence band, and contributing_signals[] array. Response includes latency_ms for monitoring. Default thresholds: <400 ALLOW, 400–699 REVIEW, ≥700 BLOCK. Thresholds configurable per merchant on Growth+ plans.
140+ signals across six categories.
Every signal is a feature computed at score time — not a static rule. Signal weights update with feedback labels from your confirmed fraud and false positive data.
The score response explains itself.
Every response includes the contributing signals and their weights — so your ops team knows exactly why a transaction was flagged, not just that it was.
{
"transaction_id": "txn_9b4f2a1d",
"score": 742,
"label": "BLOCK",
"confidence": 0.91,
"latency_ms": 44,
"contributing_signals": [
{ "signal": "geo_velocity", "weight": 0.38, "value": "high" },
{ "signal": "device_fingerprint", "weight": 0.29, "value": "new_device" },
{ "signal": "txn_count_1h", "weight": 0.21, "value": 8 },
{ "signal": "ip_reputation", "weight": 0.12, "value": "flagged" }
],
"thresholds_applied": { "block": 700, "review": 400 }
}
Fraud feedback closes the loop.
Chargebacks and false positive labels from your ops team flow back as outcome data. Signal weights update. The model gets sharper on your transaction mix — not a generic baseline. This is not a managed service: you own the feedback data, you trigger the retraining cycle, and you control threshold configuration per merchant.
Submit outcome label
POST /v1/feedback with transaction_id and outcome: "confirmed_fraud", "false_positive", or "confirmed_legitimate". No batch size limit.
Signal weight update
Outcome labels are aggregated daily. Signals with high predictive value for your confirmed fraud patterns receive increased weight. Low-signal features are pruned to keep false positive rates low.
Model deployed silently
Updated signal weights deploy automatically. No version migration required. Score API response format is unchanged. You can compare score distributions before and after via the dashboard score history export.
Start with the API docs.
Score your first transaction in under 10 minutes. SDK for Node.js, Python, and Go included.