Bank Transfer Initialization

This endpoint is used to initialize a bank transfer by generating a virtual account number for the transaction. The user will transfer funds to the generated account.

Endpoint

POST https://backendapi.sayswitchgroup.com/api/s2s/banktransfer/initialize

Here is the 2 step for seamless integration

  • 1 Initialize Bank Transfer
  • 2 Verify Transaction

1 Initialize Bank Transfer

Send a POST request to

https://backendapi.sayswitchgroup.com/api/s2s/banktransfer/initialize

Sample cURL Request

curl -X POST https://backendapi.sayswitchgroup.com/api/s2s/banktransfer/initialize \
 -H "Content-Type: application/json" \
 -d '{
   "email": "johndoe@gmail.com",
   "amount": "100",
   "currency": "NGN",
   "reference": "895362787365996276345987"
}'

Sample Response

{
  "status": true,
  "message": "Account generated successfully",
  "data": {
    "account_name": "SAYSWITCH",
    "account_number": "8787652431",
    "bank_name": "Wema Bank"
  }
}

Response Field

FieldTypeDescription
statusbooleanIndicates if the request was successful (true or false)
messagestringA message describing the result of the API call
dataobjectContains the virtual account details
account_namestringName of the generated virtual account
account_numberstringVirtual account number to receive the bank transfer
bank_namestringName of the bank providing the virtual account

2 Verify Transaction

After the user completes the bank transfer to the virtual account generated, you must verify the status of the transaction to confirm if the payment was received.

Endpoint

GET https://backendapi.sayswitchgroup.com/api/v1/your_referenceId

Verification of transaction is done by adding the reference of a specific transaction as URL path parameter

cURL Request

curl -X GET https://backendapi.sayswitchgroup.com/api/v1/SSW_17482573443162479 \
  -H "Authorization: Bearer YOUR_SECRET_KEY"

Sample Response

{
    "success": true,
    "message": "Verification successful",
    "data": {
        "amount": "10.12",
        "currency": "NGN",
        "status": "success",
        "transaction_date": "2025-05-26 12:04:40",
        "reference": "SSW_17482573443162479",
        "domain": "live",
        "gateway_response": null,
        "channel": "card",
        "ip_address": null,
        "originator_name": "",
        "originator_account_number": "",
        "fees": "0.12",
        "plan": null,
        "requested_amount": "10"
    },
    "customer": {
        "id": 1340,
        "customer_code": "CUS_7ewvq2vt6zlqyij",
        "first_name": "",
        "last_name": "",
        "email": "johndoe@gmail.com"
    },
    "card": {
        "first6Digits": "506105",
        "last4Digits": "7163",
        "expiry": "0827",
        "type": "verve",
        "token": "ss-tkn-uoekyzfdvnttyqscdkemrhq9"
    },
    "log": {
        "time_spent": null,
        "attempts": null,
        "authentication": null,
        "errors": 2,
        "success": true,
        "channel": "card",
        "history": [
            {
                "id": 8133,
                "type": "PURCHASES",
                "message": "{\"transactionRef\":\"SSW_17482573443162479\",\"paymentId\":\"1933911626\",\"bankCode\":\"011\",\"message\":\"Kindly enter the OTP sent to 234706***9927\",\"amount\":\"10.12\",\"responseCode\":\"T0\",\"plainTextSuppo",
                "time": null,
                "reference": "SSW_17482573443162479",
                "channel": "interswitch",
                "ip_address": "102.89.83.206",
                "device": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36"
            },
            
        ]
    }
}
⚠️

Note that bank transfers may take a few minutes to reflect, so ensure the transaction status is success