Reversal

Request

Create a Post endpoint on your application using the path /reversal, we will send a request to this endpoint whenever a debit that has occurred on the wallet needs to be undone.

📘

Make sure to read the following information since you'll probably encounter it in this section.

Request

AttributeTypeDescriptionRequired
requestIdStringA unique ID for every request sent across. Very necessary for the macTrue
walletIdStringThe wallet ID of the wallet to reverse an amount onTrue
amountLongThe amount to be reversed (in minor)True
transactionReferenceStringThe transaction reference of this transactionTrue
originalTransactionReferenceStringThe transaction reference of the transaction to reverseTrue
macStringThe hash included in every request is used to make sure the request is from the actual source it should be and has not been tampered withTrue
transactionDateTimeLocalDateTimeThis is the date and time the transaction occurredFalse
terminalIdStringThis is an identifier for the terminal the transaction came fromFalse
terminalTypeStringA 2-digit string that defines the type of terminal.False
merchantIdStringThe merchant that accepted the cardFalse
acquiringInstitutionIdStringAn ID to identify the institution that acquired the transactionFalse
currencyCodeStringA code that identifies the currency the transaction was done onTrue
cardAcceptorNameLocationStringThe name and location of the card acceptorTrue
rrnStringThis is the Retrieval Ref NumberTrue
stanStringThis is the System Trace Audit Number TrueTrue
transactionFeeLongThe transaction fee in minorTrue
additionalFieldsMapAny other Iso field needed by a fintechFalse

Request Mac

The request mac is generated by concatenating the following attributes in the order in which they occur, generating an HMAC using the shared private key, and getting the hex string of the result.

transactionReference, originalTransactionReference, requestId, rrn, stan, walletId , amount, currencyCode

Response attributes

AttributeTypeDescriptionRequired
requestIdStringThe request-id that came with the request.True
responseCodeStringThe code that signifies the status of the operation.True
amountLongThe amount that came with the request.True
transactionReferenceStringThe reference that came with the requestTrue
originalTransactionReferenceStringThe original transaction reference that came with the requestTrue
macStringThe hash included in every response is used to make sure the request is from the actual source it should be and has not been tampered withTrue

Response Mac
The response Mac is generated by concatenating the following attributes in the order in which they occur, generating an HMAC using the shared private key, and getting the hex string of the result.

transactionReference, requestId, responseCode

Sample requests
The sample requests for the reversal only cover 3 scenarios. It should be noted that the difference between one response and another is just the response code. The response code table can be used to know the response code that can be used for other scenarios that might not be covered in the sample requests.

Successful

Request

{
    "requestId": "1",
    "walletId": "1234567894",
    "amount": 100,
    "transactionReference": "11123456789",
    "originalTransactionReference": "11123456789",
    "mac": "hexdigest",
    "transactionDateTime": "2020-05-15T13:32:09",
    "terminalId": "3IWPDVNA",
    "terminalType": "21",
    "merchantId": "WEBPAYDIRECTVNA",
    "acquiringInstitutionId": "428051043",
    "currencyCode": "566",
    "cardAcceptorNameLocation": "MATRIX ENERGY LIMITE   LA LANG",
    "rrn" : "000111000111",
    "stan" : "000018",
    "additionalFields=
        {
            "processingCode":"000000",
            "merchantType":"8850"
} }

Response

{
  "amount": 100,
  "responseCode": "00",
  "transactionReference": "11123456789",
  "originalTransactionReference": "11123456789",
  "requestId": "1",
  "mac": "hexdigest"
}

Invalid mac

Request

{
    "requestId": "1",
    "walletId": "1234567894",
    "amount": 1000,
    "transactionReference": "11123456789",
    "originalTransactionReference": "11123456789",
    "mac": "hexdigest",
    "transactionDateTime": "2020-05-15T13:32:09",
    "terminalId": "3IWPDVNA",
    "terminalType": "21",
    "merchantId": "WEBPAYDIRECTVNA",
    "acquiringInstitutionId": "428051043"
    "currencyCode": "566",
    "cardAcceptorNameLocation": "MATRIX ENERGY LIMITE   LA
    "rrn" : "000111000111",
    "stan" : "000018",
    "additionalFields=
        {
            "processingCode":"000000",
            "merchantType":"8850"
} }

Response

{
    "amount": 1000,
    "responseCode": "12",
    "transactionReference": "11123456789",
    "originalTransactionReference": "11123456789",
    "requestId": "1",
    "mac": "hexdigest"
}

Original transaction not found

Request

{
    "requestId": "1",
    "walletId": "1234567894",
    "amount": 1000,
    "transactionReference": "11123456789",
    "originalTransactionReference": "11123456700",
    "mac": "hexdigest",
    "transactionDateTime": "2020-05-15T13:32:09",
    "terminalId": "3IWPDVNA",
    "terminalType": "21",
    "merchantId": "WEBPAYDIRECTVNA",
    "acquiringInstitutionId": "428051043",
    "currencyCode": "566",
    "cardAcceptorNameLocation": "MATRIX ENERGY LIMITE   LA
    "rrn" : "000111000111",
    "stan" : "000018",
    "additionalFields=
        {
            "processingCode":"000000",
            "merchantType":"8850"
} }

Response

{
  "amount": 1000,
  "responseCode": "05",
  "transactionReference": "11123456789",
  "originalTransactionReference": "11123456700",
  "requestId": "1",
  "mac": "hexdigest"
}