Devoluciones, anulaciones y reembolsos
Aprende cómo anular un pago o solicitar un reembolso para tus clientes
Esta funcionalidad se encuentra disponible para los siguientes modelos:
☑ Adquirente
☑ Agregador
Con Kushki puedes procesar devoluciones de pagos con tarjeta crédito en estado aprobado. Una vez aprobada una devolución, los fondos se devolverán a la tarjeta de tu cliente.
Las devoluciones pueden ser de dos clases, según el día y la hora en que se procese la transacción original y la solicitud de anulación:
1. Anulación en línea (Void)
Se da cuando la solicitud de devolución se procesa durante el mismo día de la transacción y hasta 3 horas después de su aprobación. Realizaremos hasta tres intentos de devolución con el procesador y si es exitosa, la compra se eliminará del extracto de movimientos de tu cliente y se devolverá el monto de la compra a su cuenta.
2. Reembolso (Refund)
Cuando no sea posible realizar una anulación en línea, será necesario realizar un reembolso. El reembolso se puede dar en los siguientes escenarios:
- Cuando la solicitud de devolución se procesa más de 3 horas después de aprobada la transacción o en un día diferente.
- Cuando fallan los tres intentos de anulación en línea.
- Cuando la solicitud de anulación se realiza en un día diferente al de la transacción original.
Este tipo de reembolsos pueden tardar hasta 7 días hábiles en procesarse y hasta 20 días hábiles en reflejarse en el extracto de tu cliente, dependiendo del banco emisor de la tarjeta. A continuación una ilustración del proceso de reembolso:
¿Cómo procesar una devolución?
El proceso de devolución puede tener dos resultados: Anulación (void) o Reembolso (refund). La devolución se hará como anulación (void) si se solicita hasta 3 horas después de que la transacción fue aprobada y durante el mismo día. Si excede ese tiempo, entonces será procesada como reembolso (refund). Los reembolsos pueden tardar hasta 7 días hábiles en procesarse y hasta 20 días hábiles en reflejarse en el extracto de tu cliente, dependiendo del banco emisor de la tarjeta.
Puedes procesar devoluciones desde tu Consola según lo explicado aquí o integrar en tu aplicación nuestro método de API de solicitud de cancelación para que tus compradores puedan solicitar desde tu sitio la devolución de una compra.
Para solicitar la anulación de un pago es necesario utilizar el ticketNumber
de la transacción original como path parameter y enviar tu credencial privada, tal y como se muestra en el siguiente ejemplo:
- Javascript
- Python
- PHP
var request = require("request");var options = {method: 'DELETE',headers: {'Private-Merchant-Id': 'your-private-merchat-id', // Reemplaza con tu Private merchant id'Content-Type': 'application/json' },url: 'https://api-uat.kushkipagos.com/v1/charges/ticket number ', // Ambiente de pruebabody: {fullResponse: true},json:true};request(options, function(error, response, body) {if (error) throw new Error(error);console.log(body);});
import requestsurl = "https://api-uat.kushkipagos.com/v1/charges/ticket number"payload = '{"fullResponse":true}'headers = {"Private-Merchant-Id": "your-private-merchat-id","Content-Type": "application/json",}response = requests.request("DELETE", url, headers=headers, data=payload)print(response.text)
$client = new http\Client;$request = new http\Client\Request;$body = new http\Message\Body;$body->append('{\"fullResponse\":true}');$request->setRequestUrl('https://api-uat.kushkipagos.com/v1/charges/6383937262783');$request->setRequestMethod('DELETE');$request->setBody($body);$request->setHeaders(array('Private-Merchant-Id: 'your-private-merchat-id',// Reemplaza esto por tu Private Key'Content-Type: application/json'));$client->enqueue($request)->send();$response = $client->getResponse();echo $response->getBody()
¿Cuál es el tiempo límite para solicitar una devolución?
El tiempo límite para que tus clientes soliciten una devolución varía por modelo de afiliación:
Agregación (Gateway) | Adquiriencia Kushki (Doméstica) | Adquiriencia Kushki (Internacional) |
---|---|---|
Hasta 90 días después de realizado un cobro. | Hasta 120 días después de realizado un cobro. | Hasta 120 días después de realizado un cobro. |
¿Cómo procesar una devolución parcial?
Puedes permitirle a tus clientes solicitar devoluciones parciales usando el mismo endpoint de anulación de transacciones, por lo tanto es posible que un solo cargo tenga varias solicitudes de devolución asociadas, siempre y cuando la suma de estas no sobrepase el monto total de la transacción original.
Las devoluciones parciales pueden solicitarse manualmente, a través de la Consola o vía API, según lo explicado a continuación.
Devoluciones parciales vía API
Para solicitar una devolución parcial, puedes usar el endpoint de solicitud de anulaciones. Debes enviar el ticketNumber
como path parameter, tu credencial privada y el desglose de monto e impuestos en el objeto amount
. Asegúrate que el cálculo de los impuestos y montos sea el correcto.
- Javascript
- Python
- PHP
var request = require("request");var options = {method: 'DELETE',headers: {'Private-Merchant-Id': 'your-private-merchat-id', // Reemplaza con tu Private merchant id'Content-Type': 'application/json'},url: 'https://api-uat.kushkipagos.com/v1/charges/ticket number ', // Ambiente de pruebabody: {fullResponse: true,amount: {subtotalIva: 100000,subtotalIva0: 0,ice: 0,iva: 0,currency: 'CP'}},json: true};request(options, function(error, response, body) {if (error) throw new Error(error);console.log(body);});
import requestsurl = "https://api-uat.kushkipagos.com/v1/charges/ticket number"payload = '{\"fullResponse\":true,\"amount\":{\"subtotalIva\":100000,\"subtotalIva0\":0,\"ice\":0,\"iva\":0,\"currency\":\"CP\"}}'headers = {"Private-Merchant-Id": "your-private-merchat-id","Content-Type": "application/json",}response = requests.request("DELETE", url, headers=headers, data=payload)print(response.text)
$client = new http\Client;$request = new http\Client\Request;$body = new http\Message\Body;$body->append('{"fullResponse":true,"amount":{"subtotalIva":100000,"subtotalIva0":0,"ice":0,"iva":0,"currency":"CP"}}');$request->setRequestUrl('https://api-uat.kushkipagos.com/v1/charges/6383937262783');$request->setRequestMethod('DELETE');$request->setBody($body);$request->setHeaders(array('Private-Merchant-Id: 'your-private-merchat-id',// Reemplaza esto por tu Private Key'Content-Type: application/json'));$client->enqueue($request)->send();$response = $client->getResponse();echo $response->getBody()
¿Cómo conocer el estado de una devolución?
Puedes conocer el estado de una anulación desde tu Consola según lo explicado aquí o configurar un Webhook de devoluciones, en el cual Kushki te notificará cuando se complete exitosamente una solicitud de devolución, ya sea anulación (void) o reembolso (refund).
Recomendado
Consulta el estado de tus devoluciones