# Initiate Transfer

This will show you how to initiate a transfer.

<?php
$reference = Flutterwave::generateReference();

$data = [
    'account_bank'=> '044',
    'account_number'=> '0690000040',
    'amount' => 5500,
    'narration' => 'Payment for goods purchased',
    'currency' => 'NGN',
    'reference' => $reference
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Please setup a webhook to get status on your transfers. When you initiate a transfer you get a queuing status, once the transfer is successful or failed, we hit your webhook to alert you, you can update the status of the transfer from there.

You can also setup a cron job that checks all pending transfers status in your db and updates them accordingly


$transferId = 187092; // get transfer ID from your DB
$transfer = Flutterwave::transfers()->fetch($transferId);

if($transfer['data']['status'] === 'SUCCESSFUL') {
    // update transfer status to successful in your db
} else if ($transfer['data']['status'] === 'FAILED') {
    // update transfer status to failed in your db
    // revert customer balance back
} else if ($transfer['data']['status'] === 'PENDING') {
    // update transfer status to pending in your db
}

1
2
3
4
5
6
7
8
9
10
11
12
13

# Parameters

Parameter Required Description
account_bank True This is the recipient bank code. You can see a list of all the available banks and their codes here.
account_number True This is the recipient account number. When testing on staging, you can find a list of test bank accounts here (opens new window)..
amount True This is the amount to transfer to the recipient.
currency True This can be NGN, GHS, KES, UGX, TZS, USD or ZAR.
narration False This is the narration for the transfer e.g. payments for x services provided
beneficiary_name False This is the name of the beneficiary..
destination_branch_code False This code uniquely identifies bank branches for disbursements into Ghana, Uganda and Tanzania. It is returned in the call to fetch bank branches here: Click Here. It is only REQUIRED for GHS, UGX and TZS bank transfers.
beneficiary False This is the beneficiary's id. It allows you to initiate a transfer to an existing beneficiary. You can pass this in place of account_bank & account_number. It is returned in the call to fetch a beneficiary as data['id']. Click here to create a beneficiary
reference False This is a merchant's unique reference for the transfer, it can be used to query for the status of the transfer.
debit_currency False You can pass this when you want to debit a currency balance and send money in another currency.
meta False This is an object that helps you include additional payment information to your request e.g ['consumer_id'=>23, 'consumer_mac'=>'92a3-912ba-1192a']

# Transfer to Nigerian bank accounts


<?php

$reference = Flutterwave::generateReference();

$data = [
    "account_bank"=>"044",
    "account_number"=>"0690000040",
    "amount"=>5500,
    "narration"=>"Akhlm Pstmn Trnsfr xx007",
    "currency"=>"NGN",
    "debit_currency"=>"NGN"
    'reference' => $reference
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);

// {
//   "status": "success",
//   "message": "Transfer Queued Successfully",
//   "data": {
//     "id": 26251,
//     "account_number": "0690000040",
//     "bank_code": "044",
//     "full_name": "Ekene Eze",
//     "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"
//   }
// }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

# International Transfers (Other countries)


<?php

$data = [
    "amount" => 50,
    "narration" => "Test Int'l bank transfers",
    "currency" => "USD",
    "reference" => "new-intl-test-transfer",
    "beneficiary_name" => "Mark Cuban ",
    "meta" => [
        [
            "AccountNumber" => "091820932BH",
            "RoutingNumber" => "0000002993",
            "SwiftCode" => "ABJG190",
            "BankName" => "BARCLAYS BANK (U) LIMITED",
            "BeneficiaryName" => "Mark Cuban",
            "BeneficiaryAddress" => "HANNINGTON ROAD, KAMPALA UGANDA",
            "BeneficiaryCountry" => "OT"
        ]
    ]
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# International Transfers (EUR & GBP)


<?php

$data = [
    "amount" => 50,
    "narration" => "Test EU Int'l bank transfers",
    "currency" => "EUR",
    "reference" => "new-intl-eu-test-transfer",
    "beneficiary_name" => "John Twain",
    "meta" => [
        [
            "AccountNumber" => "DA091983888373BGH",
            "RoutingNumber" => "BECFDE7HKKX",
            "SwiftCode" => "BECFDE7HKKX",
            "BankName" => "LLOYDS BANK",
            "BeneficiaryName" => "John Twain",
            "BeneficiaryCountry" => "DE",
            "PostalCode" => "80489",
            "StreetNumber" => "31",
            "StreetName" => "Handelsbank Elsenheimer Str.",
            "City" => "MΓΌnchen"
        ]
    ]
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# Transfer to Ghana bank account


<?php

$data = [
    "account_bank" => "GH280100",
    "account_number" => "0031625807099",
    "amount" => 50,
    "narration" => "Test GHS bank transfers",
    "currency" => "GHS",
    "reference" => "new-GHS-test-transfer1",
    "callback_url" => "https://webhook.site/b3e505b0-fe02-430e-a538-22bbbce8ce0d",
    "destination_branch_code" => "GH280103",
    "beneficiary_name" => "Kwame Adew"
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# International transfers (US)


<?php

$data = [
    "amount" => 50,
    "narration" => "Test Int'l bank transfers",
    "currency" => "USD",
    "reference" => "new-intl-test-transfer1",
    "beneficiary_name" => "Mark Cuban ",
    "meta" => [
        [
            "AccountNumber" => "09182972BH",
            "RoutingNumber" => "0000000002993",
            "SwiftCode" => "ABJG190",
            "BankName" => "BANK OF AMERICA, N.A., SAN FRANCISCO, CA",
            "BeneficiaryName" => "Mark Cuban",
            "BeneficiaryAddress" => "San Francisco, 4 Newton",
            "BeneficiaryCountry" => "US"
        ]
  ]
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# Mpesa Mobile Money Transfer


<?php

$data = [
  "account_bank" => "MPS",
  "account_number" => "2540782773934",
  "amount" => 50,
  "narration" => "New transfer",
  "currency" => "KES",
  "reference" => "mk-902837-jk",
  "beneficiary_name" => "Kwame Adew"
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# Ghana Mobile Money Transfer


<?php

$data = [
  "account_bank" => "MTN",
  "account_number" => "233542773934",
  "amount" => 50,
  "narration" => "New GHS momo transfer",
  "currency" => "GHS",
  "reference" => "mk-902837-jk",
  "beneficiary_name" => "Kwame Adew"
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# Uganda Mobile Money Transfer


<?php

$data = [
  "account_bank" => "MPS",
  "account_number" => "233542773934",
  "amount" => 50,
  "narration" => "New UGX momo transfer",
  "currency" => "UGX",
  "reference" => "mk-902837-jk",
  "beneficiary_name" => "Kwame Adew"
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# Rwanda Mobile Money Transfer


<?php

$data = [
  "account_bank" => "MPS",
  "account_number" => "233542773934",
  "amount" => 50,
  "narration" => "New RWF momo transfer",
  "currency" => "RWF",
  "reference" => "mk-902837-jk",
  "beneficiary_name" => "Kwame Adew"
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# Francophone Mobile Money Transfer


<?php

$data = [
  "account_bank" => "FMM",
  "account_number" => "233542773934",
  "amount" => 50,
  "narration" => "New franco momo transfer",
  "currency" => "XAF",
  "reference" => "mk-902837-jk",
  "beneficiary_name" => "Kwame Adew"
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# Transfer to a FLW account


<?php

$data = [
  "account_bank" => "flutterwave",
  "account_number" => "00118468",
  "amount" => 5500,
  "narration" => "payment for x service provided",
  "currency" => "NGN",
  "reference" => "mk-902837-jk",
  "debit_currency" => "NGN"
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# Transfer USD to Nigerian DOM Accounts


<?php

$data = [
  "account_number" =>  "0690000036",
  "account_bank" =>  "044",
  "narration" =>  "Nada",
  "amount" =>  50,
  "reference" =>  "khlm-dom-065",
  "currency" =>  "USD",
  "debit_currency" =>  "USD",
  "beneficiary_name" =>  "Michale Lester",
  "meta" => [
    [
      "first_name" => "Michale",
      "last_name" => "Lester",
      "email" => "dump@kizito",
      "beneficiary_country" => "NG",
      "mobile_number" => "+2348131133933",
      "sender" => "Statik Selektah",
      "merchant_name" => "Spotify"
    ]
  ]
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# Transfer to SA Bank Account


<?php

$data = [
    "account_bank" => "FNB",
    "account_number" => "0031625807099",
    "amount" => 500,
    "narration" => "Withdraw Fiat",
    "currency" => "ZAR",
    "reference" => "496_PMCKDU_1",
    "debit_currency":"USD",
    "callback_url" => "http://localhost:3000/deposits/banks/flutterwave_callback",
    "meta" => [
        [
            "first_name" => "Michale",
            "last_name" => "Lester",
            "email" => "dump@kizito",
            "mobile_number" => "+2348131133933"
        ]
    ]
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# Transfer to Barter account


<?php

$data = [
    "account_number" => "+2348xxxxxxxx8",
    "account_bank" => "barter",
    "narration" => "Test",
    "amount" => 20,
    "reference" => "barter-transfer-2",
    "currency" => "NGN",
    "beneficiary_name" => "Ifunanya Ikemma"
];

$transfer = Flutterwave::transfers()->initiate($data);

dd($transfer);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16