Skip to main content

What is an Onramp?

An onramp defines how funds flow from a Nigerian bank transfer to stablecoin settlement. Each onramp specifies:
  1. Who the customer is (identified by customer_id or email)
  2. How NGN is received (virtual account)
  3. When deposits are valid (lifetime and expiry)
  4. Which FX rate applies
  5. Where converted funds are settled

Onramp Properties

Every onramp includes the following core properties:
PropertyDescription
onramp_idUnique identifier
typePERMANENT or TEMPORARY
statusACTIVE, EXPIRED, DISABLED, FLAGGED
customer_idAssociated customer
rate_idAssociated FX quote (temporary only)
virtual_accountNGN bank account details
expires_atExpiry time (temporary only)
settlementHow converted funds are delivered
created_atCreation 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 API
  • customer.email – Auto-create a customer by email
Customers are scoped to your merchant account. A customer can have multiple onramps.

Onramp Types

Daya supports two categories of onramps.
FeatureTEMPORARYPERMANENT
PurposeOne-off, rate-locked transfersLong-lived customer deposit accounts
Rate LockingYes — rate_id requiredNo — rate applied at time of deposit
Virtual Account ExpiryYes (~20 min default)Never expires
Amount FieldOptional (for tracking)Not applicable
Customer VerificationNot requiredRequired (BVN + selfie image)
Settlement ModesONCHAIN, INTERNAL_BALANCEONCHAIN only
Settlement AssetsUSDC, USDTUSDC only
Settlement RotationNot supportedYes — 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: ONCHAIN only, asset must be USDC
  • Requires customer verification (BVN + selfie image)
  • Settlement configuration can be updated without creating a new virtual account
Best suited for repeat or recurring deposits.

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: ONCHAIN or INTERNAL_BALANCE
  • Settlement assets: USDC or USDT
  • Customer verification is not required
Best suited for one-time or time-sensitive deposits.

Rate Binding Semantics

Onramp TypeFX Behavior
TemporaryFirm rate locked at onramp creation
PermanentFloating rate at settlement time
If a deposit arrives after a bound rate_id expires, it does not settle automatically.

Settlement Modes

Settlement defines where stablecoins are sent after conversion.
ModeDescriptionRequired Fields
ONCHAINSettle stablecoins directly to an on-chain wallet addresschain, destination_address
INTERNAL_BALANCESettle to the merchant’s internal USD balance within DayaNone (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, TRON

Limits

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