Skip to main content

Prerequisites

1

Get API keys

Sign up at dashboard.daya.co and generate sandbox API keys.
2

Create or choose a customer

Funding accounts are created for existing customers. Create one with POST /v1/customers or use a customer you already have.
3

Verify connectivity

curl https://api.sandbox.daya.co/health

Pick the receive flow you want to test:

Create an onramp

Create a temporary onramp to accept NGN and settle to your Daya balance. Daya returns bank account details your customer can pay into.
curl --request POST \
  --url https://api.sandbox.daya.co/v1/funding-accounts \
  --header 'X-Api-Key: YOUR_SANDBOX_API_KEY' \
  --header 'X-Idempotency-Key: ngn-onramp-001' \
  --header 'Content-Type: application/json' \
  --data '{
    "type": "TEMPORARY",
    "rail": "NGN_VIRTUAL_ACCOUNT",
    "customer": {
      "customer_id": "650e8400-e29b-41d4-a716-446655440000"
    },
    "currency": "NGN",
    "amount": 50000,
    "settlement_destination": {
      "type": "INTERNAL_BALANCE"
    }
  }'
Example response:
{
  "object": "funding_account",
  "id": "750e8400-e29b-41d4-a716-446655440100",
  "type": "TEMPORARY",
  "status": "ACTIVE",
  "rail": "NGN_VIRTUAL_ACCOUNT",
  "customer_id": "650e8400-e29b-41d4-a716-446655440000",
  "currency": "NGN",
  "amount": 50000,
  "settlement_destination": {
    "type": "INTERNAL_BALANCE"
  },
  "instructions": [
    {
      "type": "NGN_VIRTUAL_ACCOUNT",
      "status": "ACTIVE",
      "bank_name": "Wema Bank",
      "bank_code": "035",
      "account_number": "0690000031",
      "account_name": "Daya - Customer",
      "currency": "NGN"
    }
  ],
  "expires_at": "2026-01-14T15:25:12Z"
}
Show the instructions bank details to your customer. When the customer pays, reconcile deposits with /v1/deposits and match rows by funding_account_id:
curl --request GET \
  --url 'https://api.sandbox.daya.co/v1/deposits' \
  --header 'X-Api-Key: YOUR_SANDBOX_API_KEY'

Track with Webhooks

Subscribe to webhook events so your system updates without polling.
EventUse it for
funding_account.activeShow payment details to the customer
funding_account.failedStop the flow and ask the customer to retry
deposit.receivedMark incoming funds as detected
deposit.processingSettlement has started
deposit.completedSettlement reached its destination
deposit.requires_reviewThe deposit needs review before continuing
deposit.failedThe deposit failed

Next Steps

Funding Accounts

Learn the receive-money model.

Create Funding Account

See every request field.

Deposits API

Reconcile incoming money.