Returns, cancellations, and refunds

Learn how to cancel a payment or request a refund for your customers

With Kushki you can process debit and credit card payment returns with an approved status. Once a return is approved, the funds will be returned to your customer’s card.

Returns can be of two types, according to the day and the time the original transaction and the cancellation request are processed:

1. Online or automatic cancellation (Void)

It occurs when the return request is processed during the same day of the transaction, before 21:00 . We will make up to three return attempts with the processor and if successful, the purchase will be removed from your customer’s bank statement and the purchase amount will be returned to their account.

Online Cancellation Void EN

2. Manual refund

When an online cancellation is not possible, a manual refund will be required. This type of refund can take up to 7 business days to processed and up to 45 business days to appear on your customer’s bank statement, depending on the card issuing bank.

Manual Refund EN

Manual refund can occur in the following scenarios:

  • When the return request is processed after on the day on which the customer’s payment took place.
  • When the three online cancellation attempts fail.
  • When the cancellation request is made on a day other than that of the original transaction.

How to process a return?

You can process returns from your Administration Console as explained here or integrate our cancellations request API method into your application, so that your buyers can request the return of a purchase from your website.

In order to request the cancellation of a payment, it is necessary to use the ticketNumber of the original transaction as path parameter and send your private credential, as shown in the example below:

  • Javascript
  • Python
  • PHP
var request = require("request");
var options = {
method: 'DELETE',
headers: {
'Private-Merchant-Id': 'your-private-merchat-id', // Replace with your Private merchant id
'Content-Type': 'application/json' },
url: 'https://api-uat.kushkipagos.com/v1/charges/ticket number ', // Test environment
body: {
fullResponse: true
},
json:true
};
request(options, function(error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "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',// Replace this with your Private Key
'Content-Type: application/json'
));
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody()

How to check the status of a return?

You can check the status of a cancellation from your Administration Console as explained here or set up a Webhook for returns, in which Kushki will notify you when a return request, either a cancellation (void) or a refund, is successfully completed.


Recommended

Check the status of your returns