
Mcp Flutterwave
io.github.bajoski34Published by GitHub account bajoski34v1.2.0Updated Oct 24, 2026
MCP Server to interact with Flutterwave APIs.
Overview
A local MCP server that lets an AI assistant call Flutterwave payment APIs: checkout links, card and mobile money charges, transfers, virtual accounts, bills,FX
- What you can do
- Create and disable hosted checkout payment links, and charge customers by card, bank account, mobile money, M-Pesa or USSD, including PIN, AVS, 3DS and OTP steps and OTP validation. Read transactions by ID or reference, view event timelines and resend failed webhooks. Initiate transfers, manage beneficiaries and create or list payment plans. Create, retrieve and update virtual accounts and list bulk batches. Discover and pay bills (Nigeria only) and check bill status. Request FX quotes and execute trades, verify BVN, resolve bank accounts and look up card BINs, and send or convert to USDC/USDT on Polygon.
- When to use it
- Useful when an assistant should operate a Flutterwave merchant account end to end: taking payments, checking transaction status, paying out, collecting via virtual accounts, paying Nigerian bills, converting currency or moving stablecoins. Not needed for read-only reporting on other payment providers.
- Requirements
- Runs locally over stdio, launched by an MCP client such as Claude Desktop; Node.js 20 or later for the npm/npx package, or Docker. Requires a Flutterwave secret key in FLW_SECRET_KEY; card charges also need FLW_ENCRYPTION_KEY. Network access to the Flutterwave v3 API. Tools are enabled with the --tools flag (all or a comma-separated list).
Installation
In SourceWeft
- Open Mcp Flutterwave in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
mcp-flutterwave
[CI] [npm version] [npm downloads] [Docker] [License: MIT] [Node.js] [MCP]
An MCP (Model Context Protocol) server that enables AI assistants to interact with the Flutterwave API — create payment links, charge customers directly, manage transfers, collect via virtual accounts, pay bills, and more.
Note: This server currently targets the Flutterwave v3 API. Support for v4 is coming soon.
Also ships with a built-in web app that connects to the MCP server and lets you talk to a Claude-powered Flutterwave assistant directly in your browser.
Contents
- Features
- Installation
- Available Tools
- Card Charge Flow
- Virtual Accounts
- Bill Payment Flow
- FX Trade Flow
- Verification
- Stablecoins
- Web App
- MCP Server Setup
- Usage with Claude Desktop
- MCP-UI Components
- Contributing
- Changelog
- Security
- License
Features
- Checkout — Create hosted payment links and disable them
- Direct Charges — Charge customers via card, bank account, mobile money, M-Pesa, or USSD
- Full card auth flow — PIN, AVS (Address Verification), 3D Secure redirect, and OTP validation all handled automatically
- Charge Validation — Validate OTP-based charges with a dedicated tool
- Transactions — Verify by ID or reference, view event timeline, resend failed webhooks
- Transfers — Initiate single transfers, manage beneficiaries
- Payment Plans — Create and retrieve subscription plans
- Virtual Accounts — Generate dedicated account numbers for NGN and GHS bank transfer collection (static or dynamic)
- Bill Payments — Pay airtime, data, cable TV, electricity, internet bills and more (Nigeria)
- FX Trade — Convert between NGN, GHS, and USD with live quotes (RFQ → trade in two steps)
- Verification — BVN identity verification, bank account name resolution, and card BIN lookup
- Stablecoins — Send USDC/USDT to Polygon wallets, or convert NGN/USD fiat into stablecoins
- Rich UI — Every tool returns a branded HTML card rendered inline in supported clients
- Web App — A standalone browser chat interface powered by Claude + this MCP server
Installation
npm
npx (no install needed)
Docker
Pull the image:
The server communicates over stdio, so it must be launched by an MCP client — not run standalone. Configure Claude Desktop to use the Docker image as the MCP server:
The -i flag keeps stdin open so Claude Desktop can communicate with the server over stdio.
Requirements: Node.js 20 or later (for npm/npx).
Available Tools
Checkout
Direct Charges
Transactions
Transfers
Payment Plans
Virtual Accounts
Bill Payments
FX Trade
Verification
Stablecoins
Card Charge Flow
Direct card charges are multi-step. The charge_card tool handles every stage automatically and tells Claude what to do next.
Authorization parameters
When a second call is needed, pass authorization alongside the original card details:
AMEX cards
American Express transactions require the card_holder_name field in addition to standard card details.
Payload encryption
Card payloads are encrypted with 3DES-ECB using your FLW_ENCRYPTION_KEY before they are sent to Flutterwave (PCI DSS requirement). The encryption is handled automatically — set the environment variable and the server does the rest.
Virtual Accounts
Virtual accounts give each customer a dedicated bank account number to make transfers into. Flutterwave notifies your webhook when a payment arrives.
NGN static account
GHS dynamic account
After creation, save the order_ref — it is the key for retrieving or updating the account via get_virtual_account and update_virtual_account.
Bill Payment Flow
Bill payments follow a 6-step discovery flow. Skip validate_bill_customer for airtime and mobile data.
Supported categories
Bill payments are available for Nigeria only (
country: NG).
FX Trade Flow
Currency conversion uses a two-step quote-then-trade flow. Quotes are valid for 5 minutes and available weekdays only (Monday–Friday).
Supported currency pairs
Quote statuses
Trade statuses
Key constraints
- Minimum trade: $1,000 USD equivalent in the base currency
- Quote lifetime: 5 minutes from issuance (READY state)
- One-time use: Each quote can only be used for one trade
- Approved quantity: May differ from requested quantity due to liquidity or account limits — always use
approved_quantityfor reconciliation - Account enablement: Contact [email protected] to enable FX trading on your account
Verification
Bank Account Resolution
Verify a recipient's account details before sending a transfer. Always show the resolved name to the user before proceeding.
Common bank codes: 044 Access Bank · 057 Zenith Bank · 058 GTBank · 033 UBA · 011 First Bank
Card BIN Lookup
Identify card metadata from the first 6 digits of a card number.
AMEX cards identified via BIN require the
card_holder_namefield when callingcharge_card.
BVN Verification (Nigeria)
Two-step consent flow — customer must approve data sharing on the NIBSS portal.
Requires Flutterwave account enablement — contact [email protected]. If the customer has already consented,
initiate_bvn_verificationreturnsurl: nulland you can callget_bvn_detailsimmediately.
Stablecoins
Send USDC or USDT over the Polygon network, or convert NGN/USD fiat balances into stablecoins. Always call get_stablecoin_fee first so the user knows the net amount the recipient will receive.
Wallet-to-wallet transfer
Fiat-to-stablecoin conversion
Key constraints
Web App
The app/ directory contains a standalone browser chat interface that wraps this MCP server with a Claude-powered conversation loop.
[Flutterwave MCP-UI components: transaction, payment link and transfer cards]
How it works
The web app uses three Anthropic Advanced Tool Use features:
- Tool Search — non-core tools are deferred and loaded on demand, reducing token usage by ~85%
- Programmatic Tool Calling — Claude can write code that calls multiple tools in sequence without inflating the conversation context
- Tool Use Examples — curated
input_examplesfor every tool improve parameter accuracy from ~72% to ~90%
The app returns a rich branded UI card for every tool response — checkout links, transaction details, charge states, transfer summaries, virtual accounts, bill receipts — rendered inline in the chat.
Running the web app
Prerequisites
Get your keys from the Flutterwave Dashboard under Settings → API Keys.
Get your Anthropic key from the Anthropic Console.
Build and start
Then open http://localhost:3000.
Available scripts
Port
Set the PORT environment variable to change from the default 3000.
MCP Server Setup
Via npm
Via GitHub
Environment variables
Usage with Claude Desktop
Add the following to your claude_desktop_config.json. See the MCP quickstart for details.
Pass --tools=all to enable every tool, or supply a comma-separated list to restrict which tools are registered.
Via npm
Via local build
Selective tools
Accepted tool names (use all to enable everything):
MCP-UI Components
Every tool returns a rich HTML card alongside its text response, powered by @mcp-ui/server. The cards use Flutterwave's design tokens — navy #0A0E27, deep orange #FF5804, brand orange #F5A623, and the system sans-serif typeface.
Card charge UI states
Virtual account UI
The virtual account card shows the bank account number in a large, prominent box alongside the bank name, account type (Static / Dynamic), currency, expiry date, and order reference.
Bill payment UI
Verification UI
Stablecoin UI
FX trade UI
Both request_fx_quote/get_fx_quote and initiate_fx_trade/get_fx_trade return dark navy-themed cards:
Cards are compatible with:
- Flutterwave Web App (this repo's
app/) — rendered inline in the chat - MCP Inspector — for testing during development
- Any MCP client that supports the
resourcecontent type with HTML
Contributing
We welcome contributions! Please read our Contributing Guide for details on how to get started, development guidelines, and how to submit pull requests.
Changelog
All notable changes are documented in GitHub Releases.
Security
If you discover a security vulnerability, please do not open a public issue. Instead, email [email protected] directly. We will respond as quickly as possible.
License
MIT © Abraham Olaobaju
See LICENSE for the full text.
Source: README.md at commit c4a97be
Tools
0Version history
1- v1.2.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts