Ir al contenido

Webhooks (Bre-B)

Bre-B notifica los cambios de estado a nuestro gateway. Verificamos la firma, actualizamos la transacción y el balance, y enviamos el evento a tu webhookUrl configurada, con reintentos. Puedes configurar una URL específica para BREB o una única URL para toda la región CO.

FlujoSecuencia
Entrante (pay-in)receivedconfirmedsettled
Saliente (pay-out)confirmedsettled
Cualquierarejected termina el flujo

El nombre del evento llega en el header X-Webhook-Event (no dentro del body).

EventoCuándo
payin.completedEl cobro fue liquidado (settled) — QR o por llave
payin.failedEl cobro fue rechazado por la red (rejected) y quedó cerrado
payin.expiredEl QR o la llave vencieron sin pago (estado final EXPIRED)
payout.completedLa dispersión se liquidó
payout.failedLa dispersión fue rechazada

Payload de payin.completed / payin.failed / payout.completed / payout.failed:

{
"txId": "a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d",
"type": "PAYIN",
"status": "COMPLETED",
"amount": 50000,
"currency": "COP",
"feeCharged": 1500,
"netAmount": 48500,
"e2eId": "E2E-20260601-0001",
"updatedAt": "2026-06-01T10:05:00.000Z"
}
CampoDescripción
txIdID de la transacción (coincide con el de la creación)
typePAYIN o PAYOUT
statusCOMPLETED o FAILED
feeChargedFee cobrado en pesos COP (0 si falló)
netAmountMonto neto acreditado — solo en payin.completed
e2eIdIdentificador end-to-end de la red Bre-B

Payload de payin.expired:

{
"txId": "a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d",
"type": "PAYIN",
"status": "EXPIRED",
"amount": 50000,
"currency": "COP",
"failureReason": "Transaction expired without provider confirmation",
"expiredAt": "2026-06-01T10:15:00.000Z"
}

Los webhooks que te reenviamos van firmados con HMAC-SHA256, usando la Clave que registraste para BREB. Verifica X-Webhook-Signature con tu Clave antes de confiar en el payload. Ver Verificación de firma.