Get Started
This guide walks you through creating your first onramp in Sandbox, from fetching rates to receiving settlement webhooks.1
Get API Keys
Sign up at dashboard.daya.io and generate Sandbox API keys
2
Fetch Current Rates
Get a firm FX quote with
GET /v1/rates3
Create an Onramp
Provision an ephemeral VA with
POST /v1/onramp4
Simulate a Deposit
(Sandbox only) Trigger a test NGN deposit
5
Receive Webhook
Get notified when the deposit settles
Prerequisites
1
Get API Keys
Sign up at dashboard.daya.xyz and generate sandbox API keys.You’ll receive:
- Sandbox API Key: For testing
- Production API Key: For live transactions (after KYB approval)
2
Install HTTP Client
You can use any HTTP client. Examples below use cURL.
Step 1: Get Exchange Rate
Request a firm FX quote:The
rate_id is valid for ~30 minutes. Save it for the next step.Step 2: Create Onramp
Create an ephemeral onramp with auto-withdraw:Step 3: Display Bank Details to User
Show your user the bank transfer details:Complete Your Payment
Transfer NGN to this account:
| Bank: | Wema Bank |
| Account Number: | 9876543210 |
| Account Name: | Daya - [email protected] |
| Reference: | DAYA-3J5K8N2Q |
⏰ Complete within 25 minutes
In sandbox, simulate deposits using the test endpoint or wait for auto-simulation.
Step 4: Monitor Deposit Status
Poll for deposit status or set up webhooks:Step 5: Set Up Webhooks (Recommended)
Instead of polling, receive real-time updates:- Configure webhook URL in your dashboard
- Listen for
deposit.settledevents:
Common Issues
rate_id expired error
rate_id expired error
The
rate_id is only valid for ~30 minutes. Request a fresh rate before creating each onramp.Deposit flagged after transfer
Deposit flagged after transfer
Deposits after the 25-minute window are flagged. Ensure users complete transfers quickly.
Invalid destination address
Invalid destination address
Verify the address is valid for the specified chain (e.g., BASE, Ethereum mainnet).