Reembolsos
Devolver todo o parte de un cobro.
Crear un reembolso
POST /v1/refunds
| Campo | Obligatorio | Descripción |
|---|---|---|
payment_id |
sí | El cobro original: su identificador o su referencia |
amount_minor |
— | Cadena, en unidades menores. Ausente = el saldo restante |
reason |
— | customer_request, duplicate, fraudulent u other |
description |
— | Texto libre, visible en el panel |
El reembolso es una operación de pleno derecho: su propio id, su propio estado, su propio evento
webhook (refund.success / refund.failed).
Reglas
- Sólo se reembolsa un cobro exitoso.
- La suma de los reembolsos no puede superar el importe cobrado — la API responde
422 refund_exceeds_refundablepor encima. - Las comisiones de cobro no se devuelven: quedan a su cargo.
- Un reembolso parcial deja el cobro original consultable, con su historial completo.
- Los fondos se toman de su saldo disponible en el momento de la llamada, como en un pago.
Una clave de idempotencia por reembolso. Nunca el identificador del pago original: un cobro puede reembolsarse en varias veces, y una clave que lleve el identificador del padre haría pasar el segundo reembolso parcial por un reenvío del primero.
Leer y listar
GET /v1/refunds/{id}
GET /v1/refunds — lista; ?payment_id= para un solo cobro
GET /v1/payments/{id}/refunds — los reembolsos de un cobro
GET /v1/payments/{id}/refunds y GET /v1/refunds?payment_id= devuelven el mismo objeto que la
lista, con la misma paginación. El cobro se designa por su identificador o su referencia; el de otra
cuenta responde 404 en el subrecurso, y una lista vacía en el filtro.
Códigos de rechazo
Un reembolso rechazado responde 422, en el sobre de error habitual:
| Código | Significado |
|---|---|
refund_exceeds_refundable |
El importe supera lo que queda por reembolsar. El error incluye amount_refundable_minor. |
wave_partial_refund_window_closed |
Cobro Wave: el plazo de reembolso parcial ha vencido; solo es posible el reembolso total, si no se ha reembolsado nada. |
wave_partial_refunds_disabled |
Los reembolsos parciales Wave no están abiertos; el reembolso total sigue siendo posible. |
wave_refund_window_closed |
Cobro Wave ya reembolsado en parte y plazo vencido: ningún otro reembolso. |
payer_not_found |
Wave no indica el pagador: un reembolso parcial, abonado al pagador, no puede enviarse. |
insufficient_funds |
Su saldo disponible no cubre el reembolso. |
Wave: reembolsos parciales
Wave solo reembolsa una transacción en su totalidad. Un reembolso parcial de un cobro Wave se abona
por tanto al número Wave del pagador, y solo durante el plazo indicado por partial_refund_deadline
en el cobro. Pasado ese plazo, solo es posible el reembolso total, y solo si no se ha reembolsado nada.