What is an Onramp?
An onramp defines how funds flow from a Nigerian bank transfer to stablecoin settlement. Each onramp specifies:- Who the customer is (identified by
customer_idor email) - How NGN is received (virtual account)
- When deposits are valid (lifetime and expiry)
- Which FX rate applies
- Where converted funds are settled
Onramp Properties
Every onramp includes the following core properties:| Property | Description |
|---|---|
onramp_id | Unique identifier |
type | PERMANENT or TEMPORARY |
status | ACTIVE, EXPIRED, DISABLED, FLAGGED |
customer_id | Associated customer |
rate_id | Associated FX quote (temporary only) |
virtual_account | NGN bank account details |
expires_at | Expiry time (temporary only) |
settlement | How converted funds are delivered |
created_at | Creation timestamp |
Customers
Each onramp is associated with a customer. When creating an onramp, you provide either:customer.customer_id– Reference an existing customer created via the Customer APIcustomer.email– Auto-create a customer by email
Onramp Types
Daya supports two categories of onramps.| Feature | TEMPORARY | PERMANENT |
|---|---|---|
| Purpose | One-off, rate-locked transfers | Long-lived customer deposit accounts |
| Rate Locking | Yes — rate_id required | No — rate applied at time of deposit |
| Virtual Account Expiry | Yes (~20 min default) | Never expires |
| Amount Field | Optional (for tracking) | Not applicable |
| Customer Verification | Not required | Required (BVN + selfie image) |
| Settlement Modes | ONCHAIN, INTERNAL_BALANCE | ONCHAIN only |
| Settlement Assets | USDC, USDT | USDC only |
| Settlement Rotation | Not supported | Yes — can replace settlement destination |
Permanent Virtual Accounts
A permanent onramp uses a long-lived virtual account.- No expiry
- Can receive multiple deposits
- FX rate is determined at settlement time
- Settlement mode:
ONCHAINonly, asset must beUSDC - Requires customer verification (BVN + selfie image)
- Settlement configuration can be updated without creating a new virtual account
Temporary Virtual Accounts
A temporary onramp uses a short-lived virtual account.- ~20-minute validity window (default)
- Bound to a specific
rate_id(must reference a valid, unexpired BUY rate) - Virtual account is never reused
- Deposits after expiry are FLAGGED
- Settlement modes:
ONCHAINorINTERNAL_BALANCE - Settlement assets:
USDCorUSDT - Customer verification is not required
Rate Binding Semantics
| Onramp Type | FX Behavior |
|---|---|
| Temporary | Firm rate locked at onramp creation |
| Permanent | Floating rate at settlement time |
rate_id expires, it does not settle automatically.
Settlement Modes
Settlement defines where stablecoins are sent after conversion.| Mode | Description | Required Fields |
|---|---|---|
ONCHAIN | Settle stablecoins directly to an on-chain wallet address | chain, destination_address |
INTERNAL_BALANCE | Settle to the merchant’s internal USD balance within Daya | None (chain and address must be omitted) |
On-chain (ONCHAIN)
Stablecoins are sent to a blockchain address. Available for both temporary and permanent onramps.
Internal balance (INTERNAL_BALANCE)
Stablecoins are credited to your Daya balance for later withdrawal. Available for temporary onramps only.
Supported Settlement Chains (for ONCHAIN mode)
APTOS, BASE, CELO, ETHEREUM, POLYGON, SOLANA, TRONLimits
Each merchant can create up to 1,000 onramps per day. Exceeding this limit may temporarily restrict onramp creation.Next Steps
Deposits
Understand what happens when money arrives
Rates
Learn how FX quotes and settlement work
Create Onramp API
View the API reference