Skip to main content
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.
Cuando un pago creado por PayBridge cambia de estado —se aprueba, se cancela o se reembolsa— DSI hace un 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.
Fire manda esta URL en cada solicitud de pago, dentro de 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.
Si la conexión del país todavía no tiene secreto cargado, Fire acepta la notificación sin validar la firma y lo registra como advertencia. Cargá el secreto en la conexión antes de salir a producción.

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 responde 200 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.