Handling Underpayments and Overpayments
Overview
When creating a temporary virtual account, merchants specify an expected deposit amount. This page explains what happens when a customer sends an amount that does not match the expected value.This behavior applies only to temporary virtual accounts.Permanent virtual accounts do not enforce a specific amount and process any transfer received.
Underpayments
If a customer sends less than the expected amount, the deposit is automatically refunded to the sender’s bank account.Example
- Expected amount: ₦50,000
- Customer sends: ₦45,000
- Result: ₦45,000 is refunded to sender’s bank account
Overpayments
If a customer sends more than the expected amount:- The correct amount is processed normally
- The excess amount is refunded to the sender
Example
- Expected amount: ₦50,000
- Customer sends: ₦55,000
- Result:
- ₦50,000 is processed and converted to stablecoin
- ₦5,000 is refunded to sender’s bank account
Fidelity Bank Exception
Why This Happens
This is due to technical constraints specific to Fidelity Bank’s transfer processing system.Recommendation
When displaying bank details to customers, always emphasize the exact amount if there’s a possibility they are using Fidelity Bank.How Refunds Work
Refunds are processed automatically by Daya and typically arrive within:- 1-2 business days for most banks
- May take longer depending on the sender’s bank
Refunds are handled transparently. No merchant action is required.
API Behavior
When an amount mismatch occurs:| Event | Deposit Status | Webhook Event |
|---|---|---|
| Underpayment (non-Fidelity) | Not created | None |
| Overpayment (non-Fidelity) | SETTLED (for correct amount) | deposit.settled |
| Mismatch (Fidelity) | FAILED | deposit.failed |
Which Banks Are Affected?
This automatic refund behavior applies to transfers from all Nigerian banks except Fidelity Bank.Common Banks (Automatic Refund)
- Access Bank
- GTBank
- UBA
- Zenith Bank
- First Bank
- Kuda
- Opay
- And all others except Fidelity
Fidelity Bank (Transaction Fails)
Exact amount match is required.Best Practices
Always display the exact amount prominently
Always display the exact amount prominently
When showing bank details to customers, make the expected amount highly visible and emphasize that it must match exactly.
Warn about Fidelity Bank behavior
Warn about Fidelity Bank behavior
If you know or suspect a customer is using Fidelity Bank, explicitly warn them that the amount must be exact.
Test in sandbox
Test in sandbox
Sandbox mirrors production behavior for amount mismatches. Test your flow with under/overpayments to see how your system handles refunds.
Monitor deposit.failed webhooks
Monitor deposit.failed webhooks
Set up webhook listeners for
deposit.failed events to catch Fidelity Bank mismatches and notify customers to retry.Related Pages
Temporary VA Types
Learn about temporary virtual accounts
Deposit Concepts
Understand deposit lifecycle and statuses
Limits Overview
See other merchant-facing limits