> ## Documentation Index
> Fetch the complete documentation index at: https://docs.clausum.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Decisiones de riesgo

> Cómo Clausum puntúa transacciones y qué significa cada decisión.

Cada llamada a `POST /api/v1/assess` devuelve un `risk_score` de **0 a 100** y una `decision`. El score es la suma de los pesos de las señales que se activaron, con tope en 100.

## Decisiones

| Decision | Score típico | Acción recomendada |
| - | - | - |
| `approve` | bajo | Proceder con la transacción. |
| `review` | moderado | Permitir, pero encolar para revisión manual o monitoreo. |
| `challenge` | elevado | Requerir verificación step-up (3DS, OTP, KYC). |
| `decline` | alto / bloqueo duro | Bloquear la transacción. |

Los umbrales entre estas bandas son **configurables por organización** en el panel, para ajustar Clausum a tu apetito de riesgo sin cambios de código.

<Note>
  Un bloqueo duro (por ejemplo un email en blocklist con severidad `block`, o un monto por encima de tu máximo configurado) fuerza `decline` con `risk_score` de 100 y rellena `blocked_by` con la razón.
</Note>

## Forma de la respuesta

```json theme={null}
{
  "decision": "challenge",
  "risk_score": 55,
  "signals": ["high_velocity", "disposable_email"],
  "signal_details": [
    { "code": "high_velocity", "weight": 35, "description": "6 transactions in the last hour" },
    { "code": "disposable_email", "weight": 20, "description": "Disposable email detected" }
  ],
  "session_id": "ps_1716998400000_a1b2c3d4e",
  "blocked_by": null,
  "latency_ms": 48
}
```

* **`signals`** — códigos cortos de cada señal que contribuyó.
* **`signal_details`** — peso y descripción legible por humanos de cada una.
* **`session_id`** — persiste esto para correlacionar con reportes y webhooks posteriores.
* **`blocked_by`** — distinto de null solo cuando la transacción fue bloqueada de forma dura.

## Categorías de señales

<AccordionGroup>
  <Accordion title="Coincidencias en blocklist" icon="ban">
    Email, dominio de email, IP, rango IP, huella de dispositivo, BIN de tarjeta, hash de tarjeta, país, teléfono o customer\_id presentes en tus blocklists. Severidad `block` declina de forma dura; `flag` y `review` agregan peso.
  </Accordion>

  <Accordion title="Señales de email" icon="envelope">
    Proveedores de email desechable y TLD sospechosos (`.xyz`, `.top`, `.click`, …).
  </Accordion>

  <Accordion title="Señales conductuales" icon="hand-pointer">
    Sesiones muy cortas, sin movimiento de mouse, campos pegados y patrones tipo bot — más fiables con el [SDK para navegador](/es/guides/browser-sdk).
  </Accordion>

  <Accordion title="Señales de monto" icon="money-bill">
    Límites min/max configurables y valores atípicos estadísticos frente a tu historial reciente de transacciones.
  </Accordion>

  <Accordion title="Señales de velocidad" icon="gauge-high">
    Transacciones repetidas del mismo email o dispositivo en una ventana corta.
  </Accordion>

  <Accordion title="Historial del pagador" icon="clock-rotate-left">
    Fraude confirmado previo asociado al email conlleva penalización fuerte.
  </Accordion>

  <Accordion title="Reglas personalizadas" icon="sliders">
    Reglas definidas por la organización pueden sumar o restar score, o forzar una decisión específica. Las reglas activadas aparecen en `rules_applied`.
  </Accordion>
</AccordionGroup>

## Aplicar decisiones

```ts theme={null}
function enforce(assessment) {
  switch (assessment.decision) {
    case "approve":   return proceed()
    case "review":    return proceed({ flagForReview: true })
    case "challenge": return requireStepUp()        // 3DS / OTP
    case "decline":   return block(assessment.blocked_by)
  }
}
```

<Tip>
  Registra `session_id`, `risk_score` y `signals` junto a tus registros de orden. Son invaluables al investigar disputas y al llamar [`report-fraud`](/es/guides/report-fraud) después.
</Tip>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.