Skip to content

Payment risk, without the guesswork

Add one script. See what you would have declined, what it cost, and why — beside your current PSP. Start in shadow mode. Change nothing until you’re ready.

npm i @riskcogs/js

Illustrative installation · see integration notes

Follow one payment
One payment. The whole picture.
  1. Observe
  2. Understand
  3. Decide

Scroll to explore · Illustrative console screens

Example: shadow mode flags 312 payments with €18,420 in simulated avoided loss. The inspector explains a score of 0.86. Review that evidence before choosing whether to enforce a card-testing rule. These are illustrative figures, not customer results.

Three steps from page load to decision.

  1. SDK.

    Add the browser SDK to your checkout or cashier. Your backend calls the API with a private key; the browser only sees a public one.

    import { RiskCogs } from '@riskcogs/js'; const risk = await RiskCogs.init({ endpoint, publicKey });
  2. Signals.

    Device, IP and network, email, phone, BIN, geo, account history and behavior. A missing signal is marked as missing, not guessed.

    Sample datadegradation: { degraded: true, unavailableSignals: ["bin"] }
  3. Decision.

    A score from 0 to 1, a low, medium or high band, and a recommendation: allow, review or block. Your payment backend makes the final call.

    Sample datarisk_score: 0.52 level: "medium" recommendation: "review"Shadowaction: observe_only

Shadow Observe in shadow

From evidence to confidence

Watch first.
Understand why.
Then decide.

You keep your payment flow. RiskCogs makes the signals visible, so you can choose what happens next.

  1. Observe in shadow
  2. Inspect the evidence
  3. Enforce one rule at a time

Interactive illustration · no live decisions

Shadow report · last 7 daysSample data
No declinesShadow
Would-have-blocked312payments
Estimated loss avoided€18,420last 7 days
False-positive rate0.4%scored traffic
Would-have-blocked / day312 total
Recent paymentsscore / 1.00
pay_7f2a910.93Card testing · 14 attempts / 2 min
pay_8b4c830.88Device shared across accounts
pay_9d6e120.86BIN country ≠ IP country
pay_a1f8400.12Trusted returning customer

All decisions simulated. Your PSP stays in control.

Risk inspectorSample data
pay_9d6e12Shadow

€89.00 · Visa debit · just now

Risk score
0.86Elevated risk
0.00 · low1.00 · high

Score contributions

  • BIN country ≠ IP country+0.31
  • Device shared across accounts+0.22
  • 3 successful payments−0.08

Would have declined. No action taken.

Rule evaluation · Sample dataEnforce

You decide when a rule is ready.

Card testing

card.attempts_2m > 10
Example precision99.3%
Example hits · 7d142
PaymentRuleDecision
€ saved · simulated€18,420

Illustrative avoided loss, not a guarantee.

Your rules. Your thresholds. Your decision.

What’s inside the score

One score, with the evidence attached. Inspect the signals behind each payment decision.

Velocity
Attempts across card, device, IP and email.
Device & browser fingerprint
Recognise the same device across sessions.
Network
Proxy, VPN, TOR and IP reputation.
Card BIN intelligence
Card type, issuing country and prepaid status.
Behaviour
Journey and replay signals, with consent.
Customer history
Trust grows with successful payments.
Your rules
Your hard blocks and allowlists, in the same score.
Risk inspectorSample data
pay_9d6e12Shadow

€89.00 · Visa debit · just now

Risk score
0.86Elevated risk
0.00 · low1.00 · high

Score contributions

  • BIN country ≠ IP country+0.31
  • Device shared across accounts+0.22
  • 3 successful payments−0.08

Would have declined. No action taken.

Rules you can read

Every rule shows its precision on your own traffic before you turn it on.

Illustrative evaluation · last 7 days
Sample data · Illustrative rules evaluated on example traffic
NameConditionModeHits 7dPrecision
Card testingcard.attempts_2m > 10Shadow14299.3%
Shared devicedevice.accounts_7d > 6Shadow9698.0%
Country mismatchbin.country != ip.countryShadow7494.6%
Trusted customercustomer.successful > 3Enforce1,28499.8%
Known blocked devicedevice.id in blocklistEnforce38100.0%
3 shadow rules · 312 would-have-blocked paymentsYour traffic. Your thresholds.

The Shadow plan is free.
Upgrade when you need more volume or enforcement.

Start by measuring on the free Shadow plan. Upgrade when you need more volume or enforcement.

See pricing

A small integration. A clear contract.

Quickstart

From install to your first scored payment.

5-minute quickstart · illustrative
const { sessionId } = await risk.getContext();

SDKs

Use the language already in your stack.

HTTP · illustrative
POST /v1/risk-score
X-API-Key: <server key>
Content-Type: application/json

Webhooks & feedback API

Close the loop with confirmed outcomes.

Events + outcomes · illustrative
{
  "sessionId": "demo-session",
  "ip": "198.51.100.10",
  "eventAt": "2026-10-01T12:00:00Z",
  "eventType": "chargeback"
}
Explore the integration

Stop fraud before it costs you

Run RiskCogs in shadow mode on live traffic. Free. Scores only, never blocks a payment.

Start free in shadow mode