Refunds

Refunds can be either full or partial and are applicable for bank payments. You can refund the payment multiple times without exceeding the initial payment amount with a partial refund.

The merchant must initiate each refund by indicating the refund amount. Everything else is handled by Kevin. Bank payment refunds are received on a daily basis on the next workday.

Refunds can be initiated in multiple ways:

  1. On the most popular kevin. modules, such as WooCommerce, PrestaShop, Opencart, Magento, etc.

  2. Using kevin. API.

Please note, that the refund option is only available for the merchants who have a transit account with kevin.

Currently, bank refunds can be processed in EUR and PLN currencies. To process a bank refund, payments must be collected to kevin. internal account.

Initiate payment refund

Full or partial refunds are initiated the same way. In both cases, it is required to indicate the refund amount. If the total sum of refunds exceeds the payment amount, then the refund will not be initiated.

The example below is written using kevin. PHP library.

use Kevin\Client;

$clientId = 'my-client-id';
$clientSecret = 'my-client-secret';
$options = ['error' => 'array', 'version' => '0.3', 'lang' => 'en'];

$kevinClient = new Client($clientId, $clientSecret, $options);

$paymentId = 'my-payment-id';
$attr = [
    'amount' => '0.01',
    'Webhook-URL' => 'https://example.com/notify'
];

$response = $kevinClient->payment()->initiatePaymentRefund($paymentId, $attr);

Get payment refunds

Because multiple refunds are allowed for a single payment, the list of refunds for an individual payment can be retrieved.

The example below is written using kevin. PHP library.

use Kevin\Client;

$clientId = 'my-client-id';
$clientSecret = 'my-client-secret';
$options = ['error' => 'array', 'version' => '0.3', 'lang' => 'en'];

$kevinClient = new Client($clientId, $clientSecret, $options);

$paymentId = 'my-payment-id';
$response = $kevinClient->payment()->getPaymentRefunds($paymentId);

Last updated