Keep the evidence together
One payment, its contributing signals and the rules it matched.
RiskCogs / Product
Analysts get rules, replays and reports. Developers get one API, SDKs and webhooks. Same data, same project.
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.
One payment, its contributing signals and the rules it matched.
Review shared devices, accounts and network context in the same investigation.
Keep observing until the trade-off makes sense for your business.
pay_7f2a910.93Card testing · 14 attempts / 2 minpay_8b4c830.88Device seen on 6 accountspay_9d6e120.86BIN country ≠ IP countrypay_a1f8400.12Trusted returning customerAll decisions simulated. Your PSP stays in control.
Shadow report
Review a weekly would-have-blocked report alongside payment value and review cost. Tune the rules without changing live payment decisions.
Illustrative project data, not measured results. No payments in this report were blocked.
Risk inspector
Open one payment to see what contributed to its score. Follow connections between cards, devices, IPs and accounts without losing the original context.
The same score and reason identifiers are available in the API. A high score is evidence to review, not a claim of fraud.
€89.00 · Visa debit · just now
Would have declined. No action taken.
| Name | Condition | Mode | Hits 7d | Precision |
|---|---|---|---|---|
| Card testing | card.attempts_2m > 10 | Shadow | 142 | 99.3% |
| Shared device | device.accounts_7d > 6 | Shadow | 96 | 98.0% |
| Country mismatch | bin.country != ip.country | Shadow | 74 | 94.6% |
| Trusted customer | customer.successful > 3 | Enforce | 1,284 | 99.8% |
| Known blocked device | device.id in blocklist | Enforce | 38 | 100.0% |
device.accounts_7d > 6Promote only after reviewing outcomes.
Rules
Keep new rules in shadow mode while you inspect their matches. Compare precision and lift, then promote the rule when the trade-off makes sense for your business.
Shadow rules record a projected decision. Enforced rules can affect live decisions; review your thresholds before promotion.
Session replay
Put the score back in context. Inspect the moments that need a second look, without exposing card numbers.
Replay capture depends on consent. Sensitive fields are masked; card context is BIN only. Replay data can be erased on request.
Illustrative recording · sensitive fields masked
import { RiskCogs } from '@riskcogs/js';
const rc = new RiskCogs({
siteId: 'site_demo',
mode: 'shadow',
});
await rc.track('payment', {
paymentId: 'pay_9d6e12',
});const response = await fetch('https://api.example.com/v1/score', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ payment_id: 'pay_9d6e12',
amount: '89.00', currency: 'EUR', shadow: true }),
});
const result = await response.json();Illustrative code, not published API documentation. Configure the upstream URL and secret on your server.
Quickstart
Send payment context from your existing flow. Keep secrets on your server and return the score to the same project your risk team uses.
Start with shadow: true. Observe matched rules before you connect them to a live decision.
Score response
Get the score, risk band, reasons and matched rule identifiers in one response. Route the result in your own system or open the same payment in RiskCogs.
This example matches the inspector. Shadow mode records the assessment without enforcing a block.
{
"payment_id": "pay_9d6e12",
"score": 0.86,
"band": "high",
"reasons": [
"bin_ip_country_mismatch",
"shared_device"
],
"rules_hit": [
"country_mismatch"
],
"shadow": true
}Stable identifiers connect the API, inspector and rule review.
assessment.created · delivered{
"payment_id": "pay_9d6e12",
"outcome": "chargeback",
"reason": "fraud"
}Webhooks & feedback
Receive assessment events, then send the eventual outcome back against the original payment ID: chargeback, refund or confirmed-good.
Verify event names, signing and retry behavior against your integration contract.
Integration paths for the code and checkout you already run.
SDK and plugin availability is confirmed during onboarding. Examples here are illustrative.
Keep your payment routing. Add risk context alongside it.
Provider names illustrate existing payment stacks; no partnership or endorsement is implied.
EU hostingConfirm your project region.
GDPRErasure and retention controls.
Consent-controlled replayCapture only with consent.
BIN onlyNo full card numbers.
Connect a project, observe your scores and review the evidence. Turn on enforcement only when you are ready.