Guide - Integrations

How do you analyze Flutterwave payments in Metabase?

Flutterwave analytics turns finance operations into shared, queryable models. Flutterwave supports payments, transfers, wallets, and settlements across currencies and local methods. In Metabase, transaction and settlement data can reveal channel performance, cash delivery, fee leakage, and reconciliation exceptions. Metabase connects to the database that holds the synced data; it does not connect natively to Flutterwave.

TL;DR - Use the MCP + CLI route for a scoped, short-lived analysis. Use the official API or approved connector route for recurring dashboards, history, permissions, and reconciliation.

How do you connect Flutterwave to Metabase?

1 - MCP + CLI route (AI-assisted)

Explore a scoped snapshot quickly

The community mcp-flutterwave package supports transaction lookup and many write-capable payment tools against Flutterwave v3. Enable only the read_transaction tools for analysis and use the official API for scheduled ingestion. Pair the approved server with the Metabase CLI to load a focused CSV as a table and model.

Best for
  • Quick questions about Flutterwave data
  • Validating fields and dashboard ideas before building a pipeline
  • Loading a minimal, permissioned snapshot into Metabase
Trade-offs
  • A CSV is a point-in-time snapshot, not governed reporting
  • Finance data needs least-privilege credentials and an explicit tool allowlist
  • Move recurring dashboards to the warehouse-backed route
2 - Pipeline route (warehouse-backed)

Durable dashboards with history

Use Flutterwave's APIs and verified webhooks to sync transactions, settlements, transfers, refunds, and chargebacks. Keep sandbox and production records separated and model settlement as its own lifecycle.

Best for
  • Recurring finance and leadership dashboards
  • Historical aging, lifecycle, and period reporting
  • Joining finance data with sales, product, and operations data
Trade-offs
  • Requires a destination database and maintained sync
  • You own currency, status, accounting period, and reconciliation definitions
  • Every modeled total should reconcile to the source system

What can you analyze from Flutterwave?

  • Payment success by method, country, and currency
  • Settlement status and lag
  • Collection and payout balances
  • Fees, refunds, and chargebacks
  • Transaction-to-settlement reconciliation

Which Flutterwave dashboards should you build in Metabase?

For: Finance leaders

Finance overview

A compact view of cash, exposure, and operating performance.

  • Payment volume and success
  • Settled amount
  • Collection vs. payout balance
  • Fees and chargebacks
For: Finance operations

Operations

The work that needs attention before the next close.

  • Flagged settlements
  • Failed payments
  • Pending transfers
  • Refund and chargeback queue
For: Controllers

Controls and reconciliation

Find exceptions before they become close surprises.

  • Successful payments not settled
  • Settlement destination exceptions
  • Duplicate references
  • Webhook and API freshness
For: FP&A

Planning and trends

Compare actuals with the plan and explain the variance.

  • Method and country mix
  • Settlement forecast
  • Fee-rate trend
  • Cross-border volume

How do you use Flutterwave MCP with the Metabase CLI?

The Flutterwave API MCP server is a communityMCP option for AI-assisted exploration. The community mcp-flutterwave package supports transaction lookup and many write-capable payment tools against Flutterwave v3. Enable only the read_transaction tools for analysis and use the official API for scheduled ingestion. The Metabase CLI can then upload a sanitized CSV and create a ready-to-query table and model.

  • Start with a narrow read-only question and the minimum required objects.
  • Remove secrets, bank details, and personal fields before exporting.
  • Use mb upload csv for a first snapshot and mb upload replace for a controlled refresh.
  • Move to an API or connector sync when the dashboard becomes recurring.

How do you set up Flutterwave MCP and the Metabase CLI?

Flutterwave API MCP servercommunity

Data source
Flutterwave API
Auth
Bearer access token or secret key stored server-side
Access
Read-only, least privilege
Use for
Exploration and scoped exports

Metabase CLIofficial

Install
npm install -g @metabase/cli
Auth
mb auth login
Load data
mb upload csv --file data.csv
Requires
An uploads database in Metabase
MCP clientExample MCP configuration - verify before use
{
  "mcpServers": {
    "flutterwave": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-flutterwave",
        "--tools=read_transaction,read_transaction_with_reference,read_transaction_timeline"
      ],
      "env": { "FLW_SECRET_KEY": "your-secret-key" }
    }
  }
}
TerminalLoad a Flutterwave CSV with the Metabase CLI
# Install the Metabase CLI
npm install -g @metabase/cli

# Log in (opens your browser; requires Metabase v62+)
mb auth login --url https://your-metabase.example.com

# Load a scoped Flutterwave export - creates a table and a model
mb upload csv --file flutterwave-export.csv --collection "Finance & Accounting"

# Refresh the same table later
mb upload replace <table-id> --file flutterwave-export.csv
Verify before connecting: check the current Flutterwave API MCP server documentation, review every MCP tool, and enable an uploads database under Admin > Settings > Uploads. This is a third-party server: review its source, pin its version, and restrict it to the minimum read tools and credentials.

Can you generate a Flutterwave finance dashboard with AI?

Yes. Use the prompt below with an assistant that can access an approved data route and the Metabase CLI. It tells the assistant to inspect the real schema, reconcile totals, and skip cards that the available data cannot support.

Prompt for a Flutterwave finance dashboard
Create a polished Metabase dashboard for Flutterwave finance analytics.
Work end to end: find existing modeled data first; if none exists, load a minimal
read-only snapshot or describe the warehouse sync required.

Goal: Connect Flutterwave to Metabase for transaction success, settlements, payout timing, fees, refunds, chargebacks, and reconciliation dashboards.

Inspect before querying:
- Inspect actual tables, column names, currencies, status values, and timestamps.
- Do not assume the source schema matches this guide exactly.
- Reconcile source totals before publishing any finance KPI.

Important:
- Do not claim Metabase connects natively to Flutterwave; it reads a
  supported database or CLI-uploaded tables.
- Keep native amount, native currency, and reporting-currency amount separate.
- Distinguish authorization, posting, payment, settlement, and reconciliation
  states where the source exposes them.
- Use stable business keys and apply updates/deletes during incremental syncs.
- Exclude account numbers, personal data, and secrets from broad dashboards.
- Only build cards whose required fields and history are actually present.

Dashboard sections:
1. Finance overview: Payment volume and success; Settled amount; Collection vs. payout balance; Fees and chargebacks.
2. Operations: Flagged settlements; Failed payments; Pending transfers; Refund and chargeback queue.
3. Controls and reconciliation: Successful payments not settled; Settlement destination exceptions; Duplicate references; Webhook and API freshness.
4. Planning and trends: Method and country mix; Settlement forecast; Fee-rate trend; Cross-border volume.

Suggested models: modeled_flutterwave_transactions, modeled_flutterwave_settlements, modeled_flutterwave_refunds_chargebacks.

Output: Build the dashboard if you have permission; otherwise provide the exact
questions, SQL, model definitions, and layout. State refresh time, reporting
currency, accounting basis, and any reconciliation caveats.

How do you sync Flutterwave into a database or warehouse?

Use Flutterwave's APIs and verified webhooks to sync transactions, settlements, transfers, refunds, and chargebacks. Keep sandbox and production records separated and model settlement as its own lifecycle.

Flutterwave API or data service

Start from Flutterwave's official interface and authentication documentation. Extract only the finance objects required by the models below.

dlt Flutterwave REST pipeline

Load charges, refunds, transfers, fees, and customers after validating the API version and endpoint coverage you deploy.

Implementation checklist

  1. Create a dedicated read-only integration identity and document its scopes.
  2. Land raw records with source IDs, source timestamps, extraction time, and currency fields intact.
  3. Apply updates and deletes idempotently; keep lifecycle history when aging or process metrics depend on it.
  4. Reconcile modeled totals to Flutterwave for a closed period before exposing the models broadly.
  5. Connect Metabase to the destination database and schedule model refreshes.

Source documentation

What data model should you use?

EntityGrainUse
transactionsone row per payment transactionattempt, success, method, and amount
settlementsone row per settlementcash delivery and status
settlement_detailsone row per transaction in a settlementreconciliation
refunds_chargebacksone row per loss eventrisk and net revenue

Build reusable models such as modeled_flutterwave_transactions, modeled_flutterwave_settlements, modeled_flutterwave_refunds_chargebacks.

Which finance metrics are useful?

Practical SQL patterns

Settlement lag by currencyPostgreSQL
SELECT
  currency,
  COUNT(*) AS settled_transactions,
  percentile_cont(0.5) WITHIN GROUP (
    ORDER BY EXTRACT(EPOCH FROM (settled_at - paid_at)) / 3600.0
  ) AS median_settlement_hours,
  percentile_cont(0.9) WITHIN GROUP (
    ORDER BY EXTRACT(EPOCH FROM (settled_at - paid_at)) / 3600.0
  ) AS p90_settlement_hours
FROM modeled_flutterwave_settlements
WHERE settlement_status = 'SUCCESSFUL'
GROUP BY 1
ORDER BY 1;
Payment success rate by method and currencyPostgreSQL

Compare normalized lifecycle states from one API version with an explicit attempt denominator.

SELECT
  payment_method,
  currency,
  COUNT(*) AS attempts,
  COUNT(*) FILTER (WHERE payment_status = 'successful') AS successful,
  ROUND(100.0 * COUNT(*) FILTER (WHERE payment_status = 'successful')
    / NULLIF(COUNT(*), 0), 2) AS success_rate_pct
FROM modeled_flutterwave_payments
WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY 1, 2
ORDER BY attempts DESC;

Common mistakes

Treating collected funds as available cash.→ Use successful settlement into the bank account or wallet as the cash event.
Mixing API versions in one model.→ Record source API version and normalize status values before unioning.
Ignoring flagged settlements.→ Surface flag reason, amount, age, and owner as finance-operations work.

Dashboards

Integrations

Analytics

FAQ

When is a Flutterwave transaction complete for finance reporting?
Customer payment success and settlement are different milestones. Use settlement for delivered cash and keep payment success for conversion analysis.
What should a settlement dashboard show?
Gross amount, fees, net amount, destination, status, settlement time, underlying transactions, and exceptions.
Does Metabase connect natively to Flutterwave?
No. Metabase reads supported databases and uploaded tables. Sync Flutterwave data into a database or load a scoped CSV snapshot first.