What is a Transfer?
A transfer is a merchant-initiated send of funds to a bank account or crypto address. Transfers support Nigerian Naira (NGN), US Dollar (USD), native SOL, and native BNB destinations.
Transfers are the API resource for sending money from a Daya withdrawal balance to an external bank account or crypto address. They emit
transfer.* webhooks.
Funding Transfers
Transfers are funded from a withdrawal balance. There are three ways to ensure the selected balance has funds:- From funding account and USD virtual account deposits — these land in your collection balance. Move them to the withdrawal balance via
POST /v1/merchant/balance/transfer. - Via merchant funding — send crypto or NGN directly to your merchant funding accounts. These go straight into a merchant withdrawal balance. NGN deposits convert to USD under
USD_BALANCEor remain NGN underNGN_BALANCE. - Via a customer NGN balance — permanent customer funding accounts using
CUSTOMER_NGN_BALANCEcredit a separate NGN balance for that customer. Create a customer-scoped NGN transfer to spend it.
Saved vs Inline Recipients
Transfers support two modes for specifying the destination:Saved recipients
Create a recipient once viaPOST /v1/recipients, then reference it by recipient_id in future transfers. This is ideal for recurring payments.
Inline recipients
Provide full destination details in thedestination field of the transfer request. The recipient is created implicitly. This is convenient for one-off payments.
Transfer Lifecycle
Webhook events expose the lifecycle in more detail than the external status field:
Use
/v1/transfers and transfer.* webhooks for merchant-created bank sends.NGN Transfers
When you create an NGN transfer:- The
amountis in Naira (e.g.50000.00) - Omit
debit_currencyto preserve the existing USD-funded flow, or setdebit_currency: NGNto spend retained NGN without transfer FX conversion. debit_scopedefaults toMERCHANT. Set it toCUSTOMERwithon_behalf_of.customer_idto debit that customer’s NGN balance.- The response
debit_amountis the total removed from the selected balance (principal plus fee) indebit_currency.feeis included in that total and does not reduce the recipientamount. - The
ratefield captures the exchange rate snapshot used - The recipient must receive at least NGN 100.
- If the recipient amount is below NGN 1,000, a flat NGN 20 fee applies.
- At NGN 1,000 or above, the configured percentage fee and NGN cap from
GET /v1/feesapply. - For USD-funded NGN transfers, the NGN fee is converted to USD. For NGN-funded transfers, it remains NGN. It does not reduce the recipient amount.
Balance selection
Customer-scoped transfers support NGN bank transfers only. The recipient must belong to the same customer, and the customer must have completed Tier 1 KYC.
See Limits for worked examples of the balance impact for default USD-funded and retained-NGN transfers.
USD Transfers
When you create a USD transfer:- The
amountis in USD (e.g.100.00) debit_currencyremainsUSD- The recipient’s customer must have completed tier 2 verification
- A minimum effective USD debit of $0.50 is enforced for USD transfers.
CRYPTO_ADDRESS. Use GET /v1/supported-chains to discover withdrawal-enabled asset and chain combinations.
Native SOL and BNB Transfers
For a native-asset transfer, setcurrency to SOL or BNB and use a matching CRYPTO_ADDRESS recipient. SOL requires the SOLANA chain and supports up to 9 decimal places. BNB requires the BSC chain and supports up to 8 decimal places.
Omit debit_currency; Daya debits the matching merchant SOL or BNB withdrawal balance. Native transfers have no transfer fee, but the requested amount must have an effective value of at least USD 0.50. Use GET /v1/supported-chains to verify the current environment’s availability.
Idempotency
POST /v1/transfers is idempotent. Include an Idempotency-Key header (or X-Idempotency-Key as a fallback) with a unique value to safely retry requests without creating duplicate transfers.
API Routes
Next Steps
Create Transfer
Send funds to a bank recipient
Create Recipient
Save a recipient for reuse
Merchant Balance
Check your available balance