Get your keys from Flutterwave
Sign in
Open the API keys
Copy the keys
Set the webhook in Flutterwave
Choose a secret hash
Open the webhook settings
Enter the URL and the hash
Save
Add the keys in MagicPost
Open the Flutterwave card
Enable it
Paste the keys
- Live Flutterwave Public Key
- Live Flutterwave Secret Key
- Sandbox Flutterwave Public Key
- Sandbox Flutterwave Secret Key
Paste the secret hash
verif-hash header on each request.Save
How payments work
One-time plans (Prepaid, Lifetime). MagicPost creates a Flutterwave payment for the plan price and redirects the customer to the link Flutterwave returns. When the customer comes back, MagicPost verifies the transaction with Flutterwave and records the order only if the transaction was successful. For Lifetime plans it also creates the subscription. Recurring plans (Monthly, Yearly). The first time someone buys the plan, MagicPost creates a Flutterwave payment plan (monthly or yearly, with no end) and attaches it to the payment. Flutterwave creates the subscription after the first successful charge. MagicPost then looks it up by customer email and plan and stores its ID, or falls back to the payment reference. Webhook.charge.completedwith a successful status records the order if it has not been recorded yet. MagicPost needs the user and plan details it attached when it started the payment. For a Monthly or Yearly plan it also creates a subscription record.subscription.cancelledmarks the subscription as cancelled.
charge.completed notification carries the user and plan details from checkout. Check the first renewal of a new plan in your Flutterwave Dashboard and in Admin → Finance → Orders.Currency
MagicPost sends the plan’s currency in uppercase and the plan price as it is, without conversion. Your Flutterwave account must be able to charge the plan’s currency.Test mode
Fill in the Sandbox key fields, select Sandbox under Mode and save. Pay with Flutterwave’s test details while your dashboard is in test mode. Switch Mode back to Live before you sell.Common errors
This payment method is not available right now.
This payment method is not available right now.
Flutterwave could not start the payment. Please try again.
Flutterwave could not start the payment. Please try again.
storage/logs/laravel.log.Flutterwave returned an unexpected response.
Flutterwave returned an unexpected response.
We could not prepare this plan for Flutterwave billing. Please contact support.
We could not prepare this plan for Flutterwave billing. Please contact support.
Payment was cancelled. / Missing Flutterwave reference. / Flutterwave verification failed.
Payment was cancelled. / Missing Flutterwave reference. / Flutterwave verification failed.
Flutterwave shows the webhook failing with status 400
Flutterwave shows the webhook failing with status 400
invalid signature: Secret Hash in MagicPost differs from the hash in the Flutterwave Dashboard.
