Make Bulk Transfers

Learn how to make Bulk Transfers

The Bulk Transfers API processes an array of objects containing the account details of the recipients and the amount and queues them for processing. You can also include the narration and the transaction reference for each transfer.

Here is an example of how it works:

curl --request POST \
     --url https://api.blochq.io/v1/transfers/bulk \
     --header 'accept: application/json' \
     --header 'authorization: Bearer sk_live_64520e0201478f5cd412865f64520e0201478f5cd4128660' \
     --header 'content-type: application/json' \
     --data '
{
  "account_id": "640b045929eb9cf45bc720d2",
  "bulk_list": [
    {
      "amount": 1000,
      "bank_code": "090110",
      "account_number": "1012233362",
      "narration": "Bulk Test",
      "reference": "68314903j344223dd232ed13"
    },
    {
      "amount": 1000,
      "bank_code": "090110",
      "account_number": "1012233362",
      "narration": "Bulk Test",
      "reference": "68314903j344223dd232ed13"
    },
    {
      "amount": 1000,
      "bank_code": "090110",
      "account_number": "1012233362",
      "narration": "Bulk Test",
      "reference": "68314903j344223dd232ed13"
    }
  ]
}
'
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.blochq.io/v1/transfers/bulk")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["accept"] = 'application/json'
request["content-type"] = 'application/json'
request["authorization"] = 'Bearer sk_live_64520e0201478f5cd412865f64520e0201478f5cd4128660'
request.body = "{\"account_id\":\"640b045929eb9cf45bc720d2\",\"bulk_list\":[{\"amount\":1000,\"bank_code\":\"090110\",\"account_number\":\"1012233362\",\"narration\":\"Bulk Test\",\"reference\":\"68314903j344223dd232ed13\"},{\"amount\":1000,\"bank_code\":\"090110\",\"account_number\":\"1012233362\",\"narration\":\"Bulk Test\",\"reference\":\"68314903j344223dd232ed13\"},{\"amount\":1000,\"bank_code\":\"090110\",\"account_number\":\"1012233362\",\"narration\":\"Bulk Test\",\"reference\":\"68314903j344223dd232ed13\"}]}"

response = http.request(request)
puts response.read_body
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.blochq.io/v1/transfers/bulk', [
  'body' => '{"account_id":"640b045929eb9cf45bc720d2","bulk_list":[{"amount":1000,"bank_code":"090110","account_number":"1012233362","narration":"Bulk Test","reference":"68314903j344223dd232ed13"},{"amount":1000,"bank_code":"090110","account_number":"1012233362","narration":"Bulk Test","reference":"68314903j344223dd232ed13"},{"amount":1000,"bank_code":"090110","account_number":"1012233362","narration":"Bulk Test","reference":"68314903j344223dd232ed13"}]}',
  'headers' => [
    'accept' => 'application/json',
    'authorization' => 'Bearer sk_live_64520e0201478f5cd412865f64520e0201478f5cd4128660',
    'content-type' => 'application/json',
  ],
]);

echo $response->getBody();
import requests

url = "https://api.blochq.io/v1/transfers/bulk"

payload = {
    "account_id": "640b045929eb9cf45bc720d2",
    "bulk_list": [
        {
            "amount": 1000,
            "bank_code": "090110",
            "account_number": "1012233362",
            "narration": "Bulk Test",
            "reference": "68314903j344223dd232ed13"
        },
        {
            "amount": 1000,
            "bank_code": "090110",
            "account_number": "1012233362",
            "narration": "Bulk Test",
            "reference": "68314903j344223dd232ed13"
        },
        {
            "amount": 1000,
            "bank_code": "090110",
            "account_number": "1012233362",
            "narration": "Bulk Test",
            "reference": "68314903j344223dd232ed13"
        }
    ]
}
headers = {
    "accept": "application/json",
    "content-type": "application/json",
    "authorization": "Bearer sk_live_64520e0201478f5cd412865f64520e0201478f5cd4128660"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
AttributesRequired?Description
{{secretKey}}YesThis is your secret API key. Without it, your API request cannot be authenticated.
account_idYesThis is the unique id of the sender's account.
amountYesThis is the amount of money you want to send to a particular recipient
account_numberYesThis is the account number of the recipient
bank_codeYesThis is the unique bank code of the receiving bank. You can get it by calling the Get list of banks endpoint.
narrationNoA short message description of why the transfer was made.
referenceNoA unique id used for tracking the transaction. If you do not pass one, we will automatically generate one for you.

Once your request is successful, we'll process each of them individually. On your Dashboard, they'll be listed as separate transfer transactions, and all of the rules of Single Transfers will apply.

These transfers usually take a few seconds to a few minutes to complete depending on a few factors. First, we queue all of the transfers, and their transaction status will be "Pending".

Once a transfer is successful, we'll send a webhook notification and update the "Pending" status on the Dashboard to "Successful".