Payout Subaccounts

These endpoints allows the developer/merchant to manage Payout Subaccounts.

Create a Payout Subaccount

This section describes how to Initate a transfer with Flutterwave.

post https://api.flutterwave.com/v3/payout-subaccounts

Body Params

account_name string

This is the account name of the payout subaccount.

email string

This is the email address of the payout subaccount

mobilenumber string

This is the mobile number of the payout subaccount

country string

This is the country of the payout subaccount

Headers

Authorization 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': 'https://api.flutterwave.com/v3/payout-subaccounts',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X'
  },
  body: JSON.stringify({
    "account_name": "John Doe",
    "email": "developers@flutterwavego.com",
    "mobilenumber": "010101010",
    "country": "US"
  })

};
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 => "https://api.flutterwave.com/v3/payout-subaccounts",
  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 =>"{\n\t\"account_name\": \"John Doe\",\n\t\"email\": \"developers@flutterwavego.com\"\n,\n\t\"mobilenumber\": \"010101010\"\n,
\n\t\"country\": \"US\"\n}",
  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 "net/http"

url = URI("https://api.flutterwave.com/v3/payout-subaccounts")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
request.body = "{\n\t\"account_name\": \"John Doe\",\n\t\"email\": \"developers@flutterwavego.com\"\n,\n\t\"mobilenumber\": \"010101010\"\n,
\n\t\"country\": \"US\"\n}"

response = http.request(request)
puts response.read_body
{
  "status": "success",
  "message": "Payout subaccount created",
  "data": {
    "id": 699,
    "account_reference": "PSAFF2118D1A33844332",
    "account_name": "Flutterwave Developers",
    "barter_id": "234000001708294",
    "email": "developers@flutterwavego.com",
    "mobilenumber": "09012903324",
    "country": "NG",
    "nuban": "6222126177",
    "bank_name": "Sterling Bank",
    "bank_code": "232",
    "status": "ACTIVE",
    "created_at": "2022-03-04T19:57:24.000Z"
  }
}
{}

List all Payout Subaccounts

This section describes how to list all payout/transfer subaccounts on Flutterwave.

get https://api.flutterwave.com/v3/payout-subaccounts

Query Params

Headers

Authorization 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': 'https://api.flutterwave.com/v3/payout-subaccounts',
  '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 => "https://api.flutterwave.com/v3/payout-subaccounts",
  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("https://api.flutterwave.com/v3/payout-subaccounts")

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": "Payout subaccounts fetched",
  "data": [
    {
      "id": 700,
      "account_reference": "PSA15FAF664D63870782",
      "account_name": "Cornelius Ashley-Osuzoka ",
      "barter_id": "234000001708295",
      "email": "cornelius@flutterwavego.com",
      "mobilenumber": "09012903324",
      "country": "NG",
      "nuban": "6222126187",
      "bank_name": "Sterling Bank",
      "bank_code": "232",
      "status": "ACTIVE",
      "created_at": "2022-03-04T19:57:50.000Z"
    },
    {
      "id": 701,
      "account_reference": "PSAC33BFC23033921446",
      "account_name": "Ayomide Jimi-Oni ",
      "barter_id": "234000001708296",
      "email": "ayomide@flutterwavego.com",
      "mobilenumber": "09012903324",
      "country": "NG",
      "nuban": "6222126197",
      "bank_name": "Sterling Bank",
      "bank_code": "232",
      "status": "ACTIVE",
      "created_at": "2022-03-04T19:58:41.000Z"
    },
    {
      "id": 699,
      "account_reference": "PSAFF2118D1A33844332",
      "account_name": "Flutterwave Developers",
      "barter_id": "234000001708294",
      "email": "developers@flutterwavego.com",
      "mobilenumber": "09012903324",
      "country": "NG",
      "nuban": "6222126177",
      "bank_name": "Sterling Bank",
      "bank_code": "232",
      "status": "ACTIVE",
      "created_at": "2022-03-04T19:57:24.000Z"
    }
  ]
}

{}

Get a Payout Subaccount

This section describes how to fetch a payout/transfer subaccount on Flutterwave.

get https://api.flutterwave.com/v3/payout-subaccounts/:account_reference

Path Params

account_reference string

The unique reference for the payout

Query Params

include_limit string

Pass this parameter to ensure the limit for the subaccount are returned in the response

Headers

Authorization 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': 'https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332',
  '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 => "https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332",
  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("https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332")

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": "Payout subaccount fetched",
  "data": {
    "id": 699,
    "account_reference": "PSAFF2118D1A33844332",
    "account_name": "Flutterwave Developers",
    "barter_id": "234000001708294",
    "email": "developers@flutterwavego.com",
    "mobilenumber": "09012903324",
    "country": "NG",
    "nuban": "6222126177",
    "bank_name": "Sterling Bank",
    "bank_code": "232",
    "status": "ACTIVE",
    "transfer_limits": {
        "single_limit": 30000000,
        "total_daily_limit": 120000000
    },
    "created_at": "2022-03-04T19:57:24.000Z"
  }
}
{}

Update a Payout Subaccount

This section describes how to update a payout/transfer subaccount on Flutterwave.

put https://api.flutterwave.com/v3/payout-subaccounts/:account_reference

Path Params

account_reference string

The unique reference for the payout

Body Params

account_name string

Unique identifier of the payout subaccount

mobilenumber string

This is the mobile number of the payout subaccount

email string

This is the email address of the payout subaccount

Headers

Authorization string

Pass your secret key as a bearer token in the request header to authorize this call

curl --request PUT \
     --url https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332 \
     --header 'Accept: application/json' \
     --header 'Authorization: Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X' \
     --header 'Content-Type: application/json' \
     --data '
{
     "account_name": "Flutterwave Developers",
     "email": "developers@flutterwavego.com",
     "mobilenumber": "010101010",
     "country": "NG"
}
'
  <?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332', [
  'body' => '{"account_name":"Flutterwave Developers","email":"developers@flutterwavego.com","mobilenumber":"010101010","country":"NG"}',
  'headers' => [
    'Accept' => 'application/json',
    'Authorization' => 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
require "uri"
require "net/http"
require "openssl"

url = URI("https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332")

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

request = Net::HTTP::Put.new(url)
request["Accept"] = 'application/json'
request["Authorization"] = 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X'
request["Content-Type"] = 'application/json'
request.body = "{\"account_name\":\"Flutterwave Developers\",\"email\":\"developers@flutterwavego.com\",\"mobilenumber\":\"010101010\",\"country\":\"NG\"}"

response = http.request(request)
puts response.read_body
import requests

url = "https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332"

payload = {
    "account_name": "Flutterwave Developers",
    "email": "developers@flutterwavego.com",
    "mobilenumber": "010101010",
    "country": "NG"
}
headers = {
    "Accept": "application/json",
    "Authorization": "Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X",
    "Content-Type": "application/json"
}

response = requests.request("PUT", url, json=payload, headers=headers)

print(response.text)

{
  "status": "success",
  "message": "Payout subaccount updated",
  "data": {
    "id": 699,
    "account_reference": "PSAFF2118D1A33844332",
    "account_name": "Flutterwave Developers",
    "barter_id": "234000001708294",
    "email": "developers@flutterwavego.com",
    "mobilenumber": "010101010",
    "country": "NG",
    "nuban": "6222126177",
    "bank_name": "Sterling Bank",
    "bank_code": "232",
    "status": "ACTIVE",
    "created_at": "2022-03-04T19:57:24.000Z"
  }
}
{}

Fetch Transactions

This section describes how to fetch a transaction on a payout/transfer subaccount on Flutterwave.

get https://api.flutterwave.com/v3/payout-subaccounts/:account_reference/transactions

Path Params

account_reference string

The unique reference for the payout

Query Params

from string

start date

to string

end date

currency string

currency of the subaccount. The possible values are USD, EUR, GBP and NGN

Headers

Authorization string

Pass your secret key as a bearer token in the request header to authorize this call

curl --request GET \
     --url 'https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332/transactions?from=2021-01-01&to=2021-02-10&currency=currency%20of%20the%20subaccount.%20The%20possible%20values%20are%20USD%2C%20EUR%2C%20GBP%20and%20NGN' \
     --header 'Accept: application/json' \
     --header 'Authorization: Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X' \
     --header 'Content-Type: application/json'

require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332/transactions?from=2021-01-01&to=2021-02-10&currency=currency%20of%20the%20subaccount.%20The%20possible%20values%20are%20USD%2C%20EUR%2C%20GBP%20and%20NGN")

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

request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
request["Authorization"] = 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X'
request["Content-Type"] = 'application/json'

response = http.request(request)
puts response.read_body

<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332/transactions?from=2021-01-01&to=2021-02-10&currency=currency%20of%20the%20subaccount.%20The%20possible%20values%20are%20USD%2C%20EUR%2C%20GBP%20and%20NGN', [
  'headers' => [
    'Accept' => 'application/json',
    'Authorization' => 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();

import requests

url = "https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332/transactions?from=2021-01-01&to=2021-02-10&currency=currency%20of%20the%20subaccount.%20The%20possible%20values%20are%20USD%2C%20EUR%2C%20GBP%20and%20NGN"

headers = {
    "Accept": "application/json",
    "Authorization": "Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X",
    "Content-Type": "application/json"
}

response = requests.request("GET", url, headers=headers)

print(response.text)

{}
{}

Fetch Available Balance

This section describes how to fetch the available balance on a payout/transfer subaccount on Flutterwave.

get https://api.flutterwave.com/v3/payout-subaccounts/:account_reference/balances

Path Params

account_reference string

The unique reference for the payout

Query Params

currency string

currency of the subaccount. The possible values are USD, EUR, GBP and NGN

Headers

Authorization string

Pass your secret key as a bearer token in the request header to authorize this call

curl --request GET \
     --url 'https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332/balances?currency=USD' \
     --header 'Accept: application/json' \
     --header 'Authorization: Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X' \
     --header 'Content-Type: application/json'

require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332/balances?currency=USD")

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

request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
request["Authorization"] = 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X'
request["Content-Type"] = 'application/json'

response = http.request(request)
puts response.read_body

<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332/balances?currency=USD', [
  'headers' => [
    'Accept' => 'application/json',
    'Authorization' => 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();

import requests

url = "https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332/balances?currency=USD"

headers = {
    "Accept": "application/json",
    "Authorization": "Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X",
    "Content-Type": "application/json"
}

response = requests.request("GET", url, headers=headers)

print(response.text)

{
    "status": "success",
    "message": "Subaccount balance fetched",
    "data": {
        "currency": "NGN",
        "available_balance": 13200,
        "ledger_balance": 0
    }
}
{}

Fetch Static Virtual Accounts

This section describes how to fetch a static virtual account on a payout/transfer subaccount on Flutterwave

get https://api.flutterwave.com/v3/payout-subaccounts/:account_reference/static-account

Path Params

account_reference string

The unique reference for the payout

Query Params

currency string

currency of the subaccount. The possible values are USD, EUR, GBP and NGN

Headers

Authorization string

Pass your secret key as a bearer token in the request header to authorize this call

curl --request GET \
     --url 'https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332/static-account?currency=USD' \
     --header 'Accept: application/json' \
     --header 'Authorization: Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X' \
     --header 'Content-Type: application/json'
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332/static-account?currency=USD")

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

request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
request["Authorization"] = 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X'
request["Content-Type"] = 'application/json'

response = http.request(request)
puts response.read_body

<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332/static-account?currency=USD', [
  'headers' => [
    'Accept' => 'application/json',
    'Authorization' => 'Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
import requests

url = "https://api.flutterwave.com/v3/payout-subaccounts/PSAFF2118D1A33844332/static-account?currency=USD"

headers = {
    "Accept": "application/json",
    "Authorization": "Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X",
    "Content-Type": "application/json"
}

response = requests.request("GET", url, headers=headers)

print(response.text)
{
  "status": "success",
  "message": "SERVICE-RESPONSE",
  "data": {
    "static_account": "8336657404",
    "bank_name": "Community Federal Savings Bank",
    "bank_code": "026073150",
    "currency": "USD",
    "is_default": null,
    "type": "ach_routing_number"
  }
}
{}
Loading...