Skip to content

Transfers ​

Send money to bank accounts and mobile money wallets.

Find the bank and check the account ​

php
use Flutterwave\Payments\Facades\Flutterwave;

Flutterwave::banks()->options('NG');
// [['code' => '044', 'name' => 'Access Bank'], ...] sorted by name, ready for a <select>

$account = Flutterwave::banks()->resolveAccount('0690000031', '044');
$account['data']['account_name'];

From the terminal: php artisan flutterwave:banks NG --search=access and php artisan flutterwave:resolve 0690000031 044.

Send a transfer ​

php
$transfer = Flutterwave::transfers()->create([
    'account_bank' => '044',
    'account_number' => '0690000031',
    'amount' => 5500,
    'currency' => 'NGN',
    'narration' => 'Payout for order #1042',
    'reference' => $payout->reference,   // generated with your prefix if left out
]);

The transfer starts as NEW or PENDING. Its final status arrives in the TransferCompleted webhook event:

php
use Flutterwave\Payments\Events\TransferCompleted;

Event::listen(function (TransferCompleted $event) {
    Payout::where('reference', $event->reference())->update([
        'status' => $event->isSuccessful() ? 'paid' : 'failed',
    ]);
});

Set FLW_NOTIFY_FAILED_TRANSFERS to get an email whenever one fails.

Test outcomes in the sandbox ​

With test keys, choose how a transfer ends instead of waiting on the sandbox:

php
Flutterwave::transfers()->create([
    // ...
    'test_outcome' => 'failure',     // or 'success'
    'test_resolve_after' => 2,       // minutes, default 10
]);

Both keys are dropped with live keys.

Whitelist your IP

Flutterwave only accepts transfer requests from IP addresses you've whitelisted on the dashboard, in test mode too.

Bulk, fees and rates ​

php
Flutterwave::transfers()->bulk([$transferA, $transferB], title: 'October payouts');

Flutterwave::transfers()->fee(5500, 'NGN');
Flutterwave::transfers()->rates(100, destinationCurrency: 'NGN', sourceCurrency: 'USD');

Retry and look up ​

php
Flutterwave::transfers()->find($id);
Flutterwave::transfers()->all(['status' => 'failed']);
Flutterwave::transfers()->retry($id);
Flutterwave::transfers()->retries($id);

Saved recipients ​

php
Flutterwave::beneficiaries()->create('0690000031', '044', 'Ada Lovelace');
Flutterwave::beneficiaries()->all();
Flutterwave::beneficiaries()->delete($id);

Balances ​

php
Flutterwave::balances()->all();
Flutterwave::balances()->currency('NGN');

Or php artisan flutterwave:balance.

Released under the MIT License.