Achekam

Flutterwave refunds: minimums, timing and statuses

How a Nigerian business refunds a Flutterwave payment, how long each kind of refund takes to reach the customer, and which status means it is done.

By Achekam · · 4 min read · For Running a business businesses in Nigeria

Flutterwave refund status completed bank transfer

"We have refunded you" is one of the most misunderstood sentences in online selling. The business means it pressed the button. The customer hears that the money is back in their account. When the customer checks a few days later and finds nothing, the next message is angrier, and sometimes the next step is a chargeback.

Flutterwave refunds move through stages, take different lengths of time depending on how the customer paid, and carry statuses that are easy to misread. This article explains each part, following Flutterwave's documentation, and how refunds are handled in Achekam for invoices and for the till.

Full or partial, from your available balance

Flutterwave's documentation says a refund is started by sending the transaction ID to the refund endpoint. A partial refund requires the refund amount to be specified. In both cases the refund amount is deducted from the merchant's available balance.

That last point matters for cash planning. A business that settles its Flutterwave balance to the bank every day may have little left in it when a large refund is needed. If the balance is too low, the refund cannot simply be taken from money that has already gone to your bank account.

The minimum refund amount

Flutterwave's documentation says the minimum refund amount is NGN 100 (and KES 10 for shilling payments), and refund attempts below the minimum are rejected with a 400 validation error. A small refund, such as the difference on a mispriced item, may therefore have to be settled another way: as credit against the customer's next purchase, or by a direct bank transfer you record yourself.

Whichever route you take, keep the paper trail tidy. Note on the customer's file why the money went back by another method, so that a later query, or an auditor reading the receivables ledger, can follow what happened without asking.

How long each kind of refund takes

Flutterwave's documentation gives different timings by payment method:

How the customer paidWhen the refund is completed, per Flutterwave
Cardbetween 3-15 days after the refund is initiated
Mobile money wallet3-5 days
Bank accountwithin 24 hours

These are Flutterwave's own figures, taken from its documentation. Tell the customer the expected range for their payment method when you confirm the refund. Setting that expectation at the start saves a second, angrier message later. The refund steps, minimum amounts and stages are set out on Flutterwave's refunds page.

Reading the statuses

The word "completed" does not mean what it seems to. Flutterwave's documentation says a refund with the status "completed" has been initiated but is still pending disbursement to the customer. The status "completed-bank-transfer" means the refund to a bank account was successful. Other final statuses include completed-momo, completed-mpgs and completed-offline.

So "completed" on its own means Flutterwave has accepted the instruction, not that the customer has the money. Wait for the final status for that payment method before you tell the customer their money has arrived.

Refund notifications are off unless you ask

Many businesses rely on webhooks to learn when a payment succeeds and assume refunds work the same way. They do not, by default. Flutterwave's documentation says webhooks are not sent for refunds by default, so a merchant must ask Flutterwave's internal team to enable refund webhooks, or otherwise use a callback URL or the fetch-refund endpoint to confirm the final refund status.

If you have not asked for refund webhooks, someone has to check the status in the dashboard until the refund reaches a final state. Put it on a list, with the date the refund was started.

How Achekam handles Flutterwave refunds

Achekam treats invoice payments and till payments differently.

Invoice payments. Achekam does not send a refund of an online invoice payment through the gateway. It is made in Flutterwave's own dashboard and recorded in the books by a person. When the refund relates to goods returned or a service cancelled, record it against a credit note: in Achekam a credit note is issued from the invoice it corrects, in full or for chosen lines, posted to the ledger, and can be downloaded as a PDF or e-mailed, with leftover credit held for the customer. The equivalent steps for Paystack are in Paystack refunds on invoice payments.

Till payments. At the till, refunds of Paystack, Flutterwave, Stripe and Pesapal payments are sent back through the provider's own API. A provider refund counts as completed only on the provider's own confirmation, which fits Flutterwave's warning about the word "completed". PayFast, Ozow, Peach, M-Pesa and bank EFT refunds are made in the provider's own portal and recorded by the cashier with a reference.

If the refund is for an overpayment rather than a return, see when a customer pays too much through Flutterwave.

A refund routine

  1. Decide full or partial, and confirm the amount is at least the minimum.
  2. Check the available balance can cover it.
  3. Start the refund in the dashboard (invoice payments) or at the till (till payments).
  4. Record it in the books the same day, against a credit note where goods or services are involved.
  5. Tell the customer the expected timing for their payment method.
  6. Watch the status until it reaches the final state for that method.
  7. Close the loop with the customer once the refund has actually landed.

A refund handled this way costs the sale. A refund handled badly can cost the customer as well.

General guidance only, not advice on your own circumstances. Tax and payroll rules change: check the current position with the authority or your adviser.

Related articles

More on Running a business

See how Achekam handles it with your own records: create your account