Skip to main content

Overview

Permanent Virtual Accounts are long-lived NGN virtual bank accounts designed for customers who deposit regularly. Unlike temporary accounts, they do not expire and can receive multiple deposits over time. Permanent onramps support ONCHAIN and INTERNAL_BALANCE settlement — each deposit is automatically converted at the current market rate and settled to the configured destination.

When to Use

Recurring Deposits

Customers who fund accounts weekly or monthly

Lower Friction

No need to generate new virtual accounts for each transfer
Avoid permanent virtual accounts for one-time or time‑sensitive transactions that require fixed FX rates.

Key Characteristics

PropertyValueMeaning
ExpiryNoneVirtual account never expires
FX behaviorCurrent rateUses market rate at settlement time
ReuseYesSame VA for all deposits
Rate guaranteeNoRates may vary between deposits
SettlementONCHAIN or INTERNAL_BALANCESame modes as temporary onramps
AssetUSDCOnly supported asset in v1
Deposits do not use a firm quote. Each deposit converts at the current rate when processed.

Customer & Verification

Permanent onramps require customer verification (BVN + face matching) before a virtual account can be provisioned.

New Customer Flow

When creating a permanent onramp with a new customer (customer.email):
  1. Provide customer.email and customer.verification (both bvn and image_url)
  2. The system creates or finds the customer, runs BVN + face verification
  3. On success, provisions a permanent virtual account

Existing Customer Flow

When using an existing customer (customer.customer_id):
  • Already verified: Proceeds directly to create/update the permanent onramp
  • Not verified + verification data provided: Runs verification first, then proceeds
  • Not verified + no verification data: Returns an error
Verification records are persisted even on failure, creating an audit trail of all attempts.

Settlement Behavior

Permanent virtual accounts settle via ONCHAIN or INTERNAL_BALANCE mode.
{
  "settlement": {
    "mode": "ONCHAIN",
    "asset": "USDC",
    "chain": "BASE",
    "destination_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
  }
}
Settlement can be updated. Calling the create onramp endpoint again for the same customer updates the settlement configuration (chain, destination address) without creating a new virtual account. The previous settlement is deactivated and the new one becomes active.
See Supported Chains for available networks.

Comparison with Temporary Virtual Accounts

FeaturePermanent VATemporary VA
ExpiryNever25 minutes
FX behaviorFloatingLocked
ReuseYesNever
Settlement modeONCHAIN or INTERNAL_BALANCEONCHAIN or INTERNAL_BALANCE
Customer verificationRequiredNot required
Best forRecurring depositsOne‑time transactions

Limits

  • Per-deposit maximum: $1,000
  • Per-merchant daily limit: $10,000

Disabling Permanent VAs

Permanent virtual accounts can be disabled by Daya support when:
  • A customer account is closed
  • Suspicious activity is detected
  • The merchant requests deactivation

Next Steps

Create Onramp API

Full API reference for creating permanent onramps

Customer API

Pre-create and manage customers