Saltearse al contenido

Eventos disponibles

Cada evento tiene un tipo (event_type) que llega en el header X-Ingalca-Event-Type y dentro del body. Suscribite al que necesites filtrando en tu handler.

Eventos de pagos

EventoCuándo se dispara
payment.confirmedEl pago se completó con éxito (Dinelco approved, transferencia aprobada).
payment.failedEl provider rechazó el pago (tarjeta inválida, fondos insuficientes, etc.).
payment.rejectedUn operador rechazó manualmente un comprobante de transferencia.
payment.expiredEl pago no se completó dentro del TTL y se marcó expirado.
payment.cancelledVos cancelaste el pago vía API antes de su finalización.
payment.reversedSe ejecutó una reversa del pago (Dinelco antes del corte de liquidación).
payment.receipt_uploadedEl cliente subió un comprobante de transferencia (pendiente de aprobación).

Eventos de tarjetas

EventoCuándo se dispara
card.registeredEl catastro fue exitoso, ya tenés tokenId para cobrar.
card.failedEl catastro falló (tarjeta rechazada, OTP incorrecto).
card.deletedSe eliminó una tarjeta. (Por ahora 501 — Dinelco no expone unregister.)

Estructura común

Todos los eventos comparten esta estructura raíz:

{
"event_id": "evt_a1b2c3d4e5f6",
"event_type": "payment.confirmed",
"created_at": "2026-05-02T14:32:11+00:00",
"data": { /* payload específico del evento */ }
}

Payload por evento

payment.*

{
"data": {
"payment_id": "pay_abc123def456",
"reference": "ORDEN-001",
"amount": 150000,
"currency": "PYG",
"status": "confirmed",
"provider": "transferencia",
"customer_id": "user_42",
"confirmed_at": "2026-05-02T14:32:10+00:00",
"rejection_reason": null,
"metadata": { /* lo que mandaste al crear el pago */ }
}
}

Para payment.rejected, rejection_reason lleva el motivo (string libre o uno de los preconfigurados desde el dashboard).

Para payment.reversed, vas a recibir el evento aún cuando la reversa la disparaste vos por API — el webhook confirma la transición de estado.

card.*

{
"data": {
"card_id": "card_xyz789",
"customer_id": "user_42",
"status": "registered",
"provider": "dinelco",
"brand": "Visa",
"last_four": "1096",
"expires": "12/30",
"registered_at": "2026-05-02T14:32:10+00:00"
}
}

Cómo elegir qué escuchar

  • Si solo procesás pagos one-shot: payment.confirmed + payment.failed alcanzan.
  • Si aceptás transferencias: sumá payment.receipt_uploaded para enterarte cuando llegan, payment.rejected para los rechazos manuales.
  • Si trabajás con tarjetas guardadas: sumá card.registered y card.failed.
  • Si tenés política de devoluciones: sumá payment.reversed.

No hay forma (todavía) de filtrar qué eventos te llegan. Recibís todos y filtrás del lado tuyo. Si hay demanda, agregamos suscripciones por tipo.