# Flutterwave

https://docs.wisecp.com/es/flutterwave-module

Collect payments through Flutterwave with cards, bank transfer, USSD, mobile money and other local methods on one hosted payment page, in the currencies your Flutterwave account accepts.

## Reaching the Screen

Go to **Settings → Financial → Payment Gateways**, open **All Modules** and click the Flutterwave card: `{admin}/modules/payment?module=Flutterwave`

Ticking **Status** and saving lists the method on the payment step. Use [Payment Gateways](https://docs.wisecp.com/en/payment-modules) to order the methods clients see.

## What Is on the Screen

The card holds your Flutterwave secret key, the optional notification hash and the payment options you want to show.

The client sees a Flutterwave panel on the payment step with the amount and a **Continue to Flutterwave** button. Clicking it opens Flutterwave's own payment page, and the client returns to your site afterwards.

The amount goes to Flutterwave in the invoice currency, or in the one you pick under **Converting Currency**. Refunds can be sent from the panel. Subscriptions, stored cards, automatic payments and installments are not supported.

This module replaces the older **RavePay (Legacy v2)** module, whose API Flutterwave has retired.

## Before You Configure It

- A Flutterwave account and its secret key, read in the Dashboard under **Settings → API Keys**. The key itself sets the mode, so there is no separate test switch.
- Every currency you plan to charge enabled on your Flutterwave account. A currency the account does not accept is refused when the payment page is created.
- Access to **Settings → Webhooks** in the Flutterwave Dashboard if you want payments confirmed even when the client closes the browser.

## Fields

- **Status**: Turns the module on. While it is off the other fields stay locked and clients are never offered the method.
- **Secret Key**: Required to take payments. It starts with `FLWSECK_TEST-` in test mode or `FLWSECK-` in live mode; the form refuses any other shape.
- **Secret Hash**: Optional. The value you enter as Secret Hash when you register the webhook in the Flutterwave Dashboard. It proves a notification really came from Flutterwave; without it notifications are not processed.
- **Payment Options**: Optional. Comma-separated Flutterwave option names shown on the payment page, for example `card,banktransfer,ussd`. Empty shows every method enabled on your account.

Commission, **Converting Currency**, accepted amount range and country lists behave the same on every gateway; see [Payment Gateways](https://docs.wisecp.com/en/payment-modules). **Callback URL**, **Success URL** and **Failed URL** cannot be edited; the callback address is the one you register as a webhook.

## Tasks

### Connect your Flutterwave account

1. In the Flutterwave Dashboard open **Settings → API Keys**. Switch the Dashboard to test mode and copy the key that starts with `FLWSECK_TEST-`.
2. Open the Flutterwave card under **All Modules** and tick **Status**.
3. Paste the key into **Secret Key**. Fill **Payment Options** only if you want to limit the methods shown.
4. Click **Save Changes**. The method now appears on the payment step.

### Register the notification address

1. Copy the **Callback URL** from the module card.
2. In the Flutterwave Dashboard open **Settings → Webhooks**, paste that address as the webhook URL and enter a value of your choice as **Secret Hash**, then save.
3. Paste the same value into **Secret Hash** on the module card and click **Save Changes**.
4. Paid invoices are now settled even when the client closes the browser on Flutterwave's page.

### Run a test payment

1. Place a small order as a client, choose **Pay with Flutterwave** and click **Continue to Flutterwave**.
2. On the payment page use Flutterwave's test card `5531 8866 5214 2950` with expiry `09/32`, CVV `564`, PIN `3310` and OTP `12345`.
3. The client returns to your site and the invoice is marked as paid, which activates the order.
4. Replace the key with the `FLWSECK-` one, register the webhook on the live account too, and repeat with a real low-value payment.

### Refund a payment

1. Open the invoice from [Invoice Detail](https://docs.wisecp.com/en/invoice-detail-overview).
2. Set its status to refunded, choose **Refund via payment gateway** as the refund method and confirm. The other two options only record the refund and send nothing to Flutterwave.
3. The invoice's share of the Flutterwave payment is returned to the client. Flutterwave completes refunds in 3 to 15 working days.

### Replace the legacy RavePay module

1. Configure Flutterwave as above with the keys of the same account.
2. Under **Payment Gateways** turn off **RavePay (Legacy v2)**. Invoices paid through RavePay keep their records.
3. Clients now see only **Pay with Flutterwave**.

## Things to Watch

> **The key prefix decides the mode**
> 
> A payment made with an `FLWSECK_TEST-` key marks the invoice as paid without moving money. Switch the key and the webhook together when you go live.

> **Without a Secret Hash the webhook does nothing**
> 
> Notifications that cannot be verified are ignored. The payment is still settled when the client returns to your site, so fill in the hash to cover clients who close the browser early.

> **Short collections stay open**
> 
> If Flutterwave collects less than the total, only that amount is recorded and the invoice stays unpaid. A payment in another currency is refused. Check the transaction in your Flutterwave Dashboard before you settle it by hand.

## Required Privileges

**Payment Module Settings** (`MODULES_PAYMENT_SETTINGS`) is required.

## Related Articles

- [Payment Gateways](https://docs.wisecp.com/en/payment-modules)
- [Invoice Detail](https://docs.wisecp.com/en/invoice-detail-overview)
- [Module Management](https://docs.wisecp.com/en/module-management)
