Skip to main content

Overview

Older Daya integrations may still use onramp, offramp, payout, and legacy webhook names. Those routes remain available for existing integrations, but new receive-money work should use funding accounts and deposits. This guide shows what to use instead. No removal date has been published for the legacy routes. Daya will share sunset dates before any legacy route is removed.

What Changed

Older integration pathCurrent path
Create or list NGN onramps with /v1/onrampsCreate or list funding accounts with rail: NGN_VIRTUAL_ACCOUNT
Create or list crypto offramps with /v1/offrampsCreate or list funding accounts with rail: CRYPTO_ADDRESS, asset, and chain
Reconcile onramp or offramp deposits by legacy receive-flow IDsReconcile deposits with /v1/deposits and store funding_account_id
Track settlement delivery with payout eventsTrack receive-flow settlement with deposit.* events
Send money to a bank recipient through payout-style flowsCreate a transfer with /v1/transfers
Track old webhook names such as deposit.settledUse current names such as deposit.completed

Receive NGN

Use a funding account with rail: NGN_VIRTUAL_ACCOUNT when a customer needs NGN bank details.
{
  "type": "TEMPORARY",
  "rail": "NGN_VIRTUAL_ACCOUNT",
  "customer": {
    "customer_id": "650e8400-e29b-41d4-a716-446655440000"
  },
  "currency": "NGN",
  "amount": 50000,
  "settlement_destination": {
    "type": "INTERNAL_BALANCE"
  }
}
The response includes instructions with the bank account details to show your customer. When money arrives, the deposit response includes funding_account_id. Use these endpoints:
TaskEndpoint
Create NGN payment detailsPOST /v1/funding-accounts
List NGN payment detailsGET /v1/funding-accounts?rail=NGN_VIRTUAL_ACCOUNT
Reconcile received moneyGET /v1/deposits

Receive Crypto

Use a funding account with rail: CRYPTO_ADDRESS when a customer needs to send USDC or USDT to Daya.
{
  "type": "TEMPORARY",
  "rail": "CRYPTO_ADDRESS",
  "customer": {
    "customer_id": "650e8400-e29b-41d4-a716-446655440000"
  },
  "asset": "USDC",
  "chain": "BASE",
  "settlement_destination": {
    "type": "NGN_PAYOUT",
    "rate_id": "550e8400-e29b-41d4-a716-446655440000",
    "destination_bank": {
      "account_number": "0690000031",
      "bank_code": "044"
    }
  }
}
The response includes instructions with the wallet address. When crypto lands, the deposit response includes funding_account_id, asset, chain, and tx_hash. Use these endpoints:
TaskEndpoint
Create crypto payment detailsPOST /v1/funding-accounts
List crypto payment detailsGET /v1/funding-accounts?rail=CRYPTO_ADDRESS
Reconcile received moneyGET /v1/deposits

Payouts and Transfers

Payouts are legacy read-only records for settlement delivery from older receive-money flows. Do not build new send-money workflows on /v1/payouts. Use:
GoalCurrent API
Send NGN or USD to a bank accountPOST /v1/transfers
Save reusable bank or wallet detailsPOST /v1/recipients
Move collection balance to withdrawal balancePOST /v1/merchant/balance/transfer
Send stablecoins on-chain from withdrawal balancePOST /v1/merchant/balance/withdraw
If you only need to inspect older payout records, use the legacy List payouts and Get payout routes.

Webhook Names

Use the current webhook names when creating or updating webhook filters.
Older nameCurrent name
deposit.flaggeddeposit.requires_review
deposit.settleddeposit.completed
transfer.flaggedtransfer.requires_review
transfer.settledtransfer.completed
withdrawal.settledwithdrawal.completed
virtual_account.createdfunding_account.active
onramp.createdfunding_account.active
onramp.failedfunding_account.failed
Existing endpoints that receive all events may temporarily receive both the current and legacy event name for the same state change. See Legacy Webhooks for the compatibility list.

Migration Checklist

  1. Create new receive instructions with /v1/funding-accounts.
  2. Store funding_account_id from funding account responses and deposit payloads.
  3. Reconcile NGN and crypto payments from /v1/deposits.
  4. Replace payout-based send flows with /v1/transfers or merchant withdrawals.
  5. Update webhook filters and handlers to use current event names.
  6. Keep legacy route support only for existing customers or historical records.

Legacy Routes

The following routes remain documented for older integrations:
Legacy receive-flow routes are compatibility routes. Funding accounts, deposits, transfers, and withdrawals are the current integration path.