Bank Deposit Refunds
Introduction
Offline bank transfer deposits allow customers to deposit funds using the vIBAN assigned to their accounts.
Refunds are used in cases the merchant wants to return the deposit to the customer.
info
The main difference between refund and withdrawal is that refund is triggered by the merchant, not by the customer.
Prerequisites for bank transfer refund:
- Transaction
paymentType
must beBANK_TRANSFER
. - Transaction state must be
COMPLETED
. - Transaction type must be
DEPOSIT
. - One refund per deposit is allowed.
- The wallet account funding the refund must have the required refund amount.
- Refund amount is up to the deposit amount (partial refund is possible).
- Refund is only forwarded back to the payment instrument associated with the deposit.
- Refund currency is the same as the deposit currency.
- Refund must have a merchant reference number so double refunding is not possible.
- Refund does not require usual RISK details from the customer, since the operation is not triggered by him, but by the Merchant.
Refund Steps
- Get deposit transaction details from the transaction update event webhook or Transaction API.
GET https://api2.test.paysafe.com/digitalwallets/v1/transactions/{transactionId}
{
"id": "5040057610",
"slipId": "5009964049",
"customerId": "5435323362",
"accountId": "5014567344",
"type": "DEPOSIT",
"amount": 900,
"currencyCode": "EUR",
"fee": 100,
"creationTime": "2021-07-15T17:54:12Z",
"lastChangeDate": "2021-07-15T17:54:12Z",
"direction": "CREDIT",
"instrumentId": "1100000000000009",
"paymentType": "BANK_TRANSFER",
"status": "COMPLETED"
}
note
The transaction does not have merchantRefNum since it was created by Paysafe and the merchant was notified through webhook.
For a refund the id of the transaction, customerId and accountId are required.
- Call create refund API using the parameters.
warning
Merchant must provide merchantRefNum
for the new refund transaction.
POST https://api2.test.paysafe.com/paymenthub/v1/settlements/{transactionId}/refunds
Request
{
"merchantRefNum": "merchantRefNum-118",
"amount": 190,
"currencyCode": "EUR",
"dupCheck": true,
"wallet": {
"customerId": "5435323362",
"customerAccount": {
"id": "5014567344"
}
}
}
Response
{
"id": "c7ef07b2-0069-4f58-b9e2-0f4cdbc6c725",
"paymentType": "BANK_TRANSFER",
"merchantRefNum": "merchantRefNum-118",
"amount": 190,
"currencyCode": "EUR",
"txnTime": "2018-12-11T16:33:49Z",
"status": "PROCESSING",
"wallet": {
"customerId": "5435323362",
"customerAccount": {
"id": "5014567344",
"transactions" : [ {
"id": "12321",
"slipId": "5009964049",
"type": "REFUND",
"amount": 190,
"currencyCode": "EUR",
"creationTime": "2018-12-11T16:33:49Z",
"direction": "DEBIT",
"paymentType": "BANK_TRANSFER",
"status": "PROCESSING",
"merchantRefNum": "merchantRefNum-118"
}]
}
},
"gatewayReconciliationId": "2c8bc14c-8efd-4195-a7c9-15e371a30601",
"gatewayResponse": {
"processor": "WALLET"
},
"settlementId": "1c0d156c-445a-4171-8ddb-ef8fb4f01a74"
}
- The merchant can polls the transaction API for status or receives a webhook for the status of the refund transaction with the corresponding merchantRefNum.