Reversar un pago
Reversar un pago devuelve el dinero al cliente y marca el pago como reversed. Funciona para pagos de Dinelco y Bancard 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
- Aplica a
provider=dinelcoyprovider=bancard. Para transferencias, no hay reversa automatizable (ver pago por transferencia). - 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.