Skip to main content
curl --request POST \
  --url https://api.daya.co/v1/funding-accounts \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: YOUR_API_KEY' \
  --header 'X-Idempotency-Key: create-funding-account-001' \
  --data '{
    "type": "TEMPORARY",
    "rail": "NGN_VIRTUAL_ACCOUNT",
    "customer": {
      "customer_id": "650e8400-e29b-41d4-a716-446655440000"
    },
    "currency": "NGN",
    "amount": 50000,
    "settlement_destination": {
      "type": "ONCHAIN",
      "rate_id": "550e8400-e29b-41d4-a716-446655440000",
      "destination_asset": "USDC",
      "destination_chain": "BASE",
      "destination_address": "0x742d35cc6634c0532925a3b844bc9e7595f2bd18"
    }
  }'
curl --request POST \
  --url https://api.daya.co/v1/funding-accounts \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: YOUR_API_KEY' \
  --header 'X-Idempotency-Key: create-funding-account-001' \
  --data '{
    "type": "TEMPORARY",
    "rail": "NGN_VIRTUAL_ACCOUNT",
    "customer": {
      "customer_id": "650e8400-e29b-41d4-a716-446655440000"
    },
    "currency": "NGN",
    "amount": 50000,
    "settlement_destination": {
      "type": "ONCHAIN",
      "rate_id": "550e8400-e29b-41d4-a716-446655440000",
      "destination_asset": "USDC",
      "destination_chain": "BASE",
      "destination_address": "0x742d35cc6634c0532925a3b844bc9e7595f2bd18"
    }
  }'

Overview

Create a funding account for an existing customer. The response includes the public funding account object and the payment details the customer can use once setup succeeds.
customer.customer_id is required. This endpoint does not create customers inline.

Authentication

X-Api-Key
string
required
Your merchant API key
X-Idempotency-Key
string
required
Unique idempotency key for request deduplication

Request Body

type
string
required
Funding account type. Allowed values: TEMPORARY, PERMANENT.
rail
string
required
Receive rail. Allowed values: NGN_VIRTUAL_ACCOUNT, CRYPTO_ADDRESS.
customer
object
required
Existing customer details. Include customer_id. For permanent NGN virtual accounts, the customer must have completed Tier 1 KYC.
currency
string
Required for NGN_VIRTUAL_ACCOUNT. Must be NGN.
asset
string
Required for CRYPTO_ADDRESS. Supported values: USDC, USDT.
chain
string
Required for CRYPTO_ADDRESS.
amount
integer
Required for temporary NGN virtual accounts. Accepted only for TEMPORARY accounts.

settlement_destination

settlement_destination is a nested object. Do not send dotted keys such as settlement_destination.type.
FieldTypeRequired when
typestringAlways. Allowed values depend on the funding account rail and type; see the matrix below.
rate_idstringTemporary NGN_VIRTUAL_ACCOUNT accounts that settle through ONCHAIN, or temporary CRYPTO_ADDRESS accounts that settle through NGN_PAYOUT. Do not send it for INTERNAL_BALANCE or permanent accounts.
destination_assetstringrail is NGN_VIRTUAL_ACCOUNT and type is ONCHAIN. Supported values: USDC, USDT.
destination_chainstringrail is NGN_VIRTUAL_ACCOUNT and type is ONCHAIN.
destination_addressstringrail is NGN_VIRTUAL_ACCOUNT and type is ONCHAIN.
destination_bankobjectrail is CRYPTO_ADDRESS and type is NGN_PAYOUT. Fixed request shape: account_number, bank_code.

Allowed settlement destination types

railFunding account typeAllowed settlement_destination.type values
NGN_VIRTUAL_ACCOUNTTEMPORARYINTERNAL_BALANCE, ONCHAIN
NGN_VIRTUAL_ACCOUNTPERMANENTINTERNAL_BALANCE, ONCHAIN
CRYPTO_ADDRESSTEMPORARYNGN_PAYOUT
CRYPTO_ADDRESSPERMANENTINTERNAL_BALANCE, NGN_PAYOUT
Do not send NGN_PAYOUT for NGN_VIRTUAL_ACCOUNT funding accounts, and do not send ONCHAIN for CRYPTO_ADDRESS funding accounts.

destination_bank

FieldTypeRequired
account_numberstringYes
bank_codestringYes
Before sending destination_bank, fetch supported banks with GET /v1/banks, then verify the account with POST /v1/banks/resolve. Use the verified bank_code and account_number in the funding account request. Do not send account_name; Daya returns the resolved account name in the funding account response.

Settlement Destination Shapes

Internal balance (NGN virtual account or permanent crypto address)
{
  "settlement_destination": {
    "type": "INTERNAL_BALANCE"
  }
}
NGN virtual account to onchain settlement
{
  "settlement_destination": {
    "type": "ONCHAIN",
    "rate_id": "550e8400-e29b-41d4-a716-446655440000",
    "destination_asset": "USDC",
    "destination_chain": "BASE",
    "destination_address": "0x742d35cc6634c0532925a3b844bc9e7595f2bd18"
  }
}
Crypto address to NGN payout settlement
{
  "settlement_destination": {
    "type": "NGN_PAYOUT",
    "rate_id": "550e8400-e29b-41d4-a716-446655440000",
    "destination_bank": {
      "account_number": "0123456789",
      "bank_code": "058"
    }
  }
}
For NGN_PAYOUT, destination_bank has a fixed request shape: account_number and bank_code. Get the supported bank first, resolve the account, then send the verified details.

Request Examples

{
  "type": "TEMPORARY",
  "rail": "NGN_VIRTUAL_ACCOUNT",
  "customer": {
    "customer_id": "650e8400-e29b-41d4-a716-446655440000"
  },
  "currency": "NGN",
  "amount": 50000,
  "settlement_destination": {
    "type": "ONCHAIN",
    "rate_id": "550e8400-e29b-41d4-a716-446655440000",
    "destination_asset": "USDC",
    "destination_chain": "BASE",
    "destination_address": "0x742d35cc6634c0532925a3b844bc9e7595f2bd18"
  }
}

Response

Returns a funding_account object. For NGN funding accounts, the bank account the customer should pay into is returned in instructions.
NGN funding account response
{
  "object": "funding_account",
  "id": "750e8400-e29b-41d4-a716-446655440000",
  "type": "TEMPORARY",
  "status": "ACTIVE",
  "rail": "NGN_VIRTUAL_ACCOUNT",
  "customer_id": "650e8400-e29b-41d4-a716-446655440000",
  "currency": "NGN",
  "amount": 50000,
  "settlement_destination": {
    "type": "ONCHAIN",
    "rate_id": "550e8400-e29b-41d4-a716-446655440000",
    "destination_asset": "USDC",
    "destination_chain": "BASE",
    "destination_address": "0x742d35cc6634c0532925a3b844bc9e7595f2bd18"
  },
  "instructions": [
    {
      "type": "NGN_VIRTUAL_ACCOUNT",
      "status": "ACTIVE",
      "bank_name": "Wema Bank",
      "bank_code": "035",
      "account_number": "1234567890",
      "account_name": "Daya - Ada Lovelace",
      "currency": "NGN"
    }
  ],
  "created_at": "2026-01-05T15:04:05Z",
  "updated_at": "2026-01-05T15:04:10Z"
}
For crypto funding accounts, asset identifies the stablecoin the address should receive, chain identifies the network, and instructions contains the wallet address.