Accept Payments

Bank Transfer Initialization

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

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.

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

JSON
{
  "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.

GEThttps://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
curl -X GET https://backendapi.sayswitchgroup.com/api/v1/SSW_17482573443162479 \
  -H "Authorization: Bearer YOUR_SECRET_KEY"

Sample Response

JSON
{
    "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