Skip to main content

Overview

Daya enforces multiple layers of limits to manage risk, ensure liquidity, and comply with regulations. Understanding these limits helps you design resilient integrations.

Volume Limits

Hierarchy

Limits are enforced at three levels:

Per-Onramp Limit

Max: $1,000 USD equivalent per onramp
  • Applies to each individual onramp
  • Calculated using current exchange rate
  • Enforced before FX execution
What happens when exceeded:
  • Deposits beyond limit are FLAGGED
  • Require manual operations review
  • Not automatically processed
Example:
Onramp created for ₦1,545,000 (~$1,000)
Deposit 1: ₦1,000,000 → SETTLED ✅
Deposit 2: ₦600,000 → FLAGGED ❌ (exceeds $1,000 total)
For throwaway onramps, typically only one deposit is expected. Multiple deposits trigger review.

Per-Merchant Daily Limit

Max: $10,000 USD equivalent per 24-hour rolling window
  • Applies to all deposits across all onramps for a merchant
  • Rolling window (not calendar day)
  • Reset 24 hours after first deposit
What happens when exceeded:
  • New deposits are FLAGGED
  • Onramp creation may be blocked
  • Webhook: deposit.flagged
Example:
Day 1, 10:00: Deposit $5,000 → SETTLED
Day 1, 14:00: Deposit $4,000 → SETTLED
Day 1, 16:00: Deposit $2,000 → FLAGGED (exceeds $10,000)
Day 2, 10:01: First $5,000 deposit drops off → $4,000 available

System-Wide Daily Limit

Max: $100,000 USD equivalent per 24-hour rolling window
  • Applies across all merchants on Daya
  • Protects treasury liquidity
  • Rarely hit under normal operation
What happens when exceeded:
  • New deposits may be delayed or flagged
  • Onramp creation temporarily disabled (system-wide)
  • Daya operations notified immediately
System-wide limits are shared across all merchants. During high-volume periods, your deposits may be affected even if you’re under your merchant limit.

Limit Enforcement

Limits are checked at multiple stages:
StageChecksAction if Exceeded
Onramp creationMerchant daily onramp countBlock creation, freeze merchant
Deposit creationWithin onramp validity windowFlag deposit
FX executionPer-onramp, per-merchant, system-wideFlag deposit, no FX
WithdrawalRisk engine policiesFlag or reject

Onramp Creation Limits

Max: 1,000 onramps per merchant per day
  • Prevents abuse and DoS attacks
  • Applies to both throwaway and permanent onramps
  • Automatically enforced
What happens when exceeded:
  • POST /v1/onramp returns 429 error
  • Merchant account automatically frozen
  • Email sent to [email protected]
  • Manual review required to unfreeze
Response:
{
  "error": {
    "code": "onramp_creation_limit_exceeded",
    "message": "Merchant has exceeded daily onramp creation limit (1,000/day)",
    "details": "Your account has been temporarily frozen. Contact [email protected]"
  }
}
Design your integration to reuse permanent VAs for repeat users instead of creating throwaway onramps for each transaction.

Risk Engine

All on-chain withdrawals pass through a risk engine before broadcasting. The risk engine evaluates:

Risk Factors

  • Per-onramp limit
  • Per-merchant daily limit
  • System-wide daily limit
  • Deposits per hour from same user
  • Deposits to same destination address
  • Frequency of onramp creation
  • Destination address reputation (future: Chainalysis)
  • Known bad actors list
  • Sanctions screening
  • Unusual deposit amounts
  • Geographic anomalies
  • Timing patterns
  • Merchant KYB status
  • Historical reversal rate
  • Compliance flags

Risk Outcomes

OutcomeDescriptionNext Steps
APPROVEWithdrawal proceedsTransaction broadcast to chain
FLAGHeld for manual reviewDeposit status → FLAGGED
REJECTPermanently rejectedDeposit status → FAILED
Risk engine decisions are logged with full context for forensics and audit.

Merchant Freeze

Merchants can be frozen (manually or automatically) for:
TriggerAuto-Freeze?Resolution
Exceeded onramp creation limit✅ YesContact support
Risk investigation❌ ManualCompliance review
Failed KYB❌ ManualComplete KYB
Compliance issue❌ ManualCase-by-case
Impact of freeze:
  • All new onramp creation blocked
  • Existing onramps may be disabled
  • No FX execution or withdrawals
  • Webhook: merchant.frozen (future)
To unfreeze:
  1. Contact [email protected]
  2. Provide context/explanation
  3. Operations reviews and decides
  4. Manual unfreeze if approved

Handling Limit Errors

Scenario: Single deposit exceeds $1,000Error: Deposit status → FLAGGEDAction:
  • Inform user their deposit is under review
  • Contact support if urgent
  • Consider splitting into multiple smaller deposits

Limit Increase Requests

To request higher limits:
  1. Document your use case
    • Expected volume
    • Business model
    • User demographics
  2. Provide historical data
    • Past transaction volumes
    • Average transaction size
    • Reversal rates
  3. Submit via support
Typical approval time: 3-5 business days
Limit increases require KYB completion and compliance approval.

Monitoring Your Limits

Track your usage to avoid hitting limits:
// Check current usage
const response = await fetch('https://api.daya.xyz/v1/merchant/limits', {
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});

const limits = await response.json();
console.log(limits);
Response:
{
  "merchant_id": "merch_abc123",
  "daily_volume": {
    "used": "8500.00",
    "limit": "10000.00",
    "available": "1500.00",
    "reset_at": "2026-01-15T10:00:00Z"
  },
  "onramp_creation": {
    "used": 47,
    "limit": 1000,
    "available": 953,
    "reset_at": "2026-01-15T00:00:00Z"
  }
}
Set up alerts when usage reaches 80% of limits to avoid surprises.

Best Practices

1

Monitor usage proactively

Check limits before creating onramps or processing deposits.
2

Use permanent VAs for repeat users

Reduce onramp creation count by reusing VAs.
3

Implement graceful degradation

When limits are approached, inform users of delays or direct to alternatives.
4

Request limit increases early

Don’t wait until you hit limits. Request increases when you reach 70% usage consistently.
5

Design for peak volume

Consider your busiest days when planning capacity.

Next Steps