Payment methods
Flutterwave supports a wide variety of methods for your customers to pay you, across a wide range of countries. When accepting payments, you can specify what payment methods you're willing to accept from your customers.
There are two ways to specify your accepted payment methods.
Account settings
First, you can enable or disable payment methods globally in your account settings. We've got a guide for that here
This will set what payment methods are available to your customers across Flutterwave Inline, Standard, and HTML checkout.
Per payment
If you prefer to set payment methods per transaction, you can use the payment_options
parameter instead. This field takes a (comma + space)-separated list of allowed payment methods.
For payment_options
to work, you need to uncheck Enable Dashboard Payment Options on your Account Settings.
Here's how it would look with Flutterwave Inline, Standard and HTML checkout.
<script>
function makePayment() {
FlutterwaveCheckout({
// other fields ...
payment_options: "card, ussd, mobilemoneyghana",
})
}
</script>
const response = await got.post("https://api.flutterwave.com/v3/payments", {
headers: {
Authorization: `Bearer ${process.env.FLW_SECRET_KEY}`
},
json: {
// other fields...
payment_options: "card, ussd, mobilemoneyghana",
}
});
<form method="POST" action="https://checkout.flutterwave.com/v3/hosted/pay">
<!-- other fields... -->
<input type="hidden" name="payment_options" value="card, ussd, mobilemoneyghana" />
<button type="submit">Pay Now</button>
</form>
Some payment methods are tied to specific currencies. When showing the customer the payment options you specified, we'll ignore any ones that don't apply to the current currency.
For instance, mpesa
is only available for KES
, so if you specify payment_options
as "card, account, mpesa"
when collecting an NGN
payment, we'll only show card and account payment options on the modal.
Supported payment methods
Here's a list of currently supported payment methods and the value to use when specifying them in payment_options
:
Payment option | value |
---|---|
Card payment | card |
Bank account (direct debit) | account |
Bank transfer | banktransfer |
M-Pesa | mpesa |
Mobile money Ghana | mobilemoneyghana |
Mobile money Francophone Africa | mobilemoneyfranco |
Mobile money Uganda | mobilemoneyuganda |
Mobile money Rwanda | mobilemoneyrwanda |
Mobile money Zambia | mobilemoneyzambia |
Barter payment | barter |
QR payment | nqr |
USSD | ussd |
Credit payment | credit |
Please note that not all methods are supported across all countries. Countries/currencies are mapped to differebt payment methods in that region. You can see the full list of supported methods by region below:
Country | Currency code | Payment Options |
---|---|---|
Nigeria | NGN | card ussd banktransfer account internetbanking nqr applepay googlepay enaira opay |
United State | US | card account googlepay applepay |
Europe | EUR | card account googlepay applepay |
United Kingdom | GBP | card account googlepay applepay |
Ghana | GHS | card ghanamobilemoney |
Francophone Africa (Central Africa) | XAF | card mobilemoneyfranco |
Francophone Africa (West Africa) | XOF | card mobilemoneyfranco |
South Africa | ZAR | card account 1voucher googlepay``applepay |
Malawi | MWK | card mobilemoneymalawi |
Kenya | KES | card mpesa |
Uganda | UGX | card mobilemoneyuganda |
Rwanda | RWF | card mobilemoneyrwanda |
Tanzania | TZS | card mobilemoneytanzania |
Expiring payments
For banktransfer
payments (also called pay with Bank Transfer), You can specify an expiry period for transactions.
<script>
function makePayment() {
FlutterwaveCheckout({
// other fields ...
bank_transfer_options: {
expires: 3600
},
})
}
</script>
const response = await got.post("https://api.flutterwave.com/v3/payments", {
headers: {
Authorization: `Bearer ${process.env.FLW_SECRET_KEY}`
},
json: {
// other fields...
bank_transfer_options: {
expires: 3600
},
}
});