Skip to main content
Clausum scores payouts and disbursements synchronously — call assess before your core authorizes the transfer, then honor decision the same way as payin.
Requires blocklists with flow_scope (079 migration). Payout-specific list types: clabe, iban, account_hash, swift_bic, beneficiary_id. See Blocklists.

When to use

FlowEndpoint
Partner API (production / sandbox)POST /api/v1/assess/payout
Dashboard simulationPOST /api/v1/simulation/payout
  • Authenticate with clm_sk_* (server key, permission assess).
  • Response shape matches payin assess: decision, risk_score, signals, session_id, flow: "payout".

Minimal payload

{
  "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"
  }
}
amount uses the same unit model as payin — see Real-time assessment. Prefer explicit minor units or amount_unit: "major" with decimals.

Enforce the decision

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

Signals you may see

SignalMeaning
payout_first_beneficiaryFirst payout to this beneficiary
payout_high_risk_countryBeneficiary country on risk list
payout_cross_border_high_amountCross-border above threshold
payout_unattributed_initiatorMissing or generic initiator
Blocklist hitsclabe, iban, beneficiary_id, etc.

Outbound webhooks

Non-decline payout assess emits transaction.created; decline emits transaction.blocked. Payload includes flow: "payout" and mirrors assess_response. See Webhook events.

Next steps

Real-time assessment (payin)

Checkout and card-not-present flows.

Blocklists

Payin vs payout scope and entry types.