Overview
Deposits flow through different statuses from initial creation to final settlement. Each status indicates where the deposit is in its lifecycle and whether merchant action is required.Status Values
| Status | Description | Terminal? | Action Required? |
|---|---|---|---|
PENDING_FX | NGN received, awaiting FX | ❌ No | ❌ No |
PENDING_WITHDRAWAL | FX done, awaiting on-chain tx | ❌ No | ❌ No |
SETTLED | Fully complete | ✅ Yes | ❌ No |
FAILED | Permanent failure | ✅ Yes | ✅ Yes (notify user) |
FLAGGED | Held for manual review | ✅ Yes | ✅ Yes (contact support) |
REVERSED | Bank reversed transfer | ✅ Yes | ❌ No |
Complete Lifecycle
Status Descriptions
PENDING_FX
NGN received, FX conversion pending- Bank transfer detected in virtual account
- Validation in progress (limits, expiry, risk)
- Next: Execute FX conversion
deposit.created
PENDING_WITHDRAWAL
FX complete, on-chain withdrawal pending- FX successfully executed
- Waiting for on-chain transaction confirmation
- Only applies to
AUTO_WITHDRAWmode
- Network congestion
- Gas price fluctuations
- Chain confirmation requirements
SETTLED
Deposit fully complete ✅ For AUTO_WITHDRAW:- On-chain transaction confirmed
- Funds in destination wallet
- USD credited to merchant’s internal balance
- Available for withdrawal
deposit.settled
FAILED
Permanent failure ❌ Deposit cannot be completed automatically. Requires merchant intervention. Common causes:| Cause | Description | Fix |
|---|---|---|
| Below minimum | Deposit < min_deposit_ngn | User must transfer sufficient amount |
| FX failure | No liquidity or conversion error | Contact support |
| Invalid address | Destination address invalid | Correct address in new onramp |
| On-chain error | Gas failure or network issue | May be retried by operations |
deposit.failed
FLAGGED
Held for manual review ⚠️ Deposit is frozen pending operations review. Not automatically processed. Common reasons:| Reason | Description | Resolution Time |
|---|---|---|
| Late deposit | Deposit after onramp/rate expiry | 1-2 business days |
| Limit exceeded | Per-onramp, merchant, or system limit | 1-2 business days or next day |
| Risk trigger | Unusual pattern or address flagged | 2-5 business days |
| Compliance | KYC/AML concern | Variable |
deposit.flagged
REVERSED
Bank reversed the original transfer Rare but possible: The sending bank clawed back the NGN transfer. Impact:- If payout already occurred, Daya absorbs the loss (v0.1)
- Merchant not charged back in v0.1
- May affect future risk scoring
deposit.reversed (future)
Terminal vs Non-Terminal States
Non-Terminal (In Progress)
Deposit is still being processed:PENDING_FXPENDING_WITHDRAWAL
Terminal (Final)
Deposit has reached end state:SETTLED(success)FAILED(error)FLAGGED(review)REVERSED(clawback)
Handling Each Status
- PENDING_FX
- PENDING_WITHDRAWAL
- SETTLED
- FAILED
- FLAGGED
- REVERSED
User message: “Processing your deposit…”Action: Show loading indicator, monitor for updates
Common Transitions
Happy path: Auto-withdraw
Happy path: Auto-withdraw
Happy path: Merchant balance
Happy path: Merchant balance
Late deposit
Late deposit
Limit exceeded
Limit exceeded
FX failure
FX failure
Best Practices
1
Use webhooks for status changes
Don’t poll. Set up webhooks for real-time updates.
2
Handle all terminal states
Your UI must gracefully handle
SETTLED, FAILED, FLAGGED, and REVERSED.3
Show clear error messages
For
FAILED and FLAGGED, explain what happened and what the user should do.4
Display tx_hash for settled deposits
Link to block explorer so users can verify on-chain.
5
Implement timeout alerts
If deposit stays in
PENDING_WITHDRAWAL > 10 minutes, alert your operations team.