Make a Single Transfer

Learn how to integrate single transfers

A single transfer is sending money to a one bank account at a time. You can power a transfer with Bloc in 2 simple steps:

  • Verify the account number
  • Initiate transfer
  • Listen for the transfer status

Verify account number

You need to collect the customer's account details and verify that it is valid before initiating a bank transfer. If you do not verify, the transfer status will automatically return as failed.

To do this, call the Resolve Account endpoint below:

curl --request GET \
     --url '' \
     --header 'accept: application/json' \
     --header 'authorization: Bearer sk_live_64520e0201478f5cd412865f64520e0201478f5cd4128660'

Then you have to provide the following in your payload.

account_numberYesThis is the bank account number of the recipient.
bank_codeYesThis is the bank code of the recipient. Every bank has a bank code, and we use this bank code to identify what bank you are transferring to. To get all of the bank codes, use this endpoint: Get list of banks.

Get list of banks

When verifying the account number of your recipient, you need to get their bank details. The Get list of banks API is used to get all supported banks (in Nigeria) by Bloc.

To fetch the list of banks, call the following endpoint URL:

curl --request GET \
     --url \
     --header 'accept: application/json' \
     --header 'authorization: Bearer sk_live_64520e0201478f5cd412865f64520e0201478f5cd4128660'

Initiate transfer

Once the recipient details have been verified, use one of the following transfer endpoints to initiate a transfer to the recipient.

  1. Transfer From Organization Balance: Amount is deducted from your Main Balance.
  2. Transfer From A Fixed Account: Amount is deducted from the fixed account specified in the payload.
amountYesintegerThis is the amount being sent. When passing your amount, make sure to pass in kobo. To convert Naira to kobo, simply multiply the Naira amount by 100, e.g. NGN100 will be passed as "amount": 10000,.
bank_codeYesstringThis is the unique bank code of the receiving bank. You can get it by calling the Get list of banks endpoint.
account_numberYesstringThis is the account number of the recipient.
narrationNostringThis is a reason for the transfer
referenceNostringThis is a unique identifier for the transaction. If you pass a reference number, we'll use it in our system. If no reference number is passed, we automatically generate one for the transfer.
meta_dataNoobjectThis is additional data passed by you with the request. We always return this meta_data when returning a response.


Important to Note:

When transferring from a Fixed Account, we require you to pass an additional attribute, account_id. This is the unique id of the Fixed Account you want to transfer from.

Listen for transfer status

By default, we return a "pending" status via webhooks. Once we confirm that the receiving bank has received it, we'll return a "successful" status via webhooks.

See our Supported Events page to see what we send to you.


Helpful Tip:

We do not return "successful" status messages if we do not get a confirmation from the receiving bank. If a transfer is returned as "successful", then it means the money was received by the receiving bank.

If a transfer shows "successful" but was not confirmed by the recipient, we advise you to reach out to the receiving bank.