Overview
A funding account is the API resource that powers onramps and offramps. It gives a customer either an NGN virtual account or a crypto address, and lets you control where the money settles after it arrives. Funding accounts are scoped to one customer and one rail:What You Can Build
Use funding accounts to create the receive flow you need:
For example, if you want to give a customer a reusable wallet address to collect USDC and keep the funds in your Daya balance, create a
PERMANENT crypto funding account with settlement_destination.type: INTERNAL_BALANCE.
Reusable crypto address to Daya balance
instructions.
For NGN, instructions contains the bank account details:
asset identifies the stablecoin, chain identifies the network, and instructions contains the wallet address:
The product concepts are still onramps and offramps. New integrations create both with
/v1/funding-accounts. The Legacy API section lists older /v1/onramps and /v1/offramps routes for existing integrations.Account Types
Permanent NGN virtual accounts require the customer to have completed Tier 1 KYC.
Developer Fees
Developer fees let you keep a percentage of each deposit received through a funding account. Adddeveloper_fee.percentage when creating the funding account.
Use a decimal string from 0 to 50. Omit developer_fee to use 0%.
developer_fee.percentage uses percentage values, not basis points. For example, 0.5 means 0.5%, 2 means 2%, and 50 means 50%. This differs from rate fee_bps, where 50 means 0.5%.
The percentage is stored on the funding account and applies to every deposit received through that account. Funding account responses include developer_fee.percentage. Deposit responses and deposit webhooks include developer_fee and customer_amount after Daya calculates the split, so you can reconcile your fee separately from Daya fees.
The developer fee is deducted before the final customer amount is calculated. It is not added as a separate charge. Use developer_fee.amount and developer_fee.currency to track the fee your merchant account kept, and use customer_amount as the amount left for the customer.
Flat developer fees, such as NGN 500 or $1 per transaction, are not currently supported through developer_fee.
Settlement Destinations
Settlement destination controls where received funds are delivered after the funding account receives money.
For
NGN_PAYOUT, fetch supported banks with GET /v1/banks, verify the account with POST /v1/banks/resolve, then send the verified destination_bank.account_number and destination_bank.bank_code.
Lifecycle
Funding accounts move through these statuses:
Permanent active funding accounts can rotate settlement destination with
PATCH /v1/funding-accounts/{id}/settlement-destination. Rotation does not create new payment details.
Webhooks
Funding account setup emits:
The webhook
data object is the same public funding account response returned by the API.
Deposits from Funding Accounts
When money arrives through a funding account, Daya creates a deposit. Deposit API responses and deposit webhook payloads includefunding_account_id so you can connect the incoming money back to the funding account the customer paid into.
Funding-account instruction IDs stay internal. Your integration should store the public funding_account_id and the deposit id.
If settlement requires background delivery work, track the merchant-facing lifecycle with
deposit.* events. Funding-account settlement does not emit separate payout webhooks.Next Steps
Create Funding Account
Create NGN or crypto payment details.
Onramps
Collect NGN from customers.
Offramps
Collect stablecoins from customers.
Webhook Events
Track funding account and deposit state changes in real time.