Refunds
Refund a Payment Initiation payment
Refunds enable you to refund your end users. You can issue refunds for any Payment Initiation payments that have settled in your virtual account.
The original payment must be in a settled state to be refunded.
To refund partially, specify the amount as part of the request.
If the amount is not specified, the refund amount will be equal to all of the remaining payment amount that has not been refunded yet.
If the remaining payment amount is less than one unit of currency (e.g. 1 GBP or 1 EUR), the refund will fail.
Execute a Refund
Make sure your virtual account is set up before following these steps. For more information on setting up an account, see Managing virtual accounts.
Follow the Payment Confirmation flow to pay into your virtual account.
Call
/wallet/getto check your virtual account balance for sufficient funds.- If you have insufficient funds, fund your virtual account before proceeding. After funding your virtual account, you can check the updated balance by calling
/wallet/get.
- If you have insufficient funds, fund your virtual account before proceeding. After funding your virtual account, you can check the updated balance by calling
Issue a refund by calling
/payment_initiation/payment/reverse, providing thepayment_idfrom the payment made in Step 3, and optionally anamountfor partial refunds. Store therefund_idandstatusfrom the response.If you have configured transaction webhooks, you will receive a status update that the Refund transitioned from
INITIATEDtoEXECUTED.Alternatively, if not using webhooks, you can confirm the transaction has been executed by calling
/wallet/transaction/getwith thetransaction_id.You can also confirm that the original payment was refunded by calling
/payment_initiation/payment/getwith thepayment_idto see therefund_idas part of the payment’s details.
If you have previously executed any partial refunds for the payment, you can still issue subsequent refunds if this payment has sufficient remaining amount.
- To check if the payment has sufficient remaining amount, call
/payment_initiation/payment/getand fetch theamount_refundedfield, which represents the amount that has been refunded already. Subtract this from the payment amount to calculate the amount still available to refund.
- To check if the payment has sufficient remaining amount, call
A successful refund will transition to the EXECUTED status. If a refund is in a FAILED status, you may try again, with a new idempotency_key, until you have a refund in an EXECUTED status for the payment. Refunds should transition to EXECUTED or FAILED automatically. If this does not occur,
Testing Refunds
You can begin testing Refunds in Sandbox by following the steps listed in the Add Virtual Accounts to your App guide. For Production access you will first need to submit a product access request Support ticket.