create_checkoutLABSCO SUMMARY
The tool list argument is the first thing to set.
This surface moves money — transfers, charges, stablecoin sends — and the server has a clean answer for that: name the tools you want registered and the rest do not exist for that client. A support workflow that only reads transactions never needs a transfer tool loaded. Two other things stand out. The card flow returns what to do next at each stage instead of failing on a mode the caller did not expect, which is what makes an assistant usable for it. And the BVN check requires a customer consent URL before any identity data comes back, which is the right shape for that data.
What it is
An MCP server over the Flutterwave API, covering the payment methods that matter in African markets rather than card alone. It handles the awkward parts properly: the multi-step card authorization dance, the request-quote-then-trade shape of FX, and the consent flow on identity verification.
What you get
- Hosted checkout links, created and disabled —
create_checkout,disable_checkout - Direct charges across the region's real payment rails: card, bank account for NGN and GHS, mobile money across Ghana, Uganda, Rwanda, Zambia and Francophone Africa, M-Pesa in KES, and USSD in NGN —
charge_card,charge_bank_account,charge_mobile_money,charge_mpesa,charge_ussd - The card authorization flow handled step by step rather than left to you — PIN, address verification, a 3D Secure redirect and OTP validation, with each response telling the assistant what the customer needs to supply next —
charge_card,validate_charge - Transaction lookup by id or by your own reference, the event timeline behind one, and a webhook resend when yours failed —
read_transaction,read_transaction_with_reference,read_transaction_timeline,resend_transaction_webhook - Payouts and recurring billing: bank transfers with saved beneficiaries, and subscription payment plans —
create_transfer,create_beneficiary,list_beneficiaries,create_payment_plan,get_payment_plans - Dedicated virtual account numbers for NGN and GHS bank-transfer collection, retrievable and updatable, with bulk batches listable —
create_virtual_account,get_virtual_account,update_virtual_account,list_virtual_account_bulk - Bill payments end to end for Nigeria — browse categories, providers and payable items, validate the customer's meter or smartcard number before charging, pay, then check status and collect prepaid electricity tokens —
get_bill_categories,get_bill_providers,get_bill_items,validate_bill_customer,pay_bill,get_bill_status - Currency conversion between NGN, GHS and USD as a proper two-step quote-then-trade, with polling on both —
request_fx_quote,get_fx_quote,initiate_fx_trade,get_fx_trade - Verification: BVN identity checks that issue a single-use customer consent URL before any data is returned, bank account name resolution, and card BIN lookup —
initiate_bvn_verification,get_bvn_details,resolve_bank_account,verify_card_bin - Stablecoin movement — check the fee and net amount first, then send USDC or USDT to a Polygon address, or convert an NGN or USD balance into one —
get_stablecoin_fee,send_stablecoin,convert_to_stablecoin - A branded HTML card rendered inline with every tool result in clients that support it
Requirements
A Flutterwave account. FLW_SECRET_KEY is required; FLW_ENCRYPTION_KEY is additionally required for card charges, because card payloads are encrypted before they leave the server as PCI DSS requires — the encryption itself is handled for you once the variable is set. Node.js 20 or later for the npm and npx paths, or a published Docker image launched by your client with the keys passed as environment variables. Which tools are registered is controlled by a --tools argument: pass all, or a comma-separated list to expose only what you want. The package is mcp-flutterwave (1.4.1 in package.json) and it speaks stdio, so a client must launch it rather than it running standalone. It targets the Flutterwave v3 API.
Setup effort
One command plus a key — npx mcp-flutterwave --tools=all, then supply credentials
USE CASES
Taking a payment from a conversation
Create a hosted checkout link and send it, then verify the transaction by your own reference once the customer pays.
Charging a card that needs authorization
Start the charge and follow whatever the response asks for — PIN, billing address, a 3D Secure redirect or an OTP — instead of failing at the first challenge.
Collecting by bank transfer instead of card
Issue a dedicated account number for the customer and watch it, rather than reconciling transfers into one shared account.
Paying a utility bill for someone
Find the biller and the payable item, validate their meter number before charging, pay, then read back the prepaid token.
Converting currency at a locked rate
Request a quote, wait for it to be ready, execute the trade against it, and poll until it settles — rather than assuming a rate.
Checking a payout will reach the right person
Resolve the account holder's name from the account number before creating the transfer, and save them as a beneficiary for next time.
38 tools
Listed in project docs. Your client may show a different list.
disable_checkoutread_transactionread_transaction_with_referenceread_transaction_timelineresend_transaction_webhookcreate_transfercreate_beneficiarylist_beneficiariescreate_payment_planget_payment_planscharge_cardcharge_bank_accountcharge_mobile_moneycharge_mpesacharge_ussdvalidate_chargecreate_virtual_accountget_virtual_accountupdate_virtual_accountlist_virtual_account_bulkget_bill_categoriesget_bill_providersget_bill_itemsvalidate_bill_customerpay_billget_bill_statusrequest_fx_quoteget_fx_quoteinitiate_fx_tradeget_fx_tradeinitiate_bvn_verificationget_bvn_detailsresolve_bank_accountverify_card_binget_stablecoin_feesend_stablecoinconvert_to_stablecoinBEFORE YOU INSTALL
What to know first
Tools you get
38 tools named in the project's documentation.
Requires
- FLW_SECRET_KEY in your environment
- FLW_ENCRYPTION_KEY in your environment
Where it runs
All 3 documented setups run the server on your machine.
INSTALLATION
Connect your client
Server setup
npx mcp-flutterwave --tools=allMCP Clients
Claude Desktop — npm
{
"mcpServers": {
"flutterwave": {
"command": "mcp-flutterwave",
"args": [
"--tools=all"
],
"env": {
"FLW_SECRET_KEY": "<YOUR_FLW_SECRET_KEY>",
"FLW_ENCRYPTION_KEY": "<YOUR_FLW_ENCRYPTION_KEY>"
}
}
}
}Claude Desktop — local build
{
"mcpServers": {
"flutterwave": {
"command": "node",
"args": [
"<YOUR_PATH_TO_MCP_FLUTTERWAVE>/build/index.js",
"--tools=all"
],
"env": {
"FLW_SECRET_KEY": "<YOUR_FLW_SECRET_KEY>",
"FLW_ENCRYPTION_KEY": "<YOUR_FLW_ENCRYPTION_KEY>"
}
}
}
}Claude Desktop — Docker
{
"mcpServers": {
"flutterwave": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"FLW_SECRET_KEY=<YOUR_FLW_SECRET_KEY>",
"-e",
"FLW_ENCRYPTION_KEY=<YOUR_FLW_ENCRYPTION_KEY>",
"ghcr.io/bajoski34/mcp-flutterwave:latest"
]
}
}
}