Overview
All Daya API requests require authentication using API keys. Each key is tied to a specific merchant and environment (Sandbox or Production)API Keys
Generating Keys
- Sign up at dashboard.daya.xyz
- Navigate to API Keys
- Generate separate keys for Sandbox and Production
Key Types
| Environment | Purpose | Base URL |
|---|---|---|
| Sandbox | Testing with fake funds | https://sandbox-api.daya.co |
| Production | Live transactions with real money | https://api.daya.co |
Sandbox and Production environments are completely isolated. Data and keys do not cross environments.
Making Authenticated Requests
Include your API key in theAuthorization header using Bearer authentication:
Environment Isolation
- Sandbox
- Production
For: Integration testing, developmentCharacteristics:
- Separate API keys from production
- Simulated NGN deposits
- Testnet USDC/USDT (no real value)
- Same API surface as production
- No KYB required
Security Best Practices
Store keys securely
Store keys securely
- Use environment variables or secret management systems (AWS Secrets Manager, HashiCorp Vault)
- Never hardcode keys in source code
- Never commit keys to Git repositories
.env
Rotate keys regularly
Rotate keys regularly
Rotate API keys every 90 days or immediately if compromised:
- Generate new key in dashboard
- Update your application configuration
- Verify new key works
- Delete old key
Implement rate limiting
Implement rate limiting
Implement client-side rate limiting to avoid hitting API limits:
- 100 requests per minute per key
- 1,000 onramp creations per day (see Limits)
Error Responses
401 Unauthorized
Missing or invalid API key:- Missing
Authorizationheader - Malformed header (e.g., missing “Bearer” prefix)
- Invalid or revoked API key
- Using sandbox key with production URL (or vice versa)
403 Forbidden
Merchant account frozen or suspended:- Exceeded onramp creation limit (1,000/day)
- Risk or compliance review triggered
- Manual suspension by operations
If your merchant account is frozen, new onramps, FX conversions, and withdrawals are blocked. Contact support for resolution.