Refund
Refund a cardholder for returned goods
A cardholder, even long after a transaction has been completed with a capture, may change their mind and return the goods back to the merchant for various reasons. Refund operation is used for such cases to return funds back to the cardholder.
Initiating a Refund
Refund operation, just like capture and void, can only be executed for an existing transaction. So, it requires you to provide the transactionId
of the transaction that will be refunded, then also set a unique identifier for the refund. The only remaining property for the refund is the amount that will be refunded.
Depending on the amount, there might be various refund scenarios:
- Full Refund: A refund scenario that the total refund amount is equal to the transaction amount.
- Partial Refund: When a cardholder returns only some of the items back to the merchant rather than all, the merchant may refund the corresponding portion of the transaction. Partial refunds are allowed to all merchants by default.
- Over Refund: Due to various operational reasons a merchant may want to refund the cardholder more than the transaction amount. For example, returning goods might have required the cardholder to pay for shipping and the merchant may want to reimburse this additional cost. Over refund needs to be enabled in the merchant configuration in Cards Connect to be used and also requires a limit that is based on a fixed amount or the percentage of the transaction amount. If Cards Connect detects that the merchant is trying to over-refund for a transaction, it checks the merchant configuration to see if this operation is allowed and what are the limits. In the cases that the over-refund is not enabled for a merchant or merchant's over-refund limit is not sufficient, Cards Connect rejects the request with the corresponding error.
Cards Connect allows multiple refunds on the same transaction. So, a merchant can refund a certain portion a transaction, then, if a cardholder returns more goods for the same order, the merchant can refund more.
Unmatched Refund is not Possible
Cards Connect only allows refunding for an existing, captured transaction; in this sense a refund in Cards Connect always matches to a transaction. It is not possible to credit a cardholder freely in Cards Connect. This also means you can not refund a transaction you have not captured yet. If you are trying to cancel an authorised but not yet captured transaction, you should use Void operation instead.
Refund Response
As an operation, refund is similar to an authorisation. It needs to be approved by an issuer to be considered successful. So, after the refund request is validated by Cards Connect to see if it complies with the technical requirements as well as the business rules, it is sent to the issuer to be approved. Once Card Connect receives a response from the issuer, then it returns the response to you. Here you might expect to see the following outcomes:
- Succeeded: The refund request is approved by the issuer.
- Declined: The refund request was declined by the issuer or the card scheme. Use the response code and description to inform the merchant of the reason for the decline. You may retry after addressing the issue in the response code.
- Failed: The refund request failed due to an unknown issue or a system timeout. You may retry to initiate a refund again.
Auto Reversal for a Failed Refund
If Cards Connect encounters an unknown error while processing your refund request, you receive "Failed" as the outcome. Meanwhile, Cards Connect sends a refund reversal to the issuer to ensure that there's an agreement on the state of the transaction. While Cards Connect processes the reversal, your subsequent requests for the transaction are rejected to prevent ambiguous states. After the issuer approves the reversal request, you may request another refund.
On the other hand, if the issuer declines the refund reversal, the transaction remains in its current status but your subsequent operation requests (E.g. a Capture or another Refund) are rejected to prevent further ambiguity.
On the other hand, if your refund request fails to pass validations in the Cards Connect, you will receive an error message rather than the response outlined above. You may check the Error Codes page for possible errors you might encounter.
Retrieving the Details of a Refund
Cards Connect offers two methods to retrieve the details of refund operations. You may provide the transactionId
and the also the refundId
to fetch the information regarding that refund as:
GET transactions/b72805e2-9dcd-4962-a32f-25099e012e78/refunds/72d778f6-5deb-42dd-8f9c-6bb57051bd0d
The other usage allows you to pass just the transactionId
and retrieve all the refunds under the transaction:
GET transactions/b72805e2-9dcd-4962-a32f-25099e012e78/refunds
{
"transactionId": "b72805e2-9dcd-4962-a32f-25099e012e78",
"reconciliationId": "e8dd3707-0d8f-4dde-8691-dec639ba6f5e",
"refund": {
"id": "72d778f6-5deb-42dd-8f9c-6bb57051bd0d",
"amount": 400,
"outcome": "Succeeded",
"responseCode": "00",
"responseDescription": "Approved or completed successfully",
"createdAt": "2024-06-18T03:09:16.1488927Z"
}
}
{
"transactionId": "b72805e2-9dcd-4962-a32f-25099e012e78",
"reconciliationId": "e8dd3707-0d8f-4dde-8691-dec639ba6f5e",
"refunds": [{
"id": "72d778f6-5deb-42dd-8f9c-6bb57051bd0d",
"amount": 400,
"outcome": "Succeeded",
"responseCode": "00",
"responseDescription": "Approved or completed successfully",
"createdAt": "2024-06-18T03:09:16.1488927Z"
},
{
"id": "2c32da36-5598-46df-9b76-0cbf8b51e6fa",
"amount": 100,
"outcome": "Succeeded",
"responseCode": "00",
"responseDescription": "Approved or completed successfully",
"createdAt": "2024-06-18T03:09:19.2485927Z"
}]
}
Updated 3 months ago