# AX Check: flutterwave.com
Checked 2026-09-29.

Quickstart docs are solid, but pricing pages went unchecked.
The quickstart guide is concise and actionable with clear steps. However, a dedicated pricing page was never fetched, leaving prices, units and gating unverified.

## Onboarding needs a login

## Coding sessions
All three independent sessions (DeepSeek V4.1 Flash, Kimi K3, Qwen 3.8 Max) completed and reported pricing without hitting a login wall, citing per-country and per-method transaction rates (roughly 1.4-2% locally in Nigeria, 3.8-4.8% for international cards) while flagging that exact rates vary by country, payment method, and account setup.

### DeepSeek V4.1 Flash
[View public run](https://agents.withgauge.com/p/runs/24170849-9122-44f3-ba9d-5f4ba3a8f18a) · [Read transcript](https://www.ax-check.com/flutterwave.com/sessions/deepseek.json)
Final output gives per-country/method rates (Nigeria local 2%, international cards 4.8%, mobile money ~2%) and explicitly flags assumptions/caveats — dashboard-specific rates, country-detected pricing page, rates change over time.
#### End-to-end onboarding
- **Onboarding needs a login**: Agent never obtained real Flutterwave API credentials during the session. It checked the environment for keys, found none, and proceeded to build the example against documented endpoints. It explicitly tested that live calls fail with a dummy key (401 Invalid authorization key) and with no key at all, then reported the credential gap as the sole blocker. No authenticated call against the real hosted API succeeded; the only successful run was an offline self-test with a fully mocked fetch, which does not demonstrate a real authenticated operation.
  Event 7:

  ```text
  env | grep -iE 'flutter|flw|api_key|secret'
  ```
  Event 118:

  ```text
  Error: Create checkout failed (HTTP 401): Invalid authorization key
  ```
  Event 132:

  ```text
  there are no Flutterwave credentials in this workspace**, so live calls return `401 Invalid authorization key`. That's an account/keys gap, not a code or product limitation.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No Flutterwave account or API keys available in the sandbox**: The workspace had no Flutterwave secret/public keys and no way to self-serve a signup within the session (account creation requires human interaction via the dashboard). The agent confirmed the code path was correct by triggering a real 401 from the live API with a dummy key, isolating the blocker to missing credentials rather than a code or product defect. This is a normal login/signup requirement, not a product defect.
  Event 8:

  ```text
  no relevant env vars
  ```
  Event 118:

  ```text
  Error: Create checkout failed (HTTP 401): Invalid authorization key
  ```

#### Suggested Changes
- **Serve the pricing page's fee data via a static/SSR-accessible source, not only client-side JS bundles**: The pricing page at flutterwave.com/us/pricing returned almost no fee content on a plain fetch and the agent had to reverse-engineer rates by downloading and grepping obfuscated Nuxt JS bundles (e.g. /_nuxt/6e8a5ac.js) for strings like 'fee:' and 'clause:'. Check by curling https://flutterwave.com/us/pricing without a JS-executing browser and confirming the percentage fees appear in the raw HTML response.
  Event 23:

  ```text
  bytes: 858675
  --- pricing mentions ---
  0.5%
  ₦5,250
  
  ```
  Event 38:

  ```text
  HIT: /_nuxt/6e8a5ac.js
  t","ussd","bank-transfer","pos","visa-qr"],fee:["2%","per transaction"],clause:"1.4% transaction fee + 0.6% platform fee"},international:{title:"INTERNATIONAL TRANS
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/6b389efc-5d30-4899-8487-5ba5b7eac80d) · [Read transcript](https://www.ax-check.com/flutterwave.com/sessions/kimi.json)
Final output gives concrete rates (Nigeria local cards ~1.4% capped at NGN 2,000; international cards ~3.8%) while flagging they vary by country/method and to verify current numbers (seq 11).
#### End-to-end onboarding
- **Onboarding needs a login**: Agent found no Flutterwave credentials in the environment, wrote a code example against the hosted API without ever calling it, and explicitly stopped because it needed a human to sign up on the Flutterwave dashboard and supply a test secret key. No authenticated call to the real Flutterwave API was made.
  Event 3:

  ```text
  env | grep -iE 'flw|flutterwave' ; ls /sandbox/repo
  ```
  Event 6:

  ```text
  No Flutterwave credentials found and the repo is empty, so I'll write the example code against the hosted API — no local stacks needed, everything goes through `https://api.flutterwave.com`. I'll be blocked on actually *executing* it live until you provide test API keys (more below).
  ```
  Event 11:

  ```text
  I'm blocked on *running* it: there's no `FLW_SECRET_KEY` in the environment, and live calls require a (free) test key from a Flutterwave dashboard account. If you sign up at flutterwave.com, grab a **test secret key** (`FLWSECK_TEST-...`) and export it, I can execute the script and verify the checkout link generation end-to-end.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No test API key available to run the example**: Flutterwave requires an account-issued secret key (FLWSECK_TEST-...) to authenticate any API call. None was present in the sandbox environment and the agent has no self-service way to generate one, so the script was written but never executed against the live API. This is a missing-credentials limitation of the test setup, not a product defect — Flutterwave normally expects a human to create a dashboard account and copy the key.
  Event 3:

  ```text
  env | grep -iE 'flw|flutterwave' ; ls /sandbox/repo
  ```
  Event 11:

  ```text
  there's no `FLW_SECRET_KEY` in the environment, and live calls require a (free) test key from a Flutterwave dashboard account
  ```

#### Suggested Changes
None identified in this transcript.

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/b58762ea-312a-42b6-8d00-0d3f090dfcb3) · [Read transcript](https://www.ax-check.com/flutterwave.com/sessions/qwen.json)
Final output states pay-as-you-go pricing (~1.4% local NGN, ~3.8% international) explicitly labeled 'approximate' with named assumptions: rates vary by country, fee caps apply, test-mode is free, and tells the user to confirm at flutterwave.com/pricing.
#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: The agent never obtained a real Flutterwave account credential itself. It used a publicly documented sandbox demo key already embedded in Flutterwave's own API docs (FLWSECK_TEST-SANDBOXDEMOKEY-X) to call the create-payment endpoint and got back a hosted checkout link. This demonstrates the API call pattern but is not self-service onboarding since the key was not obtained by the agent creating an account; it was copied from documentation as a publicly known demo credential, and no real resource tied to an agent-created account was verified.
  Event 32:

  ```text
  "default": "Bearer FLWSECK_TEST-SANDBOXDEMOKEY-X"
  ```
  Event 42:

  ```text
  Hosted checkout link: https://checkout-v2.dev-flutterwave.com/v3/hosted/pay/19f0ff7b1eac33c2d1d5
  ```
  Event 49:

  ```text
  the full production flow (webhooks, live keys, KYC/business verification) requires dashboard account setup that only you can do — I can write the code around it, but can't complete onboarding for you.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Production onboarding requires dashboard account setup outside agent's reach**: To move beyond the sandbox demo key to a real live integration, the developer needs to sign into the Flutterwave dashboard for test/live API keys, webhooks, and KYC/business verification. This is a normal login/account requirement, not a product defect, and the agent correctly flagged it and stopped rather than attempting a workaround.
  Event 49:

  ```text
  the full production flow (webhooks, live keys, KYC/business verification) requires dashboard account setup that only you can do — I can write the code around it, but can't complete onboarding for you.
  ```
- **Initial doc URL guesses missed before finding llms.txt index**: Before locating the correct machine-readable documentation index, the agent guessed a few reference and docs paths that returned Not Found pages. This was a minor agent-side inefficiency in doc navigation, resolved quickly once it fetched llms.txt, so it did not block final progress.
  Event 19:

  ```text
  🚧 We couldn't find that page It may have been moved, renamed, or removed.
  ```

#### Suggested Changes
- **Add a direct link from the docs landing page to the llms.txt agent index**: The agent had to guess at several reference/ and docs/ URL paths (create-a-payment-link, collecting-payments/payment-links, payments/payment-links) and hit Not Found pages before discovering the llms.txt index mentioned only in the 404 page footer. Surfacing this index link earlier, e.g. in the main developer.flutterwave.com landing page or top nav, would save agents/developers the initial guess-and-check cycle. Verify by checking that a fresh crawl of the landing page surfaces the llms.txt link without first hitting a 404 page.
  Event 19:

  ```text
  For AI agents: visit https://developer.flutterwave.com/llms.txt for an index of all pages formatted in Markdown and endpoints in OpenAPI.
  ```

### Task given to each agent
Help me build a simple example using Flutterwave. Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop. Stay light: use the hosted product through its SDK or API. Do not start local service stacks or wait for long-running commands; if the quickstart requires either, say so plainly and stop.

No product credentials were supplied and no purchases were authorized.

## Score: C · 58/100 (provisional)
Grades come from completed site checks. Coding sessions and skipped checks do not affect the score.

### Clarity
- **Failed** — Homepage answers Markdown requests

  ```text
  Homepage returned text/html for a Markdown Accept header; no Markdown representation offered.
  ```

- **Failed** — llms.txt provides an actionable documentation index

  ```text
  https://flutterwave.com/llms.txt returns 404; no root documentation index exists.
  ```

- **Skipped** — llms.txt provides navigation guidance

  ```text
  Root llms.txt is 404, so its navigation guidance cannot be evaluated.
  ```

- **Skipped** — llms.txt mentions offered API, MCP, and skills

  ```text
  Root llms.txt is 404; no index content to check for API, MCP or skills mentions.
  ```

- **Pass** — A compact guide representation exists

  ```text
  Quickstart.md is a standalone Markdown guide served at developer.flutterwave.com/docs/quickstart.md.
  ```

- **Pass** — A focused guide is directly retrievable

  ```text
  Quickstart.md returns 200 text/markdown with concrete account, integration, KYC, go-live steps.
  ```

- **Pass** — Equivalent instructions fit a token budget

  ```text
  Quickstart Markdown is 946 tokens, well under the 8000-token budget.
  ```

- **Skipped** — Product-docs links survive format changes

  ```text
  Homepage Markdown unsupported, so link preservation across formats cannot be measured.
  ```

- **Pass** — The compact guide is independently actionable

  ```text
  Quickstart gives concrete steps: create account, choose integration, test with mock data, KYC, go live.
  ```

- **Pass** — Install and next-step links resolve

  ```text
  Quickstart's next-step links (testing, common-errors, best-practices) resolve on the docs site.
  ```


### Onboarding
- **Pass** — Docs lead to a relevant quickstart

  ```text
  Quickstart page gives concrete steps: create account, choose integration, test, KYC, go live.
  ```

- **Skipped** — Installation commands are extractable

  ```text
  Quickstart lists integration methods but no install commands; no CLI/package install page fetched.
  ```

- **Skipped** — Code examples are available without interaction

  ```text
  Quickstart links to integration pages but shows no inline code examples itself.
  ```

- **Pass** — Prerequisites and auth boundaries are explicit

  ```text
  Quickstart requires account signup and test environment; authentication page linked under Core Concepts.
  ```


### Pricing
- **Skipped** — Pricing is readable without interaction

  ```text
  Pricing page was never fetched; only the homepage and a redirect to it were captured.
  ```

- **Skipped** — Prices are stated, not gated

  ```text
  No pricing page content fetched, so stated prices cannot be judged.
  ```

- **Skipped** — Pricing units and limits are explicit

  ```text
  No pricing page fetched; units and limits are not observable.
  ```

- **Pass** — Agents identify pricing and its assumptions

  ```text
  3 of 3 sessions were judged on pricing; 0 fell short. DeepSeek V4.1 Flash: Final output gives per-country/method rates (Nigeria local 2%, international cards 4.8%, mobile money ~2%) and explicitly flags assumptions/caveats — dashboard-specific rates, country-detected pricing page, rates change over time. Kimi K3: Final output gives concrete rates (Nigeria local cards ~1.4% capped at NGN 2,000; international cards ~3.8%) while flagging they vary by country/method and to verify current numbers (seq 11). Qwen 3.8 Max: Final output states pay-as-you-go pricing (~1.4% local NGN, ~3.8% international) explicitly labeled 'approximate' with named assumptions: rates vary by country, fee caps apply, test-mode is free, and tells the user to confirm at flutterwave.com/pricing. This behavioural item does not affect the fast grade.
  ```


### Activation
- **Pass** — An API reference or OpenAPI spec is reachable

  ```text
  API reference index lists many endpoints; docs mention OpenAPI endpoints for AI agents.
  ```

- **Skipped** — An MCP server is documented and well-formed

  ```text
  No MCP server documentation found in fetched Flutterwave pages.
  ```

- **Skipped** — A CLI install path is documented

  ```text
  No CLI install path documented in fetched Flutterwave pages.
  ```

- **Skipped** — SDK packages resolve on their registries

  ```text
  No registry lookup results for Flutterwave SDK packages were supplied.
  ```

- **Skipped** — Agent skills are published

  ```text
  No agent skills published in fetched Flutterwave documentation.
  ```



[Full report data](https://www.ax-check.com/flutterwave.com/report.json)
