Engine live — scoring in real time

Score every action.
Rank up your defense.

One API call blends device signals, behavior, IP intelligence, and a live fraud-ring graph into a 0–100 score across 17 named fraud vectors — carding, promo abuse, BNPL, account takeover, and more. Send more traffic, unlock a cheaper rank.

17
Fraud vectors
5
Signals per score
Bronze→Platinum
Volume rank ladder
/v1/score — live feed
00:00:00.000
▸ Session opened — project: prod-01
▸ Blend: device + behavior + IP + graph + AI review — status: ready
00:00:00.000
94
BLOCK
00:00:00.000
87
BLOCK
00:00:00.000
72
REVIEW
00:00:00.000
91
BLOCK
▸
●2+ signals firing together trigger a combo multiplier
Engine capabilities

One score.
Five signal families.

Device telemetry, behavioral biometrics, IP intelligence, relationship-graph insights, and AI contextual review combine into a single fraud score — and a combo multiplier rewards catching multiple red flags at once.

Live score simulatorInteractive

Try the combo multiplier.

Toggle signals to watch the score move. Fire two HIGH/CRITICAL signals together and the accumulated score gets multiplied ×1.2 — the same synergy bonus the live engine applies.

signals.device.rooted_or_emulatorHIGH+30

Rooted/jailbroken device, emulator, or app tampering detected

signals.ip.vpn_proxy_or_torMEDIUM+25

VPN, public proxy, or Tor exit node behind this session

signals.graph.fraud_ring_proximityCRITICAL+40

Short graph distance to a confirmed fraud node or ring

signals.behavior.bot_typing_patternLOW+20

Non-human typing velocity or paste-only form completion

Fraud Score
60/100
REVIEW
IntegrationOne endpoint

One API call.

Declare the fraud vector, send the session, get a decision. An unrecognized action_type or a missing field is rejected before scoring even runs.

score.ts
const res = await 
fetch('/v1/score', {
method: 'POST',
body: JSON.stringify({
session_id: 'sess_8f3k...',
action_type: 'carding_fraud',
user_data: { card_hash, card_bin, billing_country }
})
});

// Response
{ decision: 'BLOCK',
fraud_score: 94,
risk_factors: [...], reason: '...' }
Fraud vector catalog17 closed codes

Not a generic bucket — 17 named vectors.

Every integration declares exactly which fraud vector it's guarding — each with its own required business fields, cross-checked against device, network, and graph signals on every single request.

carding_fraudpromo_abusebnpl_fraudchargeback_abuseseller_fraudmoney_mulecod_non_payment_abusereturn_refund_abuseloyalty_points_frauddevice_farmsession_hijackbot_farmingaccount_takeovercontent_spamreferral_fraudpassword_reset_abuseotp_bruteforce
Under the hoodEvery request

Built for the whole flow.

~50Weighted risk rulesEvaluated per request
Sub-1sSLA targetTracked per request
17Fraud vectorsClosed action_type set
100%Sessions encryptedEnd-to-end, per project
Multi-tenant isolationRelationship graphFail-open IP intelAI escalationAudit incident logEnd-to-end encryptionBlocklist fast path
Engine pipeline

Five steps from trigger
to logged decision.

A contract-first integration: the SDK collects and encrypts, your backend declares the fraud vector, the engine detects and decides — every step of the way is auditable.

Step 01

Collect & Encrypt

The SDK (iOS, Android, or web) captures a device fingerprint — rooted/emulator flags, sensor variance, canvas hash, GPS — and encrypts it end-to-end with your project's own keypair before it ever leaves the device.

>FDS.collect() → encrypted payload
Step 02

Open Session

The encrypted fingerprint is sent to open a session. FDS returns a session_id your backend reuses for every action that user takes next.

>POST /v1/session → session_id
Step 03

Declare & Score

On checkout, login, a loan application, or any meaningful action, your backend calls the scoring endpoint with the session_id, one of 17 fraud vector codes, and that vector's required fields. Anything malformed is rejected before scoring runs.

>POST /v1/score → action_type: 'bnpl_fraud'
Step 04

Detect

A blocklist match blocks instantly. Otherwise the graph and IP-intelligence lookups run in parallel (fail-open if either is slow), ~50 weighted rules produce a running score, and genuinely ambiguous mid-range scores get an extra AI contextual review under a strict time budget.

>graph + IP + rules → score: 0–100
Step 05

Decide & Log

You get a decision (APPROVE / REVIEW / BLOCK), the risk factors that fired, and a plain-language reason — plus a flag for whether the decision used complete data. Every decision is written to the audit incident log in the background.

>decision: BLOCK · score: 94 · reason: '...'
Rank ladder pricing

Send more traffic.
Pay less per event.

Prepaid, per-event pricing in IDR — no subscription, no contract. Your trailing 30-day volume decides your rank; every rank up drops your rate, for high-value and low-value events alike.

Drag to simulate your monthly volume250Krequests / mo
Silver
Low-value eventsRp 20 / event
High-value eventsRp 30 / event
250K more requests to gold
Save 25% on every event
Bronze
0 – 100,000 req/mo
Rp 25low-value
Rp 35high-value
Silver
> 100,000 req/mo
Rp 20low-value
Rp 30high-value
Gold
> 500,000 req/mo
Rp 15low-value
Rp 25high-value
Platinum
> 2,500,000 req/mo
Rp 10low-value
Rp 20high-value
Rp 50.000
Free credit per project

Every new project starts with an automatic onboarding bonus — no card required. That's enough for ~1,500 fraud checks at Bronze tier before you ever top up.

Claim your credit
●5 signal families per call●17 fraud vectors covered●No subscription, no contract

FAQ

What counts as a scored request?

Every call to the scoring endpoint counts as one event, priced by your project's current 30-day volume tier and whether the fraud vector is high-value (payment-adjacent) or low-value (identity/session).

Can a merchant under-declare an event to pay less?

No — if the business data is clearly payment-shaped (a card hash, voucher code, purchase amount, or disbursement account), the event is force-classified high-value regardless of the declared action_type.

Is my usage tier enforced automatically today?

Tier pricing, your prepaid balance, and every billing record are fully tracked and visible in the console right now. Automatic balance deduction and hard cutoff at the scoring endpoint are on our roadmap, not live yet.

Merchant console

Everything you'd
ask your fraud ops team.

Scoring is the API. Understanding why it decided what it decided lives here — one console per merchant, scoped per project, with your rank and billing always in view.

Multi-project isolation

One merchant account, many projects — each with its own API key, encryption keypair, prepaid balance, and blocklist. Nothing crosses project lines.

Blocklist management

Add a bad IP, email, or phone number once. Every future match is an instant block, skipping the rest of the pipeline entirely.

Incident audit trail

Every scored decision — request and response — is searchable history, so fraud ops can reconstruct exactly why any call resolved the way it did.

Live fraud dashboard

Volume trend, fraud rate, false-positive rate, and which rules are firing most — streamed in real time to the console, not a monthly export.

console.antifraud.id / prod-01Illustrative
Fraud rate2.1%
False-positive rate0.4%
Scoring precision97.8%
SLA met (sub-1s)99.1%
Top triggering rules — last 7 days
graph.fraud_ring_proximity
78%
ip.vpn_proxy_or_tor
61%
device.rooted_or_emulator
44%
Get started

Start at Bronze.
Rank up from there.

Every new project opens with a Rp 50,000 onboarding bonus — enough for ~1,500 fraud checks at Bronze tier. No card, no contract, no subscription. Just a scoring endpoint and a ladder to climb.