Reembolsa un pago o gestiona un contracargo
Qué puedes reembolsar en cada método, cómo reversar un pago de Débito Inmediato (C2P) o reembolsar un pago en pesos, y cómo los contracargos de tarjeta afectan tu saldo y se cierran.
Qué puedes reembolsar
| Método | ¿Se puede reembolsar? | Cómo |
|---|---|---|
| Débito Inmediato (C2P) | Sí, completo | POST /v1/payments/:id/reverse |
| Pesos colombianos | Sí, completo, dentro de 96 horas desde que se completó | POST /v1/cop/payments/:id/refund |
| USDT / USDC | No hay API de reembolso | Envía al comprador un payout de stablecoin normal con POST /v1/crypto/payouts (aplica la comisión de payout) |
| Tarjeta | No hay API de reembolso | Solo contracargos bancarios, que registra VEXPay |
| Pago Móvil, débito inmediato (OTP) | No hay API de reembolso | — |
No se admiten reembolsos parciales. Suscribe tu endpoint de webhook a payment.reversed, payment.chargeback y payment.chargeback_closed.
Pasos: reversa un pago de Débito Inmediato (C2P)
- Revisa el pago
GET /v1/payments/:iddebe mostrar un pago C2PCOMPLETEDque no se haya reversado antes. - Revérsalo
POST /v1/payments/:id/reverse(hasta 5 por hora). Si el banco lo rechaza, recibes un 400 con su mensaje y nada cambia. - Confirma
El pago pasa a
REVERSEDy llegapayment.reversedconreversalType: "reversal". El monto completo sale de tu saldo y la comisión de VEXPay se devuelve. En un pago dividido, también se deshace la parte del vendedor.
curl --request POST "${API_URL}/v1/payments/PAYMENT_ID/reverse" \
--header "x-api-key: ${VEXPAY_API_KEY}"Pasos: reembolsa un pago en pesos
- Mantén suficientes pesos
Tu saldo COP (disponible más retenido) debe cubrir el neto que se acreditó. Los pesos que ya convertiste o retiraste no cuentan.
- Reembólsalo
POST /v1/cop/payments/:id/refunddentro de 96 horas desde que se completó. - Confirma
El pago muestra
refundedy llegapayment.reversedconstatus: "refunded". La comisión COP se devuelve.
Qué pasa con un contracargo de tarjeta
- El comprador disputa el cargo
VEXPay registra el contracargo en el pago y lo debita de tu saldo en bolívares (la comisión original de la tarjeta no se devuelve). Si el banco cobra una comisión por contracargo, VEXPay te traslada exactamente ese monto como un movimiento aparte (
feeVes, muchas veces 0), sin agregar nada. Recibespayment.chargeback; un contracargo total también envíapayment.reversedconreversalType: "chargeback". - Regístralo
GET /v1/payments/:idlistachargebacks[], y los movimientos aparecen enGET /v1/balance/transactions?paymentId=…. Registra cada uno una sola vez con losledgerEntryIdsdel webhook. - VEXPay lo disputa
Cuando se decide recibes
payment.chargeback_closedconoutcome. Ganado: el monto y la comisión de contracargo, si la hubo, vuelven (retenidos 24 horas) y el pago regresa aCOMPLETED. Perdido: no se mueve nada más.
Comprueba que funcionó
- En Test, paga con la tarjeta
4000000000000259: cerca de un minuto después llega un contracargo de prueba conlivemode: false. - El reverso, reembolso o contracargo aparece en Portal → Balance movements y el pago muestra su nuevo estado en Payments.
Si algo sale mal
| Síntoma | Causa probable | Qué hacer |
|---|---|---|
| 400 "Reversal is not supported for method: …" | Solo se pueden reversar pagos C2P | Mira la tabla del inicio. |
| 400 "Only COMPLETED payments can be reversed" | Estado equivocado, o ya reversado | Revisa GET /v1/payments/:id. |
| 400 con un mensaje del banco | El banco rechazó el reverso | Contacta a VEXPay; el pago sigue COMPLETED. |
409 onward_payout_in_progress | El pago ya se convirtió y se envió como USDT | Contacta a VEXPay. |
| 429 al reversar | Más de 5 reversos en una hora | Reintenta más tarde. |
409 refund_window_expired | Pasaron más de 96 horas desde que se completó el pago en pesos | No es posible reembolsar por API; contacta al soporte de VEXPay. |
409 insufficient_balance en un reembolso en pesos | Tu saldo COP no lo cubre | Mantén suficientes COP y reintenta. |
Relacionado: Consulta y reverso · Concilia tu saldo · Colombia (COP) · VPOS