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
Key Characteristics
| Property | Value | Meaning |
|---|---|---|
| Expiry | None | Virtual account never expires |
| FX behavior | Current rate | Uses market rate at settlement time |
| Reuse | Yes | Same VA for all deposits |
| Rate guarantee | No | Rates may vary between deposits |
| Settlement | ONCHAIN or INTERNAL_BALANCE | Same modes as temporary onramps |
| Asset | USDC | Only supported asset in v1 |
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):
- Provide
customer.emailandcustomer.verification(bothbvnandimage_url) - The system creates or finds the customer, runs BVN + face verification
- 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 viaONCHAIN or INTERNAL_BALANCE mode.
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.
Comparison with Temporary Virtual Accounts
| Feature | Permanent VA | Temporary VA |
|---|---|---|
| Expiry | Never | 25 minutes |
| FX behavior | Floating | Locked |
| Reuse | Yes | Never |
| Settlement mode | ONCHAIN or INTERNAL_BALANCE | ONCHAIN or INTERNAL_BALANCE |
| Customer verification | Required | Not required |
| Best for | Recurring deposits | One‑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