Create Funding Account
Creates a funding account and sets up payment details. settlement_destination.type=CUSTOMER_NGN_BALANCE is generally available for permanent funding accounts: permanent NGN virtual-account deposits are retained for that customer, while supported USDC/USDT deposits on any deposit-enabled chain are automatically converted into that customer's NGN balance. NGN_BALANCE retains NGN at merchant level, and INTERNAL_BALANCE preserves the existing automatic settlement into the merchant balance. Read customer balances with GET /v1/customers/{id}/balances and create an NGN bank transfer with debit_scope=CUSTOMER, debit_currency=NGN, and on_behalf_of.customer_id to pay from that balance. Provider-backed instructions include provider_availability, which reports each provider's current funding-account service state. Permanent NGN creation can continue through Paystack when Flutterwave is UNAVAILABLE and the customer has verified bank details; the response still includes the Flutterwave instruction with provider_availability.status set to UNAVAILABLE. The endpoint returns 503 PROVIDER_UNAVAILABLE only when no configured permanent NGN provider can accept the request, or when the single provider required for another rail is unavailable. Include developer_fee.percentage to keep 0% to 50% of each received deposit; deposit responses and webhooks show the developer fee and customer amount separately from Daya fees. Native SOL uses a PERMANENT CRYPTO_ADDRESS account on SOLANA with INTERNAL_BALANCE settlement and no developer fee. Requires an idempotency key in the X-Idempotency-Key header.
Headers
Idempotency key for request deduplication
Request body
Example request
{
"amount": 50000,
"asset": "USDC",
"chain": "BASE",
"currency": "NGN",
"customer": {
"customer_id": "650e8400-e29b-41d4-a716-446655440000"
},
"developer_fee": {
"percentage": "1.5"
},
"rail": "NGN_VIRTUAL_ACCOUNT",
"settlement_destination": {
"destination_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"destination_asset": "USDC",
"destination_bank": {
"account_number": "0123456789",
"bank_code": "058"
},
"destination_chain": "BASE",
"rate_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "INTERNAL_BALANCE"
},
"type": "TEMPORARY"
}Response
Returned when an existing permanent funding account is reused
Example response
{
"amount": "50000.75",
"asset": "USDC",
"chain": "BASE",
"created_at": "2026-01-05T15:04:05Z",
"currency": "NGN",
"customer_id": "650e8400-e29b-41d4-a716-446655440000",
"developer_fee": {
"percentage": "1.5"
},
"disabled_at": "2026-01-05T16:04:05Z",
"expires_at": "2026-01-05T16:04:05Z",
"failure_code": "PROVISIONING_FAILED",
"failure_message": "virtual account provisioning failed",
"id": "750e8400-e29b-41d4-a716-446655440000",
"instructions": [
{
"account_name": "Daya-John Doe",
"account_number": "1234567890",
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"bank_code": "035",
"bank_name": "Wema Bank",
"chain": "BASE",
"currency": "NGN",
"expires_at": "2026-01-05T16:04:05Z",
"failure": {
"code": "ACCOUNT_NAME_MISMATCH",
"message": "The bank account name does not match the customer's verified identity."
},
"provider": "FLUTTERWAVE",
"provider_availability": {
"message": "This provider is experiencing funding-account delays.",
"status": "DEGRADED"
},
"status": "ACTIVE",
"type": "NGN_VIRTUAL_ACCOUNT"
}
],
"object": "funding_account",
"rail": "NGN_VIRTUAL_ACCOUNT",
"settlement_destination": {
"destination_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"destination_asset": "USDC",
"destination_bank": {
"account_name": "Jane Doe",
"account_number": "0123456789",
"bank_code": "058"
},
"destination_chain": "BASE",
"destination_currency": "NGN",
"expires_at": "2026-01-05T16:04:05Z",
"rate_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "INTERNAL_BALANCE"
},
"status": "ACTIVE",
"type": "TEMPORARY",
"updated_at": "2026-01-05T15:04:05Z"
}Changes
No recorded changes to this endpoint across all 1 revision of this API.