Reversar un pago
Reversar un pago devuelve el dinero al cliente y marca el pago como reversed. Funciona solo para pagos de Dinelco confirmados, dentro de la ventana de liquidación de la marca.
La ventana de liquidación
Dinelco hace varios cortes de liquidación a lo largo del día (hora Paraguay). Los horarios exactos los define la marca y pueden cambiar, pero a modo de ejemplo, podés asumir cortes aproximadamente cada pocas horas — por ejemplo, supongamos cortes a media mañana, tarde, noche y cierre del día.
Antes del próximo corte, podés reversar por API. Después del corte, el pago ya está liquidado — la marca lo procesa y la API devuelve 90019 (pago ya liquidado). En ese caso tenés que coordinar el reembolso por fuera del gateway, manualmente.
flowchart LR
A[Pago confirmed] --> B{Pasó el
próximo corte?}
B -->|No| C[POST /reverse]
C --> D[Dinelco aprueba]
D --> E[status=reversed]
E --> F[webhook payment.reversed]
B -->|Sí| G[Coordinar manual
fuera del gateway]
Reversar por API
curl -X POST https://api.pay.ingalca.com/v1/payments/pay_abc123/reverse \ -H "Authorization: Bearer sk_live_..."Si funciona:
{ "data": { "id": "pay_abc123", "status": "reversed", "reversed_at": "2026-05-02T15:00:00+00:00" }}Disparamos payment.reversed a tu webhook.
Cuando ya está liquidado
{ "error": { "code": "PAYMENT_ALREADY_PROCESSED", "message": "No se puede reversar este pago: Dinelco ya lo liquidó. Las reversas funcionan solo antes del próximo corte de liquidación del día. Después de la liquidación Dinelco no ofrece devolución por API — hay que coordinar con el cliente fuera del gateway." }}En ese caso:
- Coordiná con tu cliente fuera del gateway.
- Dinelco no expone API de devolución parcial ni total post-liquidación.
- La devolución va a aparecer en tu próxima liquidación con Dinelco como un débito separado.
Restricciones
- Solo aplica a
provider=dinelco. Para transferencias, no hay reversa automatizable (ver pago por transferencia). Para Bancard, cuando lo implementemos. - Solo aplica a pagos en
status=confirmed. No podés reversar unpending(eso escancel), ni unfailed. - No hay reversa parcial — siempre devuelve el monto total.
Reversa desde el dashboard
El operador puede reversar desde el detalle del pago en el dashboard. Pide doble confirmación tipeando el public_id del pago, para evitar clicks accidentales.