Overview
Throwaway Merchant Balance onramps create short-lived NGN virtual accounts (25-minute TTL) that convert deposits to USD and credit your merchant’s internal Daya balance instead of sending funds on-chain immediately.This type is ideal for aggregating deposits before making batch withdrawals to reduce on-chain fees.
Use Cases
Batch Withdrawals
Aggregate multiple small deposits before withdrawing
Reduced Gas Fees
Make fewer, larger on-chain transactions
Flexible Timing
Withdraw later when gas fees are lower
Internal Accounting
Track balances before external settlement
Characteristics
| Property | Value | Description |
|---|---|---|
| TTL | 25 minutes | Virtual account expires after 25 minutes |
| FX Rate | Locked to rate_id | Guaranteed rate within validity window |
| VA Reuse | No | VA number not reused for 365 days |
| Rate Guarantee | Yes | Firm quote honored |
| Settlement | MERCHANT_BALANCE | Credited to internal USD balance |
| Destination | N/A | No on-chain address needed |
FX Behavior
Similar to Type B1 (Auto-Withdraw), the onramp locks to a specificrate_id:
Unlike auto-withdraw, settlement is instant (no on-chain wait time). Funds are immediately available in your Daya balance.
Settlement Configuration
No destination address required:Creating a Throwaway Merchant Balance Onramp
Step 1: Get Rate
Step 2: Create Onramp
User Experience
Display to users:Complete Your Payment
Guaranteed rate: 1 USDC = 1545.50 NGN
Transfer NGN to:
| Bank: | Wema Bank |
| Account Number: | 1122334455 |
| Account Name: | Daya - [email protected] |
| Reference: | DAYA-7K3M5N8Q |
⏰ Complete within 25 minutes
Funds will be credited to your account balance instantly
Deposit Flow
Happy path:1
User transfers NGN
User sends NGN to virtual account within 25 minutes
2
Deposit detected
Status:
PENDING_FXWebhook: deposit.created3
FX executed
NGN converted to USD at locked rateUSD credited to merchant’s internal balanceStatus:
SETTLED (immediately—no on-chain wait)Webhook: deposit.settledThe deposit is
SETTLED as soon as FX executes and balance is credited. No pending withdrawal state.Lifecycle
Same as Type B1, but deposits settle faster because no on-chain confirmation is needed.Merchant Balance Management
Checking Balance
Query your merchant balance:Withdrawing from Balance
Initiate a withdrawal from your balance:Withdrawal APIs are covered in the merchant balance management documentation (future release).
When to Use
- ✅ Use Merchant Balance When
- ❌ Avoid When
- Processing many small deposits (< $10 each)
- Want to minimize on-chain fees
- Need flexibility in withdrawal timing
- Want to aggregate before withdrawing
- Building internal accounting before external settlement
- Withdrawing during low gas fee periods
Comparison with Auto-Withdraw
| Feature | Merchant Balance | Auto-Withdraw |
|---|---|---|
| Settlement speed | 1-2 mins | 2-5 mins |
| On-chain tx | None (until withdrawal) | Immediate |
| Gas fees | Batch-optimized | Per-deposit |
| Destination | Later (flexible) | Fixed at creation |
| Status flow | PENDING_FX → SETTLED | PENDING_FX → PENDING_WITHDRAWAL → SETTLED |
| Use case | Aggregation | Direct payment |
Gas Fee Savings Example
Scenario: 100 users each deposit $5| Approach | On-chain Txs | Gas Cost (Est.) |
|---|---|---|
| Auto-Withdraw | 100 txs | 0.50) |
| Merchant Balance | 1 tx (batch withdrawal) | $0.50 |
Late Deposit Handling
Same as Type B1:- Deposits after 25-minute expiry are
FLAGGED - Deposits after
rate_idexpiry areFLAGGED - Manual operations review required for flagged deposits
Limits
Subject to standard limits:- Per-onramp: Max $1,000 per deposit
- Per-merchant daily: Max $10,000
- System-wide daily: Max $100,000
Best Practices
Set withdrawal thresholds
Set withdrawal thresholds
Withdraw from balance when it reaches a certain threshold (e.g., $1,000) to optimize gas fees.
Monitor balance alerts
Monitor balance alerts
Set up alerts when balance exceeds thresholds or is low.
Withdraw during low gas
Withdraw during low gas
Schedule withdrawals during off-peak hours when gas fees are lower.
Track internal accounting
Track internal accounting
Maintain records of which deposits contribute to your balance for reconciliation.
Use for high-volume apps
Use for high-volume apps
Apps processing 100+ deposits/day benefit most from this mode.
Accounting & Reconciliation
Merchant balance uses double-entry ledger accounting: When deposit settles:Ledger details are internal but ensure atomic operations and prevent double-spending.
Error Scenarios
- Insufficient Balance
- Withdrawal Rejected
Scenario: Attempting to withdraw more than availableError: