Skip to main content

Overview

The transfers API lets you send funds from your Hyparrow wallet to any Nigerian bank account. Before initiating a transfer you should always validate the recipient account to confirm the account name — this prevents irreversible misdirected payments.
Always validate the recipient account before sending a transfer. Bank transfers are irreversible once processed.

Step-by-step guide

1

List supported banks

Fetch all banks and their codes. You’ll need a bank’s bankCode for account inquiry and for initiating transfers.
GET https://api.hyparrow.com/api/v1/transfers/banks
x-api-key: your_api_key
x-api-secret: your_api_secret
Response
{
  "success": true,
  "data": [
    { "bankCode": "057", "bankName": "Zenith Bank" },
    { "bankCode": "011", "bankName": "First Bank" },
    { "bankCode": "058", "bankName": "GTBank" }
  ]
}
2

Validate the recipient account

Confirm the account number resolves to the expected account name before sending funds. This endpoint accepts both GET (query params) and POST (JSON body).
GET https://api.hyparrow.com/api/v1/transfers/account-inquiry?accountNumber=0123456789&bankCode=057
x-api-key: your_api_key
x-api-secret: your_api_secret
Response
{
  "success": true,
  "data": {
    "AccountNumber": "0123456789",
    "AccountName": "JANE DOE"
  }
}
Present the resolved AccountName to your user and ask them to confirm before proceeding.
3

Initiate the transfer

Send the transfer. The amount is deducted from your wallet immediately.
POST https://api.hyparrow.com/api/v1/transfers/initiate
x-api-key: your_api_key
x-api-secret: your_api_secret
Content-Type: application/json
{
  "amount": "500000",
  "recipientAccount": "0123456789",
  "recipientBankCode": "057",
  "recipientName": "Jane Doe",
  "senderPhone": "08012345678",
  "senderEmail": "sender@example.com",
  "senderLastname": "Smith",
  "senderOthernames": "John",
  "narration": "Payment for services"
}
Response
{
  "success": true,
  "message": "Transfer initiated successfully and wallet debited",
  "data": {
    "TransferCode": "145317076841230456",
    "TransactionID": "b3f2c1d4-...",
    "WalletBalance": 4500000
  }
}
The amount field is in kobo as a string. ₦5,000 = "500000". Save the returned TransferCode — you’ll use it to check status.
4

Check transfer status

Poll for the final status of a transfer using the TransferCode returned at initiation.
GET https://api.hyparrow.com/api/v1/transfers/status?reference=145317076841230456
x-api-key: your_api_key
x-api-secret: your_api_secret
Response
{
  "success": true,
  "data": {
    "TransferCode": "145317076841230456",
    "ResponseCode": "00",
    "ResponseDescription": "Approved"
  }
}

Endpoints reference

MethodEndpointDescription
GET/api/v1/transfers/banksList supported banks and their codes
GET/api/v1/transfers/account-inquiryValidate an account (query params)
POST/api/v1/transfers/account-inquiryValidate an account (JSON body)
POST/api/v1/transfers/initiateSend a bank transfer
GET/api/v1/transfers/status?reference=Check transfer status

Transfer request body

amount
string
required
Amount to transfer in kobo as a string (e.g. "500000" for ₦5,000). Must not exceed your wallet balance.
recipientAccount
string
required
The recipient’s 10-digit NUBAN account number.
recipientBankCode
string
required
The 3-digit bank code for the recipient’s bank. Retrieve this from GET /api/v1/transfers/banks.
recipientName
string
required
Full name of the recipient (e.g. "Jane Doe"). The API splits this into firstname and lastname automatically.
senderPhone
string
required
Phone number of the sender.
senderEmail
string
required
Email address of the sender.
senderLastname
string
required
Last name of the sender.
senderOthernames
string
required
First and middle names of the sender.
narration
string
Optional description that appears on the recipient’s bank statement.

Account inquiry parameters

accountNumber
string
required
The 10-digit NUBAN account number to validate.
bankCode
string
required
The 3-digit bank code for the account’s bank.