Transfers
This section describes how merchants and developers can Send funds to Bank acc.
Initiate a Transfer
This section describes how to Initate a transfer with Flutterwave.
post
https://api.flutterwave.com/v3/transfersBody Params
string
This is the recipient bank code. You can see a list of all the available banks and their codes from the get banks endpoints.
string
This is the recipient account number.
int32
This is the amount to be transferred to the recipient.
string
This is the narration for the transfer e.g. payments for x services provided.
int32
This is the currency for the Transfer. Expected values include NGN, GHS, KES, UGX, TZS, USD or ZAR.
string
This is the full name of the Transfer beneficiary.
string
This code is used to identify Bank branches for disbursement in Ghana, Uganda and Tanzania. You can get the code from the /get branches endpoint in the Bank section.
int32
This is the beneficiary's id. It allows you to initiate a transfer to an existing beneficiary.
string
This is a merchant's unique reference for the transfer, it can be used to query for the status of the transfer.
string
This is a url passed by you the developer, Flutterwave would pass the final transfer response to this callback url. You can use this in place of Webhooks.
string
You can pass this when you want to debit a currency balance and send money in another currency.
string
This is required if the debit wallet is a Payout SubAccount.
object
This is an object you can use to add any additional payment information you would like to associate with this transfer.
string
This is the first name of the recipient and it's required for ZAR Bank Acccount Transfers.
string
This is the last name of the recipient and it's required for ZAR Bank Account Transfers.
string
This is the email address of the recipient and it's required for ZAR Bank Account Transfers
string
This is the address of the transfer recipient and it's required for ZAR Bank Account Transfers
string
This is the mobile number of the recipient and its required for ZAR Bank Account Transfers and M-Pesa transfers. If the recipient's email address is passed
string
This is the sender's full name and it's required for M-Pesa (Mobile Money Kenya) transfers
string
This is the sender's country and it's required for M-Pesa (Mobile Money Kenya) transfers
Headers
string
Pass your secret key as a bearer token in the request header to authorize this call
{
"account_bank": "044",
"account_number": "0690000040",
"amount": 5500,
"narration": "Akhlm Pstmn Trnsfr xx007",
"currency": "NGN",
"reference": "akhlm-pstmnpyt-rfxx007_PMCKDU_1",
"callback_url": "https://www.flutterwave.com/ng/",
"debit_currency": "NGN"
}
{
"account_number": "0690000036",
"account_bank": "044",
"narration": "Sample USD DOM transfer",
"amount": 50,
"reference": "sample_ref",
"currency": "USD",
"debit_currency": "USD",
"beneficiary_name": "Flutterwave Developers",
"meta": [
{
"first_name": "Flutterwave",
"last_name": "Developers",
"email": "developers@flutterwavego.com",
"beneficiary_country": "NG",
"mobile_number": "+2348000000000",
"sender": "Flutterwave Engineering",
"merchant_name": "Flutterwave"
}
]
}
{
"account_bank": "GH280100",
"account_number": "0031625807099",
"amount": 50,
"narration": "Test GHS bank transfers",
"currency": "GHS",
"reference": "new-GHS-test-transfer1",
"callback_url": "https://www.flutterwave.com/ng/",
"destination_branch_code": "GH280103",
"beneficiary_name": "Flutterwave Developers"
}
{
"account_bank": "68",
"account_number": "0031625807099",
"amount": 500,
"narration": "Withdraw Fiat",
"currency": "KES",
"reference": "496_PMCKDU_1",
"debit_currency":"USD",
"beneficiary_name": "Flutterwave Developers",
"callback_url": "https://mycallbackurl.com/kes/callback",
"meta": [
{
"sender": "Flutterwave Developers",
"sender_country": "UK",
"mobile_number": "+2348000000000"
}
]
}
{
"account_bank": "FNB",
"account_number": "0031625807099",
"amount": 500,
"narration": "Withdraw Fiat",
"currency": "ZAR",
"reference": "496_PMCKDU_1",
"debit_currency":"NGN",
"beneficiary_name": "Flutterwave Developers",
"callback_url": "https://www.flutterwave.com/ng/",
"meta": [
{
"first_name": "Flutterwave",
"last_name": "Developers",
"email": "developers@flutterwavego.com",
"mobile_number": "+2348000000000",
"recipient_address": "234 Kings road, Cape Town"
}
]
}
{
"amount": 50,
"narration": "Test EU Int'l bank transfers",
"currency": "EUR",
"reference": "new-intl-eu-test-transfer",
"beneficiary_name": "Flutterwave Developers",
"meta": [
{
"AccountNumber": "DA091983888373BGH",
"RoutingNumber": "BECFDE7HKKX",
"SwiftCode": "BECFDE7HKKX",
"BankName": "LLOYDS BANK",
"BeneficiaryName": "Flutterwave Developers",
"BeneficiaryCountry": "DE",
"PostalCode": "80489",
"StreetNumber": "31",
"StreetName": "Handelsbank Elsenheimer Str.",
"City": "München"
}
]
}
{
"amount": 50,
"narration": "Test Int'l bank transfers",
"currency": "USD",
"reference": "new-intl-test-transfer1",
"beneficiary_name": "Flutterwave Developers",
"meta": [
{
"AccountNumber": "09182972BH",
"RoutingNumber": "0000000002993",
"SwiftCode": "ABJG190",
"BankName": "BANK OF AMERICA, N.A., SAN FRANCISCO, CA",
"BeneficiaryName": "Flutterwave Developers",
"BeneficiaryAddress": "San Francisco, 4 Newton",
"BeneficiaryCountry": "US"
}
]
}
{
"amount": 50,
"narration": "Test Int'l bank transfers",
"currency": "USD",
"reference": "new-intl-test-transfer",
"beneficiary_name": "Flutterwave Developers",
"meta": [
{
"AccountNumber": "091820932BH",
"RoutingNumber": "0000002993",
"SwiftCode": "ABJG190",
"BankName": "BARCLAYS BANK (U) LIMITED",
"BeneficiaryName": "Flutterwave Developers",
"BeneficiaryAddress": "HANNINGTON ROAD, KAMPALA UGANDA",
"BeneficiaryCountry": "OT"
}
]
}
{
"account_bank": "FMM",
"account_number": "250700000000",
"amount": 50,
"narration": "New franco transfer",
"currency": "XAF",
"reference": "new-franco-momo-test-transfer",
"beneficiary_name": "Flutterwave Developers"
}
{
"account_bank": "MTN",
"account_number": "233500000000",
"amount": 50,
"narration": "New GHS momo transfer",
"currency": "GHS",
"reference": "new-ghs-momo-transfer",
"beneficiary_name": "Flutterwave Developers"
}
{
"account_bank": "MPS",
"account_number": "2540700000000",
"amount": 50,
"narration": "New transfer",
"currency": "KES",
"reference": "mk-902837-jk",
"beneficiary_name": "Flutterwave Developers",
"meta": {
"sender": "Obembe Mark",
"sender_country": "US",
"mobile_number": "12313131231231"
}
}
{
"account_bank": "MPS",
"account_number": "233500000000",
"amount": 50,
"narration": "New RWF momo transfer",
"currency": "RWF",
"reference": "new-rwf-momo-transfer",
"beneficiary_name": "Flutterwave Developers"
}
{
"account_bank": "MPS",
"account_number": "233500000000",
"amount": 50,
"narration": "UGX momo transfer",
"currency": "UGX",
"reference": "ugx-momo-transfer",
"beneficiary_name": "Flutterwave Developers"
}
{
"account_bank": "MPS",
"account_number": "250700000000",
"amount": 50,
"narration": "New ZMW transfer",
"currency": "ZMW",
"reference": "new-ZMW-momo-test-transfer",
"beneficiary_name": "Flutterwave Developers"
}
{
"account_number": "+2348000000000",
"account_bank": "barter",
"narration": "Test",
"amount": 20,
"reference": "barter-transfer-2",
"currency": "NGN",
"beneficiary_name": "Flutterwave Developers"
}
{
"account_bank": "flutterwave",
"account_number": "00118468",
"amount": 5500,
"narration": "payment for x service provided",
"currency": "NGN",
"reference": "wallet-transfer",
"debit_currency": "NGN"
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 26251,
"account_number": "0690000040",
"bank_code": "044",
"full_name": "Flutterwave Developers",
"created_at": "2020-01-20T16:09:34.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 5500,
"fee": 45,
"status": "NEW",
"reference": "akhlm-pstmnpyt-rfxx007_PMCKDU_1",
"meta": null,
"narration": "Akhlm Pstmn Trnsfr xx007",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "ACCESS BANK NIGERIA"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 161265,
"account_number": "0690000036",
"bank_code": "044",
"full_name": "Flutterwave Developers",
"created_at": "2021-01-13T09:23:04.000Z",
"currency": "USD",
"debit_currency": "USD",
"amount": 65,
"fee": 40.325,
"status": "NEW",
"reference": "khlm-dom-5245",
"meta": [
{
"FirstName": "Flutterwave",
"LastName": "Developers",
"EmailAddress": "developers@flutterwavego.com",
"BeneficiaryCountry": "NG",
"MobileNumber": "+2348000000000",
"Sender": "Iphie",
"AccountNumber": "0690000036",
"RoutingNumber": "044",
"MerchantName": "Flutterwave"
}
],
"narration": "Blow my mind",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "ACCESS BANK NIGERIA"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 127831,
"account_number": "0031625807099",
"bank_code": "GH280100",
"full_name": "Flutterwave Developers",
"created_at": "2020-06-25T11:24:01.000Z",
"currency": "GHS",
"amount": 50,
"fee": 20,
"status": "NEW",
"reference": "new-GHS-test-transfer2",
"meta": null,
"narration": "Test GHS bank transfers",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "ACCESS BANK GH LTD"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 193313,
"account_number": "0031625807099",
"bank_code": "FNB",
"full_name": "Flutterwave Developers",
"created_at": "2021-05-25T17:23:30.000Z",
"currency": "ZAR",
"debit_currency": "NGN",
"amount": 500,
"fee": 10,
"status": "NEW",
"reference": "4956_PMCKDU_1",
"meta": [
{
"FirstName": "Flutterwave",
"LastName": "Developers",
"EmailAddress": "developers@flutterwavego.com",
"MobileNumber": "+23400000000",
"Address": "234 Kings road, Cape Town",
"MerchantName": "Flutterwave Engineering",
"SenderCountry": "NG",
"SenderAddress": "No 8b Providence street lekki Lagos",
"AccountNumber": "0031625807099",
"RoutingNumber": "FNB",
"Sender": "Flutterwave Engineering"
}
],
"narration": "Withdraw Fiat",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "First National Bank"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 127885,
"account_number": "FOREIGN-ACCOUNT",
"bank_code": "FOREIGN-BANK",
"full_name": "Flutterwave Developers",
"created_at": "2020-06-25T13:59:53.000Z",
"currency": "EUR",
"amount": 50,
"fee": 35,
"status": "NEW",
"reference": "new-intl-eu-test-transfer",
"meta": [
{}
],
"narration": "Test EU Int'l bank transfers",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 127829,
"account_number": "FOREIGN-ACCOUNT",
"bank_code": "FOREIGN-BANK",
"full_name": "Flutterwave Developers",
"created_at": "2020-06-25T11:21:38.000Z",
"currency": "USD",
"amount": 50,
"fee": 40,
"status": "NEW",
"reference": "new-intl-test-transfer1",
"meta": [
{}
],
"narration": "Test Int'l bank transfers",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 127884,
"account_number": "FOREIGN-ACCOUNT",
"bank_code": "FOREIGN-BANK",
"full_name": "Flutterwave Developers",
"created_at": "2020-06-25T13:52:34.000Z",
"currency": "USD",
"amount": 50,
"fee": 40,
"status": "NEW",
"reference": "new-intl-test-transfer",
"meta": [
{}
],
"narration": "Test Int'l bank transfers",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
{
"account_bank": "FMM",
"account_number": "250700000000",
"amount": 50,
"narration": "New franco transfer",
"currency": "XAF",
"reference": "new-franco-momo-test-transfer",
"beneficiary_name": "Flutterwave Developers"
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 127890,
"account_number": "250780411008",
"bank_code": "FMM",
"full_name": "Flutterwave Developers",
"created_at": "2020-06-25T14:11:45.000Z",
"currency": "XAF",
"amount": 50,
"fee": 500,
"status": "NEW",
"reference": "new-franco-momo-test-transfer",
"meta": null,
"narration": "New franco transfer",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 127886,
"account_number": "2540782773934",
"bank_code": "MPS",
"full_name": "Flutterwave Developers",
"created_at": "2020-06-25T14:03:51.000Z",
"currency": "KES",
"amount": 50,
"fee": 45,
"status": "NEW",
"reference": "mk-902837-jk",
"meta": null,
"narration": "New transfer",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 127889,
"account_number": "233542773934",
"bank_code": "MTN",
"full_name": "Flutterwave Developers",
"created_at": "2020-06-25T14:09:42.000Z",
"currency": "RWF",
"amount": 50,
"fee": 45,
"status": "NEW",
"reference": "new-rwf-momo-transfer",
"meta": null,
"narration": "New RWF momo transfer",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 127894,
"account_number": "233542773934",
"bank_code": "MPS",
"full_name": "Flutterwave Developers",
"created_at": "2020-06-25T14:39:16.000Z",
"currency": "UGX",
"amount": 50,
"fee": 500,
"status": "NEW",
"reference": "ugx-momo-transfer",
"meta": null,
"narration": "UGX momo transfer",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 8773850,
"account_number": "250780411008",
"bank_code": "MPS",
"full_name": "Flutterwave Developers",
"created_at": "2021-05-14T16:01:31.000Z",
"currency": "ZMW",
"amount": 50,
"fee": 1.5,
"status": "NEW",
"reference": "new-ZMW-momo-test-transfer",
"meta": null,
"narration": "New ZMW transfer",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "Mobile Money"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 6968703,
"account_number": "+2348xxxxxxxx8",
"bank_code": "barter",
"full_name": "Flutterwave Developers",
"created_at": "2021-02-10T11:32:59.000Z",
"currency": "NGN",
"amount": 20,
"fee": 0,
"status": "NEW",
"reference": "barter-transfer-2",
"meta": null,
"narration": "Test",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 128286,
"account_number": 2587731,
"bank_code": "flutterwave",
"full_name": "FLUTTERWAVE V3 DOCS",
"created_at": "2020-06-29T21:35:15.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 100,
"fee": 0,
"status": "NEW",
"reference": "wallet-transfer",
"meta": {
"wallet_email": "deji+v3docs@flutterwavego.com",
"AccountId": 118468,
"merchant_id": "00118468"
},
"narration": "payment for x service provided",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "wallet"
}
}
{}
Kindly read the special note on Transfers for additional information on how to correctly initiate your Transfers.
Retry a Transfer
This section describes how to retry a previously failed transfer.
post
https://api.flutterwave.com/v3/transfers/:id/retriesPath Params
int32
This is the unique identifier for the transfer you want to retry. It is returned in the call to create a transfer as data.id
Headers
string
Pass your secret key as a bearer token in the request header to authorize this call
var request = require('request');
var options = {
'method': 'POST',
'url': '{{BASE_API_URL}}/transfers/166948/retries',
'headers': {
'Authorization': 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X',
'Content-Type': 'application/json'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "{{BASE_API_URL}}/transfers/166948/retries",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X",
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("{{BASE_API_URL}}/transfers/166948/retries")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
request["Content-Type"] = "application/json"
response = http.request(request)
puts response.read_body
{
"status": "success",
"message": "Transfer retry attempt queued.",
"data": {
"id": 166948,
"account_number": "0690000041",
"bank_code": "044",
"full_name": "Flutterwave Developers",
"created_at": "2021-01-29T10:50:58.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 1000,
"fee": 10.75,
"status": "NEW",
"reference": "TRF-640361604052_RETRY_2",
"meta": null,
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "ACCESS BANK NIGERIA"
}
}
{}
Create a Bulk transfer
This section describes how to create a bulk transfer, i.e. a transfer attempt for multiple transfers.
post
https://api.flutterwave.com/v3/bulk-transfersBody Params
string
This is the title of the bulk transfer attempt.
object
An array of objects containing the transfer charge data. This array contains the same payload you would passed to create a single transfer with multiple different values.
string
This is the first name of the transfer recipient.
string
This is the last name of the transfer recipient.
string
This is the email address of the transfer recipient.
string
This is the mobile number of the recipient. If the recipient's email address is passed, this becomes an optional parameter.
string
This is the address of the transfer recipient.
Headers
string
Pass your secret key as a bearer token in the request header to authorize this call
var axios = require('axios');
var data = JSON.stringify({
"title": "Test_ZAR_Bulk_Transfers_1",
"bulk_data": [
{
"bank_code": "FNB",
"account_number": "0031625807099",
"amount": 1900,
"currency": "ZAR",
"narration": "Test transfer to F4B Developers",
"reference": "bulk_Transfers_0019_PMCK",
"meta": [
{
"first_name": "F4B",
"last_name": "Developers",
"email": "developers@flutterwavego.com",
"mobile_number": "+23457558595",
"recipient_address": "234 Kings road, Cape Town"
}
]
},
{
"bank_code": "FNB",
"account_number": "0031625807099",
"amount": 3200,
"currency": "ZAR",
"narration": "Test transfer to Support",
"reference": "bulk_Transfers_0020_PMCK",
"meta": [
{
"first_name": "Flutterwave",
"last_name": "Support",
"email": "support@flutterwavego.com",
"mobile_number": "+23457558595",
"recipient_address": "234 Kings road, Cape Town"
}
]
},
{
"bank_code": "FNB",
"account_number": "0031625807099",
"amount": 6950,
"currency": "ZAR",
"narration": "Test transfer to Flutterwave Developers",
"reference": "bulk_Transfers_0021_PMCK",
"meta": [
{
"first_name": "Flutterwave",
"last_name": "Developers",
"email": "developers@flutterwavego.com",
"mobile_number": "+23457558595",
"recipient_address": "234 Kings road, Cape Town"
}
]
},
{
"bank_code": "FNB",
"account_number": "0031625807099",
"amount": 1500,
"currency": "ZAR",
"narration": "Test transfer to Wavers",
"reference": "bulk_Transfers_0022_PMCK",
"meta": [
{
"first_name": "Wavers",
"last_name": "N/A",
"email": "hi@flutterwavego.com",
"mobile_number": "+23457558595",
"recipient_address": "234 Kings road, Cape Town"
}
]
}
]
});
var config = {
method: 'post',
url: 'https://api.flutterwave.com/v3/bulk-transfers/',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.flutterwave.com/v3/bulk-transfers/',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"title": "Test_ZAR_Bulk_Transfers_1",
"bulk_data": [
{
"bank_code": "FNB",
"account_number": "0031625807099",
"amount": 1900,
"currency": "ZAR",
"narration": "Test transfer to F4B Developers",
"reference": "bulk_Transfers_0019_PMCK",
"meta": [
{
"first_name": "F4B",
"last_name": "Developers",
"email": "developers@flutterwavego.com",
"mobile_number": "+23457558595",
"recipient_address": "234 Kings road, Cape Town"
}
]
},
{
"bank_code": "FNB",
"account_number": "0031625807099",
"amount": 3200,
"currency": "ZAR",
"narration": "Test transfer to Support",
"reference": "bulk_Transfers_0020_PMCK",
"meta": [
{
"first_name": "Flutterwave",
"last_name": "Support",
"email": "support@flutterwavego.com",
"mobile_number": "+23457558595",
"recipient_address": "234 Kings road, Cape Town"
}
]
},
{
"bank_code": "FNB",
"account_number": "0031625807099",
"amount": 6950,
"currency": "ZAR",
"narration": "Test transfer to Flutterwave Developers",
"reference": "bulk_Transfers_0021_PMCK",
"meta": [
{
"first_name": "Flutterwave",
"last_name": "Developers",
"email": "developers@flutterwavego.com",
"mobile_number": "+23457558595",
"recipient_address": "234 Kings road, Cape Town"
}
]
},
{
"bank_code": "FNB",
"account_number": "0031625807099",
"amount": 1500,
"currency": "ZAR",
"narration": "Test transfer to Wavers",
"reference": "bulk_Transfers_0022_PMCK",
"meta": [
{
"first_name": "Wavers",
"last_name": "N/A",
"email": "hi@flutterwavego.com",
"mobile_number": "+23457558595",
"recipient_address": "234 Kings road, Cape Town"
}
]
}
]
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "json"
require "net/http"
url = URI("https://api.flutterwave.com/v3/bulk-transfers/")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
request.body = JSON.dump({
"title": "Test_ZAR_Bulk_Transfers_1",
"bulk_data": [
{
"bank_code": "FNB",
"account_number": "0031625807099",
"amount": 1900,
"currency": "ZAR",
"narration": "Test transfer to F4B Developers",
"reference": "bulk_Transfers_0019_PMCK",
"meta": [
{
"first_name": "F4B",
"last_name": "Developers",
"email": "developers@flutterwavego.com",
"mobile_number": "+23457558595",
"recipient_address": "234 Kings road, Cape Town"
}
]
},
{
"bank_code": "FNB",
"account_number": "0031625807099",
"amount": 3200,
"currency": "ZAR",
"narration": "Test transfer to Support",
"reference": "bulk_Transfers_0020_PMCK",
"meta": [
{
"first_name": "Flutterwave",
"last_name": "Support",
"email": "support@flutterwavego.com",
"mobile_number": "+23457558595",
"recipient_address": "234 Kings road, Cape Town"
}
]
},
{
"bank_code": "FNB",
"account_number": "0031625807099",
"amount": 6950,
"currency": "ZAR",
"narration": "Test transfer to Flutterwave Developers",
"reference": "bulk_Transfers_0021_PMCK",
"meta": [
{
"first_name": "Flutterwave",
"last_name": "Developers",
"email": "developers@flutterwavego.com",
"mobile_number": "+23457558595",
"recipient_address": "234 Kings road, Cape Town"
}
]
},
{
"bank_code": "FNB",
"account_number": "0031625807099",
"amount": 1500,
"currency": "ZAR",
"narration": "Test transfer to Wavers",
"reference": "bulk_Transfers_0022_PMCK",
"meta": [
{
"first_name": "Wavers",
"last_name": "N/A",
"email": "hi@flutterwavego.com",
"mobile_number": "+23457558595",
"recipient_address": "234 Kings road, Cape Town"
}
]
}
]
})
response = https.request(request)
puts response.read_body
{
"status": "success",
"message": "Bulk transfer queued",
"data": {
"id": 2013,
"created_at": "2020-01-20T16:36:29.000Z",
"approver": "N/A"
}
}
{}
Get Transfer fees
This endpoint help the merchant/developer query the fee for the transfer being made.
get
https://api.flutterwave.com/v3/transfers/feeQuery Params
int32
This is the amount to be transferred.
string
This is the specified currency for the transfer. Expected values include: NGN, USD, GHS, KES, UGX, RWF.
string
This is the type of transfer you want to get the fee for. Expected values are mobilemoney and account.
Headers
string
Pass your secret key as a bearer token in the request header to authorize this call
var request = require('request');
var options = {
'method': 'GET',
'url': '{{BASE_API_URL}}/transfers/fee?amount=10000',
'headers': {
'Authorization': 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "{{BASE_API_URL}}/transfers/fee?amount=10000",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("{{BASE_API_URL}}/transfers/fee?amount=10000")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
response = http.request(request)
puts response.read_body
{
"status": "success",
"message": "Transfer fee fetched",
"data": [
{
"fee_type": "value",
"currency": "NGN",
"fee": 45
},
{
"fee_type": "value",
"currency": "KES",
"fee": 100
},
{
"fee_type": "value",
"currency": "GHS",
"fee": 5
},
{
"fee_type": "value",
"currency": "USD",
"fee": 40
},
{
"fee_type": "value",
"currency": "UGX",
"fee": 5000
},
{
"fee_type": "value",
"currency": "TZS",
"fee": 3000
},
{
"fee_type": "value",
"currency": "GBP",
"fee": 35
},
{
"fee_type": "value",
"currency": "EUR",
"fee": 35
},
{
"fee_type": "value",
"currency": "ZMW",
"fee": 62.6
},
{
"fee_type": "value",
"currency": "ZAR",
"fee": 10
},
{
"fee_type": "value",
"currency": "RWF",
"fee": 1000
}
]
}
{}
Get all Transfers
This endpoint allows the developer/merchant to spool all their transfers.
get
https://api.flutterwave.com/v3/transfersQuery Params
string
This allows you fetch from a specific page e.g. setting 1 retrieves the first page.
string
This allows you fetch only transfers with a specific status e.g. fetch all successful transactions. Expected values include failed, successful.
Headers
string
Pass your secret key as a bearer token in the request header to authorize this call
var request = require('request');
var options = {
'method': 'GET',
'url': '{{BASE_API_URL}}/transfers',
'headers': {
'Authorization': 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "{{BASE_API_URL}}/transfers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("{{BASE_API_URL}}/transfers")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
response = http.request(request)
puts response.read_body
{
"status": "success",
"message": "Transfers fetched",
"meta": {
"page_info": {
"total": 150,
"current_page": 1,
"total_pages": 15
}
},
"data": [
{
"id": 26255,
"account_number": "0690000034",
"bank_code": "044",
"full_name": "Ade Bond",
"created_at": "2020-01-20T16:36:33.000Z",
"currency": "NGN",
"debit_currency": null,
"amount": 5000,
"fee": 53750,
"status": "PENDING",
"reference": "akhlm-blktrnsfr-xy03",
"meta": null,
"narration": "akhlm blktrnsfr",
"approver": null,
"complete_message": "Transaction is currently being processed",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "ACCESS BANK NIGERIA"
},
{
"id": 26254,
"account_number": "0690000034",
"bank_code": "044",
"full_name": "Ade Bond",
"created_at": "2020-01-20T16:34:41.000Z",
"currency": "NGN",
"debit_currency": null,
"amount": 5000,
"fee": 53750,
"status": "PENDING",
"reference": "akhlm-blktrnsfr-xy02",
"meta": null,
"narration": "akhlm blktrnsfr",
"approver": null,
"complete_message": "Transaction is currently being processed",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "ACCESS BANK NIGERIA"
},
{
"id": 26252,
"account_number": "0690000040",
"bank_code": "042",
"full_name": "N/A",
"created_at": "2020-01-20T16:10:30.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 5500,
"fee": 45,
"status": "FAILED",
"reference": "akhlm-pstmnpyt-rfxx008_PMCKDU_1",
"meta": null,
"narration": "Akhlm Pstmn Trnsfr xx008",
"approver": null,
"complete_message": "Account resolve failed",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "N/A"
},
{
"id": 26251,
"account_number": "0690000040",
"bank_code": "044",
"full_name": "Alexis Sanchez",
"created_at": "2020-01-20T16:09:34.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 5500,
"fee": 45,
"status": "PENDING",
"reference": "akhlm-pstmnpyt-rfxx007_PMCKDU_1",
"meta": null,
"narration": "Akhlm Pstmn Trnsfr xx007",
"approver": null,
"complete_message": "Transaction is currently being processed",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "ACCESS BANK NIGERIA"
},
{
"id": 26250,
"account_number": "0690000040",
"bank_code": "041",
"full_name": "N/A",
"created_at": "2020-01-20T16:08:43.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 5500,
"fee": 45,
"status": "FAILED",
"reference": "akhlm-pstmnpyt-rfxx006_PMCKDU_1",
"meta": null,
"narration": "Akhlm Pstmn Trnsfr xx006",
"approver": null,
"complete_message": "Account resolve failed",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "N/A"
},
{
"id": 26249,
"account_number": "0690000039",
"bank_code": "041",
"full_name": "N/A",
"created_at": "2020-01-20T16:08:09.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 5500,
"fee": 45,
"status": "FAILED",
"reference": "akhlm-pstmnpyt-rfxx005_PMCKDU_1",
"meta": null,
"narration": "Akhlm Pstmn Trnsfr xx005",
"approver": null,
"complete_message": "Account resolve failed",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "N/A"
},
{
"id": 26248,
"account_number": "0690000044",
"bank_code": "041",
"full_name": "N/A",
"created_at": "2020-01-20T16:07:35.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 5500,
"fee": 45,
"status": "FAILED",
"reference": "akhlm-pstmnpyt-rfxx004_PMCKDU_1",
"meta": null,
"narration": "Akhlm Pstmn Trnsfr xx004",
"approver": null,
"complete_message": "Account resolve failed",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "N/A"
},
{
"id": 26169,
"account_number": "0690000034",
"bank_code": "044",
"full_name": "Ade Bond",
"created_at": "2020-01-19T23:04:14.000Z",
"currency": "NGN",
"debit_currency": null,
"amount": 500,
"fee": 5375,
"status": "PENDING",
"reference": "akhlm-blktrnsfr-xy01",
"meta": null,
"narration": "akhlm blktrnsfr",
"approver": null,
"complete_message": "Transaction is currently being processed",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "ACCESS BANK NIGERIA"
},
{
"id": 26168,
"account_number": "0690000041",
"bank_code": "044",
"full_name": "Alexis Rogers",
"created_at": "2020-01-19T22:49:08.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 5500,
"fee": 45,
"status": "PENDING",
"reference": "akhlm-pstmnpyt-rfxx002_PMCK",
"meta": null,
"narration": "Akhlm Pstmn Trnsfr xx002",
"approver": null,
"complete_message": "Transaction is currently being processed",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "ACCESS BANK NIGERIA"
},
{
"id": 26167,
"account_number": "0690000044",
"bank_code": "044",
"full_name": "Mercedes Daniel",
"created_at": "2020-01-19T22:44:03.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 5500,
"fee": 45,
"status": "PENDING",
"reference": "akhlm-pstmnpyt-rfxx001_PMCKDU_1",
"meta": null,
"narration": "Akhlm Pstmn Trnsfr xx001",
"approver": null,
"complete_message": "Transaction is currently being processed",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "ACCESS BANK NIGERIA"
}
]
}
{}
Fetch a Transfer
This endpoint helps you fetch the details of a transfer.
get
https://api.flutterwave.com/v3/transfers/:idPath Params
int32
This is the numeric ID of the transfer you want to fetch. It is returned in the call to create a transfer as data.id
.
Headers
string
Pass your secret key as a bearer token in the request header to authorize this call
var request = require('request');
var options = {
'method': 'GET',
'url': '{{BASE_API_URL}}/transfers/26251',
'headers': {
'Authorization': 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "{{BASE_API_URL}}/transfers/26251",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("{{BASE_API_URL}}/transfers/26251")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
response = http.request(request)
puts response.read_body
{
"status": "success",
"message": "Transfer fetched",
"data": {
"id": 1933222,
"account_number": "0251238458",
"bank_code": "058",
"full_name": " Flutterwave Developers",
"created_at": "2020-06-11T00:36:20.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 300,
"fee": 10.75,
"status": "SUCCESSFUL",
"reference": "new-actual-transfer-ref1",
"meta": null,
"narration": "Akhlm Pstmn Trnsfr xx007",
"approver": null,
"complete_message": "Transaction was successful",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "GTBANK PLC"
}
}
{}
Fetch a Transfer Retry
This endpoint helps you fetch the details of a transfer retry.
get
https://api.flutterwave.com/v3/transfers/:id/retriesPath Params
int32
This is the numeric ID of the transfer you want to fetch. It is returned in the call to create a transfer as data.id
.
Headers
string
Pass your secret key as a bearer token in the request header to authorize this call
var request = require('request');
var options = {
'method': 'GET',
'url': '{{BASE_API_URL}}/transfers/166765/retries',
'headers': {
'Authorization': 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "{{BASE_API_URL}}/transfers/166765/retries",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("{{BASE_API_URL}}/transfers/166765/retries")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
response = http.request(request)
puts response.read_body
{
"status": "success",
"message": "Transfer retry attempts retrieved.",
"data": [
{
"id": 166947,
"account_number": "0690000041",
"bank_code": "044",
"bank_name": "ACCESS BANK NIGERIA",
"full_name": "Alexis Rogers",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 1000,
"fee": 10.75,
"status": "FAILED",
"reference": "TRF-640361604052_RETRY_1",
"narration": null,
"complete_message": "Transaction is currently being processed",
"meta": null,
"requires_approval": 0,
"is_approved": 1,
"created_at": "2021-01-29T10:42:14.000Z"
},
{
"id": 166948,
"account_number": "0690000041",
"bank_code": "044",
"bank_name": "ACCESS BANK NIGERIA",
"full_name": "Alexis Rogers",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 1000,
"fee": 10.75,
"status": "PENDING",
"reference": "TRF-640361604052_RETRY_2",
"narration": null,
"complete_message": "Transaction is currently being processed",
"meta": null,
"requires_approval": 0,
"is_approved": 1,
"created_at": "2021-01-29T10:50:58.000Z"
}
]
}
{}
Fetch a Bulk Transfer
This endpoint helps you get the status and details of a bulk transfer.
get
https://api.flutterwave.com/v3/transfersQuery Params
int32
This is the numeric ID of the bulk transfer you want to fetch. It is returned in the call to create a bulk transfer as data.id
.
Headers
string
Pass your secret key as a bearer token in the request header to authorize this call
var request = require('request');
var options = {
'method': 'GET',
'url': '{{BASE_API_URL}}/transfers?26251',
'headers': {
'Authorization': 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "{{BASE_API_URL}}/transfers?26251",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("{{BASE_API_URL}}/transfers?26251")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
response = http.request(request)
puts response.read_body
{
"status": "success",
"message": "Transfer fetched",
"data": {
"id": 1933222,
"account_number": "0251238458",
"bank_code": "058",
"full_name": " Kendrick Graham",
"created_at": "2020-06-11T00:36:20.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 300,
"fee": 10.75,
"status": "SUCCESSFUL",
"reference": "new-actual-transfer-ref1",
"meta": null,
"narration": "Akhlm Pstmn Trnsfr xx007",
"approver": null,
"complete_message": "Transaction was successful",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "GTBANK PLC"
}
}
{}
Get Transfer Rates
This endpoint helps you to querys the transfer rate for international transfers.
get
https://api.flutterwave.com/v3/transfers/ratesQuery Params
int32
This is the amount to transfer to the recipient.
string
This is the currency of the wallet you are making a transfer to.
string
This is the currency of the wallet being debited for the transfer.
Headers
string
Pass your secret key as a bearer token in the request header to authorize this call. Unauthorized calls would return a 401 http code or raise unauthorized error in the different SDKs.
{
"status": "success",
"message": "Transfer amount fetched",
"data": {
"rate": 624.24,
"source": {
"currency": "NGN",
"amount": 624240
},
"destination": {
"currency": "USD",
"amount": 1000
}
}
}
{}