Connecting Flutterwave
Connect your Flutterwave account to process Pan-African cards, Bank Accounts, and Mobile Money (MoMo) across 30+ African countries, including Ghana, Nigeria, Kenya, Uganda, Rwanda, South Africa, and Francophone Africa.
By integrating Flutterwave with SolydFlow's Consensus Engine and Sweeper, you eliminate webhook spoofing, handle slow telco networks, and enforce entitlements reliably.
Step 1: Add Flutterwave Secret Keys to the Vault
SolydFlow requires your Flutterwave Secret Keys to initialize payments and independently verify transaction status directly against Flutterwave's v3 API.
- Log in to your Flutterwave Dashboard.
- Navigate to Settings → API Keys.
- Copy your Secret Key (
FLWSECK_TEST...for Sandbox andFLWSECK_LIVE...for Production). - Open the SolydFlow Console.
- Go to Project Settings → API Credentials Vault.
- Expand the Flutterwave section, paste both your Test and Live keys, and click Save Encrypted Configuration.
All credentials stored in the SolydFlow Vault are encrypted using hardware-backed AES-256-GCM. Secret keys are never exposed to client applications.
Step 2: Configure the Inbound Webhook
Flutterwave must notify SolydFlow when asynchronous payment events (such as Mobile Money authorization or bank transfers) occur.
- In the SolydFlow Console, navigate to Project Settings → Inbound Gateway Webhook Configurations.
- Copy your unique Flutterwave Inbound Webhook URL:
https://api.solydflow.com/api/v1/webhook/flutterwave/{your_solydflow_api_key}
- In your Flutterwave Dashboard, go to Settings → Webhooks.
- Paste the URL into the Webhook URL field.
- Click Save Changes.
How SolydFlow Secures Flutterwave Transactions
SolydFlow never grants access based solely on incoming webhook payloads.
When Flutterwave sends a charge.completed webhook:
- SolydFlow intercepts the incoming event.
- Entitlement activation is temporarily paused.
- The Consensus Engine makes a server-to-server call to Flutterwave (
GET /v3/transactions/{id}/verify) using your encryptedFLWSECK_LIVE...key. - If the live API response confirms that the charged amount, currency, and customer reference match, SolydFlow commits a
SETTLED_CONSENSUSrecord to the Immutable Ledger. - The user's entitlement (e.g.
pro_access) is immediately granted and cached locally on the user's device for encrypted offline access.
This prevents:
- Client response tampering: Forging a success callback inside the app.
- Webhook Replay Attacks: Resending previously settled payloads.
- Delayed MoMo drops: Where telco networks delay confirmation, SolydFlow's Sweeper continuously polls the verification API until the transaction achieves consensus.
Pan-African Payment Channels Supported
Through Flutterwave, SolydFlow supports regional payment rails across Africa:
| Country | Currency | Key Payment Rails |
|---|---|---|
| Ghana | GHS | MTN Mobile Money, Telecel Cash, AT Money, Local Cards |
| Uganda | UGX | MTN MoMo, Airtel Money |
| Rwanda | RWF | MTN Rwanda, Airtel Rwanda |
| Nigeria | NGN | Debit/Credit Cards, Direct Bank Transfer, USSD |
| Kenya | KES | M-Pesa, Airtel Money, Local Cards |
| Francophone Africa | XOF / XAF | Orange Money, Moov, Wave |
Sandbox Testing Matrix
When developing with your sf_pk_test_... key, use standard Flutterwave test credentials:
| Test Scenario | Card / Number | Expiry | CVV | OTP Simulation | Expected Outcome |
|---|---|---|---|---|---|
| Successful Card | 4444 •••• •••• 4444 | Future date | 123 | 12345 | SETTLED_CONSENSUS (Granted) |
| Card Declined | 4444 •••• •••• 4441 | Future date | 123 | N/A | FAILED_DECLINED (No Access) |
| Ghana MoMo Test | +233 24 000 0000 | N/A | N/A | 12345 | SETTLED_CONSENSUS (Granted) |
| Uganda MoMo Test | +256 77 000 0000 | N/A | N/A | 12345 | SETTLED_CONSENSUS (Granted) |