> ## 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.

# Evaluación de payout

> Evalúa transferencias salientes (SPEI, wire, retiros) antes de que el dinero salga de tu plataforma.

Clausum puntúa **payouts y dispersiones** de forma síncrona — llama assess **antes** de que tu core autorice la transferencia, luego honra `decision` igual que en payin.

<Note>
  Requiere blocklists con `flow_scope` (migración `079`). Tipos de lista específicos de payout: `clabe`, `iban`, `account_hash`, `swift_bic`, `beneficiary_id`. Consulta [Blocklists](/es/concepts/blocklists).
</Note>

## Cuándo usar

| Flujo | Endpoint |
| - | - |
| Partner API (producción / sandbox) | `POST /api/v1/assess/payout` |
| Simulación del panel | `POST /api/v1/simulation/payout` |

* Autentica con **`clm_sk_*`** (clave de servidor, permiso `assess`).
* La forma de respuesta coincide con assess payin: `decision`, `risk_score`, `signals`, `session_id`, `flow: "payout"`.

## Payload mínimo

```json theme={null}
{
  "amount": 250000,
  "currency": "MXN",
  "transaction_type": "payout",
  "beneficiary": {
    "id": "ben_123",
    "name": "Proveedor Norte SA",
    "country": "MX",
    "clabe": "012180001234567890"
  },
  "origin": {
    "account_id": "acct_orig_01",
    "country": "MX"
  },
  "payout": {
    "rail": "spei",
    "first_to_beneficiary": false,
    "channel": "api",
    "initiated_by": "treasury@empresa.com"
  }
}
```

<Warning>
  `amount` usa el mismo modelo de unidades que payin — consulta [Evaluación en tiempo real](/es/guides/realtime-assessment#amount-units). Prefiere unidades menores explícitas o `amount_unit: "major"` con decimales.
</Warning>

## Aplicar la decisión

```ts theme={null}
const res = await fetch(`${process.env.CLAUSUM_API_BASE}/api/v1/assess/payout`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.CLAUSUM_SECRET_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": payoutRequestId,
  },
  body: JSON.stringify(payload),
})

const result = await res.json()
if (result.decision === "decline") {
  throw new Error("Payout blocked by Clausum")
}
// approve / review / challenge → your treasury workflow
```

## Señales que puedes ver

| Señal | Significado |
| - | - |
| `payout_first_beneficiary` | Primer payout a este beneficiario |
| `payout_high_risk_country` | País del beneficiario en lista de riesgo |
| `payout_cross_border_high_amount` | Cross-border sobre umbral |
| `payout_unattributed_initiator` | Iniciador ausente o genérico |
| Hits de blocklist | `clabe`, `iban`, `beneficiary_id`, etc. |

## Webhooks salientes

Assess payout que no es decline emite **`transaction.created`**; decline emite **`transaction.blocked`**. El payload incluye `flow: "payout"` y refleja `assess_response`. Consulta [Eventos webhook](/es/concepts/webhook-events).

## Próximos pasos

<CardGroup cols={2}>
  <Card title="Evaluación en tiempo real (payin)" icon="gauge-high" href="/es/guides/realtime-assessment">
    Checkout y flujos card-not-present.
  </Card>

  <Card title="Blocklists" icon="ban" href="/es/concepts/blocklists">
    Scope payin vs payout y tipos de entrada.
  </Card>
</CardGroup>


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