Appearance
Installation
For merchants
From zero to a verified test payment, then live.
Requirements
- Shopware 6.6 or 6.7, PHP 8.2+.
- A Flutterwave account (dashboard).
- Your shop on HTTPS with a public domain configured on a sales channel, so Flutterwave can reach the webhook URL.
- A database backup before installing on a live shop.
1. Install the plugin
Option A — Composer (recommended)
bash
composer require "kommandhub/flutterwave-sw:^0.9@beta"@beta is required while the plugin is in beta. Background: Shopware: extension management.
Option B — ZIP upload
- Get the release ZIP for version 0.9.0-beta.1.
- Extensions → My extensions → Upload extension (Shopware: My extensions), select the ZIP.
2. Activate
bash
bin/console plugin:refresh
bin/console plugin:install --activate KommandhubFlutterwaveSW
bin/console cache:clearOr Install and switch it active in Extensions → My extensions.
Activation creates the payment method Pay with Flutterwave (technical name kommandhub_flutterwave_payment), not yet assigned to any sales channel, and customer custom fields for bank details. No migrations, no background worker.
3. Collect keys and choose a webhook hash
In the Flutterwave dashboard, test mode:
- Settings → API Keys — copy the Public Key (
FLWPUBK_TEST-…) and Secret Key (FLWSECK_TEST-…). - Settings → Webhooks:
- URL:
https://<your-shop-domain>/flutterwave/webhook - Secret hash: a long random value you make up, e.g.
openssl rand -hex 32. It is not an API key. - Enable the events for successful charges and refunds. Save.
- URL:
The domain must be configured on a Shopware sales channel — Shopware rejects requests for unknown domains with 400. Basic auth or maintenance mode in front of the shop blocks webhooks.
4. Configure the essentials
Extensions → My extensions → Flutterwave → ⋯ → Configure, on All Sales Channels, Test configuration card:
- Enable Sandbox — on.
- Public Key, Secret Key — the test keys.
- Webhook Secret Hash — exactly the value from the dashboard.
- Save.
Optionally set the Title and Description shown on Flutterwave's page — see Configuration.
5. Offer the payment method
- Sales Channels → (your storefront) → General → Payment methods: add Pay with Flutterwave.
- Rename it or add an image under Settings → Shop → Payment methods if you like (Shopware: Payment methods).
6. Verify
- Place an order with Pay with Flutterwave and pay with a Flutterwave test card.
- You return to the order confirmation; in the Administration the payment status is Paid and the Flutterwave tab shows the transaction.
- Cancel test: start another payment and cancel on Flutterwave's page — the payment becomes Cancelled.
- Webhook test: in the Flutterwave dashboard's webhook log the delivery shows
200.
If a step fails, see Troubleshooting.
7. Go live
- Fill in Live configuration: live Public Key, Secret Key, and a new live Webhook Secret Hash.
- In Flutterwave live mode, set the same webhook URL and the live hash.
- Turn Enable Sandbox off.
- Grant Process Flutterwave refunds to staff roles — Refunds.
- Turn off Enable Detailed Logging if you used it.
- Make and refund a small real payment.
Updating
bash
composer update kommandhub/flutterwave-sw
bin/console plugin:refresh
bin/console plugin:update KommandhubFlutterwaveSW
bin/console cache:clearZIP installs: upload the new ZIP, then Update. Always run the update step — it re-applies the payment method and custom fields. Update only this package, not all dependencies.
Uninstalling
Extensions → My extensions → ⋯ → Uninstall, or bin/console plugin:uninstall KommandhubFlutterwaveSW.
- Pay with Flutterwave is deactivated, not deleted.
- Flutterwave data on orders stays.
- Without keep plugin data, the bank-details custom fields and all saved bank details (including BVNs) are removed.