When a customer pays too much through Flutterwave
What a Nigerian business should check when Flutterwave shows more than the invoice, what charged and settled amounts mean, and how to deal with the excess.
By Achekam · · 4 min read · For Running a business businesses in Nigeria
Overpayments sound like a pleasant problem. A customer meant to pay an invoice and paid more than it asked for, perhaps by keying an extra digit, paying a rounded figure, or paying a pro-forma amount that later changed. But money that is not yours to keep is a liability, and a customer who notices weeks later is far less pleasant than one you contacted the same day.
With Flutterwave there is a second layer of confusion: the figures on its records do not all mean the same thing. This article explains which numbers to check, what "charged" and "settled" mean, and what to do with an excess, following Flutterwave's documentation and Achekam's own rules.
Four checks before any payment counts
Flutterwave's documentation says that after a charge is completed, the merchant should verify with Flutterwave that the payment was successful before giving value to the customer. When verifying, it says to check that:
- The reference matches the one the merchant generated for that payment.
- The status is successful.
- The currency is the one expected.
- The amount paid is greater than or equal to the amount expected.
The first three catch payments that belong to a different invoice, never completed, or arrived in the wrong currency. The fourth is where overpayments surface. Flutterwave explains these checks on its transaction verification page, which lists what to compare before giving value to the customer.
Paid at least what was expected
Notice that Flutterwave's rule is "greater than or equal to", not "exactly equal". Its documentation says that where more was paid, the merchant can give the customer value and refund the rest. An overpayment is not a failed payment. The customer has paid the invoice in full; the question is only what happens to the extra.
Charged amount and amount settled
Flutterwave's verification response includes two amounts that are easy to mix up. Its documentation says data.charged_amount shows how much the customer was charged, while data.amount_settled shows how much the merchant will receive from the transaction.
The gap between them is mostly Flutterwave's fee. For your books, the two figures belong in different places:
- The charged amount is what the customer paid. It settles the invoice and, if larger than the invoice, creates the overpayment.
- The amount settled is what reaches your bank. The difference is a processing cost, not a discount to the customer.
Recording only the settled amount against the invoice makes the customer look as if they underpaid by the fee, which is wrong and leads to awkward reminder letters. In Achekam, payouts from each gateway are recorded against that gateway's clearing account with its fees, by hand or from Flutterwave's own payout lists, so the fee is booked as a cost when the payout arrives rather than against the customer.
What Achekam records
A business can take Flutterwave payments on its invoices in ZAR, NGN, KES, GHS or USD, and each payment is re-verified with Flutterwave before it is recorded. A verified gateway payment is recorded as a receipt against the invoice, debiting the Flutterwave clearing account and crediting trade receivables, and the invoice shows as paid or part-paid. The amount is checked against what the link asked for, and a repeated notification never pays twice.
When Flutterwave shows that a customer paid more than the invoice, compare its charged amount with the receipt in your books. If the two differ, the excess needs a decision, and a person should make it.
Refund the excess, or hold it as credit
There are two honest options.
Refund it. 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, and the refund amount is deducted from the merchant's available balance. For an overpayment, the partial refund is the right tool: you keep the invoice amount and return only the extra. In Achekam, a refund of an online invoice payment is not sent through the gateway: it is made in Flutterwave's own dashboard and recorded in the books by a person. Record it on the same day so the clearing account stays in step. The steps are in Flutterwave refunds.
Hold it on account. If the customer buys from you regularly and agrees, the excess can stay as credit against their next invoice. In Achekam a business records customer payments against one invoice or spread across a customer's invoices, and any extra is held on the customer's account. A receipt can also be re-allocated. Get the customer's agreement in writing, because the money is theirs until they say otherwise.
Whichever you choose, do not leave the excess sitting unexplained in sales. It is not income.
Telling the customer
A short, prompt message prevents most disputes. Tell the customer:
- the invoice number and the amount it asked for;
- the amount Flutterwave shows they paid;
- what you propose: a refund of the difference, or credit on their account; and
- how long a refund usually takes to reach them, if your provider states it.
A customer who hears from you first rarely raises a chargeback. One who discovers the overpayment on their bank statement may go straight to their bank. For other ways naira customers pay, see collecting naira payments.
A routine for the person who reconciles
Each week, look at the gateway payments recorded against invoices and ask:
- Does any charged amount exceed its invoice?
- Has each excess been refunded or, with the customer's agreement, held on account?
- Does each payout match the charged amounts less fees for the payments it covers?
- Is every refund made in the dashboard also recorded in the books?
Overpayments caught weekly are a courtesy call. Overpayments caught at year end are a reconciliation project.
General guidance only, not advice on your own circumstances. Tax and payroll rules change: check the current position with the authority or your adviser.