Refunds
Un Refund permite devolver al comprador la totalidad o parte del importe de una Transacción correcta. El reembolso se realiza mediante el mismo método de pago que el pago original: no se puede reembolsar por otro canal.
Puede realizar varios reembolsos parciales sobre una misma transacción, siempre que el total reembolsado no supere el importe original.
Los plazos de devolución de los fondos dependen del operador:
Mobile Money (Airtel, Moov): 24–72 h.
Tarjeta bancaria: 3–10 días hábiles según el banco emisor.
PayPal: de instantáneo a 24 h. Sangho envía un webhook
refund.succeeded en cuanto el operador lo confirma.
Ciclo de vida
| Estado | Significado |
|---|---|
pending | Reembolso creado, a la espera de procesamiento. |
processing | Transmitido al operador, en curso de procesamiento. |
succeeded | Fondos devueltos al comprador. |
failed | Fallo del reembolso en el operador. Los fondos no se cargan. |
cancelled | Reembolso cancelado antes de su procesamiento (mediante /cancel/). |
expired | Plazo de procesamiento superado: los fondos se devuelven a su saldo. |
Endpoints
| Méthode | Endpoint | Description |
|---|---|---|
| POST | /refunds/ | Crear un reembolso |
| GET | /refunds/ | Listar los reembolsos |
| GET | /refunds/{id}/ | Recuperar un reembolso |
| POST | /refunds/{id}/cancel/ | Cancelar un reembolso pending |
Esquema del objeto
Crear un reembolso
Inicia un reembolso para una transacción existente. La transacción debe estar en estado
completed. Un reembolso parcial no modifica el estado de
la transacción original: solo un reembolso total pasa la transacción a
refunded.
transactionRequisID de la Transacción que se va a reembolsar.
La transacción debe estar en estado completed.
Una transacción en estado pending,
failed o disputed no se puede
reembolsar. Para cancelar un pago aún no procesado, utilice
POST /payment-intents/{id}/cancel/.
amountOptionnelImporte que se va a reembolsar, en céntimos. Si se omite, reembolsa la totalidad del importe reembolsable de la transacción.
En savoir plus
El importe no puede superar transaction.amount - importes_ya_reembolsados. Puede
acumular varios reembolsos parciales. Ejemplo: transacción de 15 000 XAF →
reembolso de 5 000 y, después, se acepta un segundo de 3 000 (quedan: 7 000).
reasonOptionnelMotivo del reembolso. Se utiliza para los informes internos y el cumplimiento normativo.
En savoir plus
Valores aceptados: duplicate (pago duplicado),
fraudulent (transacción fraudulenta),
customer_request (solicitud del cliente),
product_issue (problema con el producto),
service_not_rendered (servicio no prestado). El motivo se incluye
en el webhook refund.succeeded.
descriptionOptionnelNota interna sobre el reembolso. No es visible para el comprador.
En savoir plus
Ideal para hacer referencia a un ticket de soporte, a una decisión interna o a una comunicación con el cliente.
metadataOptionnelDatos libres asociados al reembolso. Se devuelven en el webhook
refund.succeeded.
Una doble llamada sin Idempotency-Key crea dos reembolsos
distintos. Con una clave idéntica, Sangho devuelve el reembolso existente sin crear
uno nuevo. Utilice un UUID único por cada intento de reembolso.