Skip to main content

Visión General

El cash-out SPEI envía una transferencia interbancaria a una CLABE de destino. El saldo de la cuenta se debita y NTX Pay procesa la transferencia en la red SPEI. La confirmación llega en el webhook cash_out con el evento transaction.cash_out.settled.

Endpoint

POST /api/spei/cash-out

Headers

Request

Response (201)

El transactionId (UUID) es el identificador único de la transacción — es el mismo valor entregado en los webhooks; úsalo para correlacionar eventos y consultar la transacción.

Campos del Response

string
requerido
Identificador único de la transacción (UUID). Mismo valor entregado en los webhooks.
string
requerido
Estado de la transacción: PENDING, CONFIRMED, FAILED o EXPIRED.
string
requerido
CLABE de destino que el pagador debe usar en la transferencia SPEI.
string
Referencia numérica SPEI, cuando esté disponible.
integer
requerido
Monto en centavos MXN.
string
Creación de la transacción (ISO 8601).

Campos del Request

integer
requerido
Monto en centavos MXN (mínimo 1). Ej.: 50000 = $500.00 MXN.
string
Identificador externo único (hasta 100 caracteres). Reenvíos con el mismo externalId devuelven la transferencia existente (idempotencia server-side).
string
requerido
CLABE de destino — exactamente 18 dígitos numéricos (regex: ^\d{18}$).
string
requerido
Nombre del beneficiario (3–255 caracteres).
string
RFC/CURP del beneficiario (10–20 caracteres). Recomendado para conciliación.
string
Concepto mostrado en el estado de cuenta del beneficiario (hasta 40 caracteres — límite del concepto SPEI).

Validación de Saldo

Antes de enviar, valida el saldo:
Saldo insuficiente devuelve 400 — la transacción no se crea. Aplica idempotencia del lado del cliente (no reproceses la misma orden tras un 400 sin revalidar el saldo).

Estados

En el webhook, los desenlaces llegan como transaction.cash_out.settled (LIQUIDATED) y transaction.cash_out.rejected (REJECTED) — consulta el payload completo. Devolución después de la liquidación: si el banco de la contraparte devuelve la transferencia, el saldo se acredita de vuelta y recibes transaction.cash_out.returned en el webhook refund_out.

Códigos de Error

Ejemplo en Node.js con Retry

Probar en el Sandbox

En el sandbox corre el pipeline completo — saldo debitado, tarifa cobrada, estado de cuenta generado — y la liquidación se simula en segundos. Tu cuenta necesita saldo: haz un cash-in antes. Fuerza rechazo, devolución y fallas síncronas con el header X-Sandbox-Scenario — consulta el catálogo de escenarios.

Próximos Pasos

Webhook cash_out

Payload del webhook de liquidación

Webhook refund_out

Cómo llegan las devoluciones de cash-out