# Charge via Mpesa
This document describes how to collect payments via Mpesa.
<?php
$tx_ref = Flutterwave::generateReference();
$data = [
'amount' => 1500,
'email' => 'wole@email.co',
'phone_number' => '054709929220',
'tx_ref' => $tx_ref
];
$charge = Flutterwave::payments()->mpesa($data);
if ($charge['status'] === 'success') {
# code...
// Redirect to the charge url
$data = Flutterwave::verifyTransaction($charge['data']['id']);
return dd($data);
// Get the transaction from your DB using the transaction reference (txref)
// Check if you have previously given value for the transaction. If you have, redirect to your successpage else, continue
// Confirm that the $data['data']['status'] is 'successful'
// Confirm that the currency on your db transaction is equal to the returned currency
// Confirm that the db transaction amount is equal to the returned amount
// Update the db transaction record (including parameters that didn't exist before the transaction is completed. for audit purpose)
// Give value for the transaction
// Update the transaction to note that you have given value for the transaction
// You can also redirect to your success page from here
}
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
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
# Parameters
Parameter | Required | Description |
---|---|---|
amount | True | This is the amount to be charged. Expected value is ZMW |
True | This is the email address of the customer. | |
tx_ref | True | This is a unique reference, unique to the particular transaction being carried out. It is generated when it is not provided by the merchant for every transaction. |
fullname | False | This is the customers full name. It should include first and last name of the customer. |
phone_number | True | This is the phone number linked to the customer's mobile money account. |
client_ip | False | IP - Internet Protocol. This represents the current IP address of the customer carrying out the transaction |
device_fingerprint | False | This is the fingerprint for the device being used. It can be generated using a library on whatever platform is being used. |
meta | False | This is used to include additional payment information` |
subaccounts | False | This is an array of objects containing the subaccount IDs to split the payment into. Check our Split Payment page for more info. eg [ ["id" => "RS_D87A9EE339AE28BFA2AE86041C6DE70E"]] |
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'] |