Implementado en Fire y verificado contra el sandbox de DSI. Falta fijar el host público
definitivo; hasta entonces la URL se coordina por ambiente.
POST a este endpoint de Fire. Es el camino
primario para cerrar el ciclo del cobro: sin esta notificación, el cobro se queda esperando al
cliente.
Endpoint
string
requerido
País de la conexión DSI en ISO alpha-2 (
EC, CL, CO, AR, VE, BR). Define qué conexión y
qué secreto se usan para validar la firma. Se acepta en minúsculas.settings.callbacks.status, así que no hay
que configurarla por fuera: cada pago ya viaja con el callback de su país.
Autenticación: firma HMAC
Este endpoint no usa API key ni bearer. La autenticidad la da la firma.string
requerido
HMAC-SHA256 en hexadecimal del cuerpo crudo de la petición, calculado con el secreto de la
conexión del país. Un administrador de Fire carga ese secreto al configurar la conexión DSI del
país; pídeselo a él si necesitas verificar la firma.
Cálculo de la firma
- Se firma el body crudo, no un JSON reconstruido: cualquier reordenamiento de claves o cambio de espacios invalida la firma.
- La comparación se hace en tiempo constante.
- Firma ausente o inválida →
400, y nada se procesa.
Payload
string
requerido
Referencia que Fire envió al crear el pago. Es la clave de correlación: identifica el intento
(
attempt) exacto al que pertenece la notificación.string
requerido
Id de la transacción en DSI. Fire lo usa como id de evento para deduplicar.
string
requerido
Estado alcanzado:
approved, cancelled, waitingPayment, refundPayment o refundFailed.integer
requerido
Monto pagado en céntimos (entero).
1990 = 19,90.string
Mensaje del proveedor (motivo del rechazo, detalle del reembolso).
string
requerido
Sucursal del pago (el
branchOffice que Fire envió al crearlo).Qué hace Fire con cada estado
paidPrice se guarda como referencia del proveedor; el monto que Fire acredita es el del intento.
Respuesta
Fire responde200 en cuanto valida la firma y encola la notificación. La transición de
estado la aplica un worker segundos después.
200
Un
200 significa recibida, no aplicada. Para saber el resultado final, consultá el cobro con
GET /api/v1/external/paybridge/intents/{intentId}.Idempotencia y reintentos
Deduplicación
Fire deduplica por la terna
externalReference + transactionId + status. Reenviar la
misma notificación devuelve 200 con duplicate: true y no la vuelve a procesar.Sin retrocesos
Un intento que ya está en estado terminal no vuelve atrás por una notificación tardía. La única
excepción son los reembolsos, que sí se aplican sobre un pago aprobado.
Referencia desconocida
Si el
externalReference no corresponde a ningún intento, Fire responde 200 y la descarta, para
no dejar a DSI reintentando para siempre.Reintentos seguros
El procesamiento es idempotente: se puede reintentar ante
5xx sin riesgo de aplicar dos veces el
mismo estado.Relacionado
Cobrar desde un canal
Cómo se crea el cobro que después cierra esta notificación.
Métodos soportados por país
Qué métodos cobran hoy por DSI en cada país.

