Saltearse al contenido

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

Ventana de terminal
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:

  1. Coordiná con tu cliente fuera del gateway.
  2. Dinelco no expone API de devolución parcial ni total post-liquidación.
  3. La devolución va a aparecer en tu próxima liquidación con Dinelco como un débito separado.

Restricciones

  • Aplica a provider=dinelco y provider=bancard. Para transferencias, no hay reversa automatizable (ver pago por transferencia).
  • Solo aplica a pagos en status=confirmed. No podés reversar un pending (eso es cancel), ni un failed.
  • 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.