Skip to main content

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 be BANK_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

  1. 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.

  1. 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"
}
  1. The merchant can polls the transaction API for status or receives a webhook for the status of the refund transaction with the corresponding merchantRefNum.