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
| Evento | Cuándo se dispara |
|---|---|
payment.confirmed | El pago se completó con éxito (Dinelco approved, transferencia aprobada). |
payment.failed | El provider rechazó el pago (tarjeta inválida, fondos insuficientes, etc.). |
payment.rejected | Un operador rechazó manualmente un comprobante de transferencia. |
payment.expired | El pago no se completó dentro del TTL y se marcó expirado. |
payment.cancelled | Vos cancelaste el pago vía API antes de su finalización. |
payment.reversed | Se ejecutó una reversa del pago (Dinelco antes del corte de liquidación). |
payment.receipt_uploaded | El cliente subió un comprobante de transferencia (pendiente de aprobación). |
Eventos de tarjetas
| Evento | Cuándo se dispara |
|---|---|
card.registered | El catastro fue exitoso, ya tenés tokenId para cobrar. |
card.failed | El catastro falló (tarjeta rechazada, OTP incorrecto). |
card.deleted | Se 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.failedalcanzan. - Si aceptás transferencias: sumá
payment.receipt_uploadedpara enterarte cuando llegan,payment.rejectedpara los rechazos manuales. - Si trabajás con tarjetas guardadas: sumá
card.registeredycard.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.