Create transfer
curl --request POST \
--url https://api.daya.co/v1/transfers \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-Api-Key: <x-api-key>' \
--data '
{
"currency": "<string>",
"debit_currency": "<string>",
"debit_scope": "<string>",
"amount": "<string>",
"reference": "<string>",
"recipient_id": "<string>",
"destination": {
"destination.type": "<string>",
"destination.crypto_address": {
"destination.crypto_address.asset": "<string>",
"destination.crypto_address.chain": "<string>",
"destination.crypto_address.address": "<string>"
},
"destination.bank_account": {
"destination.bank_account.account_number": "<string>",
"destination.bank_account.bank_code": "<string>",
"destination.bank_account.account_name": "<string>"
},
"destination.us_bank_account": {
"destination.us_bank_account.account_owner_name": "<string>",
"destination.us_bank_account.account_number": "<string>",
"destination.us_bank_account.routing_number": "<string>",
"destination.us_bank_account.bank_name": "<string>",
"destination.us_bank_account.account_type": "<string>",
"destination.us_bank_account.payout_scheme": "<string>",
"destination.us_bank_account.address": {}
},
"destination.swift_bank_account": {
"destination.swift_bank_account.account_owner_name": "<string>",
"destination.swift_bank_account.account_owner_type": "<string>",
"destination.swift_bank_account.account_country": "<string>",
"destination.swift_bank_account.iban": "<string>",
"destination.swift_bank_account.bic": "<string>",
"destination.swift_bank_account.bank_name": "<string>",
"destination.swift_bank_account.first_name": "<string>",
"destination.swift_bank_account.last_name": "<string>",
"destination.swift_bank_account.business_name": "<string>",
"destination.swift_bank_account.category": "<string>",
"destination.swift_bank_account.purpose_of_funds": [
{}
],
"destination.swift_bank_account.short_business_description": "<string>",
"destination.swift_bank_account.address": {},
"destination.swift_bank_account.bank_address": {}
}
},
"on_behalf_of": {
"on_behalf_of.customer_id": "<string>"
}
}
'import requests
url = "https://api.daya.co/v1/transfers"
payload = {
"currency": "<string>",
"debit_currency": "<string>",
"debit_scope": "<string>",
"amount": "<string>",
"reference": "<string>",
"recipient_id": "<string>",
"destination": {
"destination.type": "<string>",
"destination.crypto_address": {
"destination.crypto_address.asset": "<string>",
"destination.crypto_address.chain": "<string>",
"destination.crypto_address.address": "<string>"
},
"destination.bank_account": {
"destination.bank_account.account_number": "<string>",
"destination.bank_account.bank_code": "<string>",
"destination.bank_account.account_name": "<string>"
},
"destination.us_bank_account": {
"destination.us_bank_account.account_owner_name": "<string>",
"destination.us_bank_account.account_number": "<string>",
"destination.us_bank_account.routing_number": "<string>",
"destination.us_bank_account.bank_name": "<string>",
"destination.us_bank_account.account_type": "<string>",
"destination.us_bank_account.payout_scheme": "<string>",
"destination.us_bank_account.address": {}
},
"destination.swift_bank_account": {
"destination.swift_bank_account.account_owner_name": "<string>",
"destination.swift_bank_account.account_owner_type": "<string>",
"destination.swift_bank_account.account_country": "<string>",
"destination.swift_bank_account.iban": "<string>",
"destination.swift_bank_account.bic": "<string>",
"destination.swift_bank_account.bank_name": "<string>",
"destination.swift_bank_account.first_name": "<string>",
"destination.swift_bank_account.last_name": "<string>",
"destination.swift_bank_account.business_name": "<string>",
"destination.swift_bank_account.category": "<string>",
"destination.swift_bank_account.purpose_of_funds": [{}],
"destination.swift_bank_account.short_business_description": "<string>",
"destination.swift_bank_account.address": {},
"destination.swift_bank_account.bank_address": {}
}
},
"on_behalf_of": { "on_behalf_of.customer_id": "<string>" }
}
headers = {
"X-Api-Key": "<x-api-key>",
"Idempotency-Key": "<idempotency-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Api-Key': '<x-api-key>',
'Idempotency-Key': '<idempotency-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
currency: '<string>',
debit_currency: '<string>',
debit_scope: '<string>',
amount: '<string>',
reference: '<string>',
recipient_id: '<string>',
destination: {
'destination.type': '<string>',
'destination.crypto_address': {
'destination.crypto_address.asset': '<string>',
'destination.crypto_address.chain': '<string>',
'destination.crypto_address.address': '<string>'
},
'destination.bank_account': {
'destination.bank_account.account_number': '<string>',
'destination.bank_account.bank_code': '<string>',
'destination.bank_account.account_name': '<string>'
},
'destination.us_bank_account': {
'destination.us_bank_account.account_owner_name': '<string>',
'destination.us_bank_account.account_number': '<string>',
'destination.us_bank_account.routing_number': '<string>',
'destination.us_bank_account.bank_name': '<string>',
'destination.us_bank_account.account_type': '<string>',
'destination.us_bank_account.payout_scheme': '<string>',
'destination.us_bank_account.address': {}
},
'destination.swift_bank_account': {
'destination.swift_bank_account.account_owner_name': '<string>',
'destination.swift_bank_account.account_owner_type': '<string>',
'destination.swift_bank_account.account_country': '<string>',
'destination.swift_bank_account.iban': '<string>',
'destination.swift_bank_account.bic': '<string>',
'destination.swift_bank_account.bank_name': '<string>',
'destination.swift_bank_account.first_name': '<string>',
'destination.swift_bank_account.last_name': '<string>',
'destination.swift_bank_account.business_name': '<string>',
'destination.swift_bank_account.category': '<string>',
'destination.swift_bank_account.purpose_of_funds': [{}],
'destination.swift_bank_account.short_business_description': '<string>',
'destination.swift_bank_account.address': {},
'destination.swift_bank_account.bank_address': {}
}
},
on_behalf_of: {'on_behalf_of.customer_id': '<string>'}
})
};
fetch('https://api.daya.co/v1/transfers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.daya.co/v1/transfers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'currency' => '<string>',
'debit_currency' => '<string>',
'debit_scope' => '<string>',
'amount' => '<string>',
'reference' => '<string>',
'recipient_id' => '<string>',
'destination' => [
'destination.type' => '<string>',
'destination.crypto_address' => [
'destination.crypto_address.asset' => '<string>',
'destination.crypto_address.chain' => '<string>',
'destination.crypto_address.address' => '<string>'
],
'destination.bank_account' => [
'destination.bank_account.account_number' => '<string>',
'destination.bank_account.bank_code' => '<string>',
'destination.bank_account.account_name' => '<string>'
],
'destination.us_bank_account' => [
'destination.us_bank_account.account_owner_name' => '<string>',
'destination.us_bank_account.account_number' => '<string>',
'destination.us_bank_account.routing_number' => '<string>',
'destination.us_bank_account.bank_name' => '<string>',
'destination.us_bank_account.account_type' => '<string>',
'destination.us_bank_account.payout_scheme' => '<string>',
'destination.us_bank_account.address' => [
]
],
'destination.swift_bank_account' => [
'destination.swift_bank_account.account_owner_name' => '<string>',
'destination.swift_bank_account.account_owner_type' => '<string>',
'destination.swift_bank_account.account_country' => '<string>',
'destination.swift_bank_account.iban' => '<string>',
'destination.swift_bank_account.bic' => '<string>',
'destination.swift_bank_account.bank_name' => '<string>',
'destination.swift_bank_account.first_name' => '<string>',
'destination.swift_bank_account.last_name' => '<string>',
'destination.swift_bank_account.business_name' => '<string>',
'destination.swift_bank_account.category' => '<string>',
'destination.swift_bank_account.purpose_of_funds' => [
[
]
],
'destination.swift_bank_account.short_business_description' => '<string>',
'destination.swift_bank_account.address' => [
],
'destination.swift_bank_account.bank_address' => [
]
]
],
'on_behalf_of' => [
'on_behalf_of.customer_id' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"X-Api-Key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.daya.co/v1/transfers"
payload := strings.NewReader("{\n \"currency\": \"<string>\",\n \"debit_currency\": \"<string>\",\n \"debit_scope\": \"<string>\",\n \"amount\": \"<string>\",\n \"reference\": \"<string>\",\n \"recipient_id\": \"<string>\",\n \"destination\": {\n \"destination.type\": \"<string>\",\n \"destination.crypto_address\": {\n \"destination.crypto_address.asset\": \"<string>\",\n \"destination.crypto_address.chain\": \"<string>\",\n \"destination.crypto_address.address\": \"<string>\"\n },\n \"destination.bank_account\": {\n \"destination.bank_account.account_number\": \"<string>\",\n \"destination.bank_account.bank_code\": \"<string>\",\n \"destination.bank_account.account_name\": \"<string>\"\n },\n \"destination.us_bank_account\": {\n \"destination.us_bank_account.account_owner_name\": \"<string>\",\n \"destination.us_bank_account.account_number\": \"<string>\",\n \"destination.us_bank_account.routing_number\": \"<string>\",\n \"destination.us_bank_account.bank_name\": \"<string>\",\n \"destination.us_bank_account.account_type\": \"<string>\",\n \"destination.us_bank_account.payout_scheme\": \"<string>\",\n \"destination.us_bank_account.address\": {}\n },\n \"destination.swift_bank_account\": {\n \"destination.swift_bank_account.account_owner_name\": \"<string>\",\n \"destination.swift_bank_account.account_owner_type\": \"<string>\",\n \"destination.swift_bank_account.account_country\": \"<string>\",\n \"destination.swift_bank_account.iban\": \"<string>\",\n \"destination.swift_bank_account.bic\": \"<string>\",\n \"destination.swift_bank_account.bank_name\": \"<string>\",\n \"destination.swift_bank_account.first_name\": \"<string>\",\n \"destination.swift_bank_account.last_name\": \"<string>\",\n \"destination.swift_bank_account.business_name\": \"<string>\",\n \"destination.swift_bank_account.category\": \"<string>\",\n \"destination.swift_bank_account.purpose_of_funds\": [\n {}\n ],\n \"destination.swift_bank_account.short_business_description\": \"<string>\",\n \"destination.swift_bank_account.address\": {},\n \"destination.swift_bank_account.bank_address\": {}\n }\n },\n \"on_behalf_of\": {\n \"on_behalf_of.customer_id\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<x-api-key>")
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.daya.co/v1/transfers")
.header("X-Api-Key", "<x-api-key>")
.header("Idempotency-Key", "<idempotency-key>")
.header("Content-Type", "application/json")
.body("{\n \"currency\": \"<string>\",\n \"debit_currency\": \"<string>\",\n \"debit_scope\": \"<string>\",\n \"amount\": \"<string>\",\n \"reference\": \"<string>\",\n \"recipient_id\": \"<string>\",\n \"destination\": {\n \"destination.type\": \"<string>\",\n \"destination.crypto_address\": {\n \"destination.crypto_address.asset\": \"<string>\",\n \"destination.crypto_address.chain\": \"<string>\",\n \"destination.crypto_address.address\": \"<string>\"\n },\n \"destination.bank_account\": {\n \"destination.bank_account.account_number\": \"<string>\",\n \"destination.bank_account.bank_code\": \"<string>\",\n \"destination.bank_account.account_name\": \"<string>\"\n },\n \"destination.us_bank_account\": {\n \"destination.us_bank_account.account_owner_name\": \"<string>\",\n \"destination.us_bank_account.account_number\": \"<string>\",\n \"destination.us_bank_account.routing_number\": \"<string>\",\n \"destination.us_bank_account.bank_name\": \"<string>\",\n \"destination.us_bank_account.account_type\": \"<string>\",\n \"destination.us_bank_account.payout_scheme\": \"<string>\",\n \"destination.us_bank_account.address\": {}\n },\n \"destination.swift_bank_account\": {\n \"destination.swift_bank_account.account_owner_name\": \"<string>\",\n \"destination.swift_bank_account.account_owner_type\": \"<string>\",\n \"destination.swift_bank_account.account_country\": \"<string>\",\n \"destination.swift_bank_account.iban\": \"<string>\",\n \"destination.swift_bank_account.bic\": \"<string>\",\n \"destination.swift_bank_account.bank_name\": \"<string>\",\n \"destination.swift_bank_account.first_name\": \"<string>\",\n \"destination.swift_bank_account.last_name\": \"<string>\",\n \"destination.swift_bank_account.business_name\": \"<string>\",\n \"destination.swift_bank_account.category\": \"<string>\",\n \"destination.swift_bank_account.purpose_of_funds\": [\n {}\n ],\n \"destination.swift_bank_account.short_business_description\": \"<string>\",\n \"destination.swift_bank_account.address\": {},\n \"destination.swift_bank_account.bank_address\": {}\n }\n },\n \"on_behalf_of\": {\n \"on_behalf_of.customer_id\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.daya.co/v1/transfers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<x-api-key>'
request["Idempotency-Key"] = '<idempotency-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"currency\": \"<string>\",\n \"debit_currency\": \"<string>\",\n \"debit_scope\": \"<string>\",\n \"amount\": \"<string>\",\n \"reference\": \"<string>\",\n \"recipient_id\": \"<string>\",\n \"destination\": {\n \"destination.type\": \"<string>\",\n \"destination.crypto_address\": {\n \"destination.crypto_address.asset\": \"<string>\",\n \"destination.crypto_address.chain\": \"<string>\",\n \"destination.crypto_address.address\": \"<string>\"\n },\n \"destination.bank_account\": {\n \"destination.bank_account.account_number\": \"<string>\",\n \"destination.bank_account.bank_code\": \"<string>\",\n \"destination.bank_account.account_name\": \"<string>\"\n },\n \"destination.us_bank_account\": {\n \"destination.us_bank_account.account_owner_name\": \"<string>\",\n \"destination.us_bank_account.account_number\": \"<string>\",\n \"destination.us_bank_account.routing_number\": \"<string>\",\n \"destination.us_bank_account.bank_name\": \"<string>\",\n \"destination.us_bank_account.account_type\": \"<string>\",\n \"destination.us_bank_account.payout_scheme\": \"<string>\",\n \"destination.us_bank_account.address\": {}\n },\n \"destination.swift_bank_account\": {\n \"destination.swift_bank_account.account_owner_name\": \"<string>\",\n \"destination.swift_bank_account.account_owner_type\": \"<string>\",\n \"destination.swift_bank_account.account_country\": \"<string>\",\n \"destination.swift_bank_account.iban\": \"<string>\",\n \"destination.swift_bank_account.bic\": \"<string>\",\n \"destination.swift_bank_account.bank_name\": \"<string>\",\n \"destination.swift_bank_account.first_name\": \"<string>\",\n \"destination.swift_bank_account.last_name\": \"<string>\",\n \"destination.swift_bank_account.business_name\": \"<string>\",\n \"destination.swift_bank_account.category\": \"<string>\",\n \"destination.swift_bank_account.purpose_of_funds\": [\n {}\n ],\n \"destination.swift_bank_account.short_business_description\": \"<string>\",\n \"destination.swift_bank_account.address\": {},\n \"destination.swift_bank_account.bank_address\": {}\n }\n },\n \"on_behalf_of\": {\n \"on_behalf_of.customer_id\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "850e8400-e29b-41d4-a716-446655440000",
"reference": "txn_ngn_001",
"status": "PROCESSING",
"rail": "NGN_BANK",
"currency": "NGN",
"amount": "50000.00",
"debit_currency": "USD",
"debit_scope": "MERCHANT",
"debit_amount": "32.290323",
"fee": "0.032258",
"rate": {
"side": "SELL",
"value": "1550.00",
"captured_at": "2026-01-05T15:04:05Z"
},
"recipient": {
"id": "750e8400-e29b-41d4-a716-446655440000",
"type": "BANK_ACCOUNT",
"bank_account": {
"account_name": "John Doe",
"account_number_last4": "7890",
"bank_code": "044",
"bank_name": "Access Bank"
}
},
"on_behalf_of": null,
"created_at": "2026-01-05T15:04:05Z",
"settled_at": null
}
{
"id": "950e8400-e29b-41d4-a716-446655440000",
"reference": "txn_usd_001",
"status": "PROCESSING",
"rail": "USD_BANK",
"currency": "USD",
"amount": "100.00",
"debit_currency": "USD",
"debit_scope": "MERCHANT",
"debit_amount": "100.00",
"fee": "0.00",
"rate": null,
"recipient": {
"id": "860e8400-e29b-41d4-a716-446655440000",
"type": "US_BANK_ACCOUNT",
"us_bank_account": {
"account_owner_name": "Jane Smith",
"account_number_last4": "6789",
"bank_name": "Chase",
"account_type": "checking",
"payout_scheme": "ach"
}
},
"on_behalf_of": {
"customer_id": "650e8400-e29b-41d4-a716-446655440000"
},
"created_at": "2026-01-05T15:04:05Z",
"settled_at": null
}
Transfers
Create transfer
Create a merchant-initiated transfer
POST
/
v1
/
transfers
Create transfer
curl --request POST \
--url https://api.daya.co/v1/transfers \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-Api-Key: <x-api-key>' \
--data '
{
"currency": "<string>",
"debit_currency": "<string>",
"debit_scope": "<string>",
"amount": "<string>",
"reference": "<string>",
"recipient_id": "<string>",
"destination": {
"destination.type": "<string>",
"destination.crypto_address": {
"destination.crypto_address.asset": "<string>",
"destination.crypto_address.chain": "<string>",
"destination.crypto_address.address": "<string>"
},
"destination.bank_account": {
"destination.bank_account.account_number": "<string>",
"destination.bank_account.bank_code": "<string>",
"destination.bank_account.account_name": "<string>"
},
"destination.us_bank_account": {
"destination.us_bank_account.account_owner_name": "<string>",
"destination.us_bank_account.account_number": "<string>",
"destination.us_bank_account.routing_number": "<string>",
"destination.us_bank_account.bank_name": "<string>",
"destination.us_bank_account.account_type": "<string>",
"destination.us_bank_account.payout_scheme": "<string>",
"destination.us_bank_account.address": {}
},
"destination.swift_bank_account": {
"destination.swift_bank_account.account_owner_name": "<string>",
"destination.swift_bank_account.account_owner_type": "<string>",
"destination.swift_bank_account.account_country": "<string>",
"destination.swift_bank_account.iban": "<string>",
"destination.swift_bank_account.bic": "<string>",
"destination.swift_bank_account.bank_name": "<string>",
"destination.swift_bank_account.first_name": "<string>",
"destination.swift_bank_account.last_name": "<string>",
"destination.swift_bank_account.business_name": "<string>",
"destination.swift_bank_account.category": "<string>",
"destination.swift_bank_account.purpose_of_funds": [
{}
],
"destination.swift_bank_account.short_business_description": "<string>",
"destination.swift_bank_account.address": {},
"destination.swift_bank_account.bank_address": {}
}
},
"on_behalf_of": {
"on_behalf_of.customer_id": "<string>"
}
}
'import requests
url = "https://api.daya.co/v1/transfers"
payload = {
"currency": "<string>",
"debit_currency": "<string>",
"debit_scope": "<string>",
"amount": "<string>",
"reference": "<string>",
"recipient_id": "<string>",
"destination": {
"destination.type": "<string>",
"destination.crypto_address": {
"destination.crypto_address.asset": "<string>",
"destination.crypto_address.chain": "<string>",
"destination.crypto_address.address": "<string>"
},
"destination.bank_account": {
"destination.bank_account.account_number": "<string>",
"destination.bank_account.bank_code": "<string>",
"destination.bank_account.account_name": "<string>"
},
"destination.us_bank_account": {
"destination.us_bank_account.account_owner_name": "<string>",
"destination.us_bank_account.account_number": "<string>",
"destination.us_bank_account.routing_number": "<string>",
"destination.us_bank_account.bank_name": "<string>",
"destination.us_bank_account.account_type": "<string>",
"destination.us_bank_account.payout_scheme": "<string>",
"destination.us_bank_account.address": {}
},
"destination.swift_bank_account": {
"destination.swift_bank_account.account_owner_name": "<string>",
"destination.swift_bank_account.account_owner_type": "<string>",
"destination.swift_bank_account.account_country": "<string>",
"destination.swift_bank_account.iban": "<string>",
"destination.swift_bank_account.bic": "<string>",
"destination.swift_bank_account.bank_name": "<string>",
"destination.swift_bank_account.first_name": "<string>",
"destination.swift_bank_account.last_name": "<string>",
"destination.swift_bank_account.business_name": "<string>",
"destination.swift_bank_account.category": "<string>",
"destination.swift_bank_account.purpose_of_funds": [{}],
"destination.swift_bank_account.short_business_description": "<string>",
"destination.swift_bank_account.address": {},
"destination.swift_bank_account.bank_address": {}
}
},
"on_behalf_of": { "on_behalf_of.customer_id": "<string>" }
}
headers = {
"X-Api-Key": "<x-api-key>",
"Idempotency-Key": "<idempotency-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Api-Key': '<x-api-key>',
'Idempotency-Key': '<idempotency-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
currency: '<string>',
debit_currency: '<string>',
debit_scope: '<string>',
amount: '<string>',
reference: '<string>',
recipient_id: '<string>',
destination: {
'destination.type': '<string>',
'destination.crypto_address': {
'destination.crypto_address.asset': '<string>',
'destination.crypto_address.chain': '<string>',
'destination.crypto_address.address': '<string>'
},
'destination.bank_account': {
'destination.bank_account.account_number': '<string>',
'destination.bank_account.bank_code': '<string>',
'destination.bank_account.account_name': '<string>'
},
'destination.us_bank_account': {
'destination.us_bank_account.account_owner_name': '<string>',
'destination.us_bank_account.account_number': '<string>',
'destination.us_bank_account.routing_number': '<string>',
'destination.us_bank_account.bank_name': '<string>',
'destination.us_bank_account.account_type': '<string>',
'destination.us_bank_account.payout_scheme': '<string>',
'destination.us_bank_account.address': {}
},
'destination.swift_bank_account': {
'destination.swift_bank_account.account_owner_name': '<string>',
'destination.swift_bank_account.account_owner_type': '<string>',
'destination.swift_bank_account.account_country': '<string>',
'destination.swift_bank_account.iban': '<string>',
'destination.swift_bank_account.bic': '<string>',
'destination.swift_bank_account.bank_name': '<string>',
'destination.swift_bank_account.first_name': '<string>',
'destination.swift_bank_account.last_name': '<string>',
'destination.swift_bank_account.business_name': '<string>',
'destination.swift_bank_account.category': '<string>',
'destination.swift_bank_account.purpose_of_funds': [{}],
'destination.swift_bank_account.short_business_description': '<string>',
'destination.swift_bank_account.address': {},
'destination.swift_bank_account.bank_address': {}
}
},
on_behalf_of: {'on_behalf_of.customer_id': '<string>'}
})
};
fetch('https://api.daya.co/v1/transfers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.daya.co/v1/transfers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'currency' => '<string>',
'debit_currency' => '<string>',
'debit_scope' => '<string>',
'amount' => '<string>',
'reference' => '<string>',
'recipient_id' => '<string>',
'destination' => [
'destination.type' => '<string>',
'destination.crypto_address' => [
'destination.crypto_address.asset' => '<string>',
'destination.crypto_address.chain' => '<string>',
'destination.crypto_address.address' => '<string>'
],
'destination.bank_account' => [
'destination.bank_account.account_number' => '<string>',
'destination.bank_account.bank_code' => '<string>',
'destination.bank_account.account_name' => '<string>'
],
'destination.us_bank_account' => [
'destination.us_bank_account.account_owner_name' => '<string>',
'destination.us_bank_account.account_number' => '<string>',
'destination.us_bank_account.routing_number' => '<string>',
'destination.us_bank_account.bank_name' => '<string>',
'destination.us_bank_account.account_type' => '<string>',
'destination.us_bank_account.payout_scheme' => '<string>',
'destination.us_bank_account.address' => [
]
],
'destination.swift_bank_account' => [
'destination.swift_bank_account.account_owner_name' => '<string>',
'destination.swift_bank_account.account_owner_type' => '<string>',
'destination.swift_bank_account.account_country' => '<string>',
'destination.swift_bank_account.iban' => '<string>',
'destination.swift_bank_account.bic' => '<string>',
'destination.swift_bank_account.bank_name' => '<string>',
'destination.swift_bank_account.first_name' => '<string>',
'destination.swift_bank_account.last_name' => '<string>',
'destination.swift_bank_account.business_name' => '<string>',
'destination.swift_bank_account.category' => '<string>',
'destination.swift_bank_account.purpose_of_funds' => [
[
]
],
'destination.swift_bank_account.short_business_description' => '<string>',
'destination.swift_bank_account.address' => [
],
'destination.swift_bank_account.bank_address' => [
]
]
],
'on_behalf_of' => [
'on_behalf_of.customer_id' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"X-Api-Key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.daya.co/v1/transfers"
payload := strings.NewReader("{\n \"currency\": \"<string>\",\n \"debit_currency\": \"<string>\",\n \"debit_scope\": \"<string>\",\n \"amount\": \"<string>\",\n \"reference\": \"<string>\",\n \"recipient_id\": \"<string>\",\n \"destination\": {\n \"destination.type\": \"<string>\",\n \"destination.crypto_address\": {\n \"destination.crypto_address.asset\": \"<string>\",\n \"destination.crypto_address.chain\": \"<string>\",\n \"destination.crypto_address.address\": \"<string>\"\n },\n \"destination.bank_account\": {\n \"destination.bank_account.account_number\": \"<string>\",\n \"destination.bank_account.bank_code\": \"<string>\",\n \"destination.bank_account.account_name\": \"<string>\"\n },\n \"destination.us_bank_account\": {\n \"destination.us_bank_account.account_owner_name\": \"<string>\",\n \"destination.us_bank_account.account_number\": \"<string>\",\n \"destination.us_bank_account.routing_number\": \"<string>\",\n \"destination.us_bank_account.bank_name\": \"<string>\",\n \"destination.us_bank_account.account_type\": \"<string>\",\n \"destination.us_bank_account.payout_scheme\": \"<string>\",\n \"destination.us_bank_account.address\": {}\n },\n \"destination.swift_bank_account\": {\n \"destination.swift_bank_account.account_owner_name\": \"<string>\",\n \"destination.swift_bank_account.account_owner_type\": \"<string>\",\n \"destination.swift_bank_account.account_country\": \"<string>\",\n \"destination.swift_bank_account.iban\": \"<string>\",\n \"destination.swift_bank_account.bic\": \"<string>\",\n \"destination.swift_bank_account.bank_name\": \"<string>\",\n \"destination.swift_bank_account.first_name\": \"<string>\",\n \"destination.swift_bank_account.last_name\": \"<string>\",\n \"destination.swift_bank_account.business_name\": \"<string>\",\n \"destination.swift_bank_account.category\": \"<string>\",\n \"destination.swift_bank_account.purpose_of_funds\": [\n {}\n ],\n \"destination.swift_bank_account.short_business_description\": \"<string>\",\n \"destination.swift_bank_account.address\": {},\n \"destination.swift_bank_account.bank_address\": {}\n }\n },\n \"on_behalf_of\": {\n \"on_behalf_of.customer_id\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<x-api-key>")
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.daya.co/v1/transfers")
.header("X-Api-Key", "<x-api-key>")
.header("Idempotency-Key", "<idempotency-key>")
.header("Content-Type", "application/json")
.body("{\n \"currency\": \"<string>\",\n \"debit_currency\": \"<string>\",\n \"debit_scope\": \"<string>\",\n \"amount\": \"<string>\",\n \"reference\": \"<string>\",\n \"recipient_id\": \"<string>\",\n \"destination\": {\n \"destination.type\": \"<string>\",\n \"destination.crypto_address\": {\n \"destination.crypto_address.asset\": \"<string>\",\n \"destination.crypto_address.chain\": \"<string>\",\n \"destination.crypto_address.address\": \"<string>\"\n },\n \"destination.bank_account\": {\n \"destination.bank_account.account_number\": \"<string>\",\n \"destination.bank_account.bank_code\": \"<string>\",\n \"destination.bank_account.account_name\": \"<string>\"\n },\n \"destination.us_bank_account\": {\n \"destination.us_bank_account.account_owner_name\": \"<string>\",\n \"destination.us_bank_account.account_number\": \"<string>\",\n \"destination.us_bank_account.routing_number\": \"<string>\",\n \"destination.us_bank_account.bank_name\": \"<string>\",\n \"destination.us_bank_account.account_type\": \"<string>\",\n \"destination.us_bank_account.payout_scheme\": \"<string>\",\n \"destination.us_bank_account.address\": {}\n },\n \"destination.swift_bank_account\": {\n \"destination.swift_bank_account.account_owner_name\": \"<string>\",\n \"destination.swift_bank_account.account_owner_type\": \"<string>\",\n \"destination.swift_bank_account.account_country\": \"<string>\",\n \"destination.swift_bank_account.iban\": \"<string>\",\n \"destination.swift_bank_account.bic\": \"<string>\",\n \"destination.swift_bank_account.bank_name\": \"<string>\",\n \"destination.swift_bank_account.first_name\": \"<string>\",\n \"destination.swift_bank_account.last_name\": \"<string>\",\n \"destination.swift_bank_account.business_name\": \"<string>\",\n \"destination.swift_bank_account.category\": \"<string>\",\n \"destination.swift_bank_account.purpose_of_funds\": [\n {}\n ],\n \"destination.swift_bank_account.short_business_description\": \"<string>\",\n \"destination.swift_bank_account.address\": {},\n \"destination.swift_bank_account.bank_address\": {}\n }\n },\n \"on_behalf_of\": {\n \"on_behalf_of.customer_id\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.daya.co/v1/transfers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<x-api-key>'
request["Idempotency-Key"] = '<idempotency-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"currency\": \"<string>\",\n \"debit_currency\": \"<string>\",\n \"debit_scope\": \"<string>\",\n \"amount\": \"<string>\",\n \"reference\": \"<string>\",\n \"recipient_id\": \"<string>\",\n \"destination\": {\n \"destination.type\": \"<string>\",\n \"destination.crypto_address\": {\n \"destination.crypto_address.asset\": \"<string>\",\n \"destination.crypto_address.chain\": \"<string>\",\n \"destination.crypto_address.address\": \"<string>\"\n },\n \"destination.bank_account\": {\n \"destination.bank_account.account_number\": \"<string>\",\n \"destination.bank_account.bank_code\": \"<string>\",\n \"destination.bank_account.account_name\": \"<string>\"\n },\n \"destination.us_bank_account\": {\n \"destination.us_bank_account.account_owner_name\": \"<string>\",\n \"destination.us_bank_account.account_number\": \"<string>\",\n \"destination.us_bank_account.routing_number\": \"<string>\",\n \"destination.us_bank_account.bank_name\": \"<string>\",\n \"destination.us_bank_account.account_type\": \"<string>\",\n \"destination.us_bank_account.payout_scheme\": \"<string>\",\n \"destination.us_bank_account.address\": {}\n },\n \"destination.swift_bank_account\": {\n \"destination.swift_bank_account.account_owner_name\": \"<string>\",\n \"destination.swift_bank_account.account_owner_type\": \"<string>\",\n \"destination.swift_bank_account.account_country\": \"<string>\",\n \"destination.swift_bank_account.iban\": \"<string>\",\n \"destination.swift_bank_account.bic\": \"<string>\",\n \"destination.swift_bank_account.bank_name\": \"<string>\",\n \"destination.swift_bank_account.first_name\": \"<string>\",\n \"destination.swift_bank_account.last_name\": \"<string>\",\n \"destination.swift_bank_account.business_name\": \"<string>\",\n \"destination.swift_bank_account.category\": \"<string>\",\n \"destination.swift_bank_account.purpose_of_funds\": [\n {}\n ],\n \"destination.swift_bank_account.short_business_description\": \"<string>\",\n \"destination.swift_bank_account.address\": {},\n \"destination.swift_bank_account.bank_address\": {}\n }\n },\n \"on_behalf_of\": {\n \"on_behalf_of.customer_id\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "850e8400-e29b-41d4-a716-446655440000",
"reference": "txn_ngn_001",
"status": "PROCESSING",
"rail": "NGN_BANK",
"currency": "NGN",
"amount": "50000.00",
"debit_currency": "USD",
"debit_scope": "MERCHANT",
"debit_amount": "32.290323",
"fee": "0.032258",
"rate": {
"side": "SELL",
"value": "1550.00",
"captured_at": "2026-01-05T15:04:05Z"
},
"recipient": {
"id": "750e8400-e29b-41d4-a716-446655440000",
"type": "BANK_ACCOUNT",
"bank_account": {
"account_name": "John Doe",
"account_number_last4": "7890",
"bank_code": "044",
"bank_name": "Access Bank"
}
},
"on_behalf_of": null,
"created_at": "2026-01-05T15:04:05Z",
"settled_at": null
}
{
"id": "950e8400-e29b-41d4-a716-446655440000",
"reference": "txn_usd_001",
"status": "PROCESSING",
"rail": "USD_BANK",
"currency": "USD",
"amount": "100.00",
"debit_currency": "USD",
"debit_scope": "MERCHANT",
"debit_amount": "100.00",
"fee": "0.00",
"rate": null,
"recipient": {
"id": "860e8400-e29b-41d4-a716-446655440000",
"type": "US_BANK_ACCOUNT",
"us_bank_account": {
"account_owner_name": "Jane Smith",
"account_number_last4": "6789",
"bank_name": "Chase",
"account_type": "checking",
"payout_scheme": "ach"
}
},
"on_behalf_of": {
"customer_id": "650e8400-e29b-41d4-a716-446655440000"
},
"created_at": "2026-01-05T15:04:05Z",
"settled_at": null
}
Overview
Create a transfer to send funds to a saved recipient or an inline destination. Transfers support NGN bank transfers, USD ACH/wire/RTP/SWIFT transfers, USD stablecoin transfers, and native SOL or BNB transfers. Transfers are funded from your merchant balance. Before creating a transfer, ensure your balance has sufficient funds. You can fund your balance in two ways:- Crypto deposits — send stablecoins to your merchant funding crypto wallet addresses.
- NGN deposits — transfer Naira to your permanent merchant funding NGN bank account. With the default
USD_BALANCEpreference, the deposit converts to USD. WithNGN_BALANCE, it remains NGN.
debit_scope: CUSTOMER, debit_currency: NGN, and on_behalf_of.customer_id. See Customer NGN balances.
Exactly one of recipient_id or destination must be provided.
Saved vs inline recipients:
- Saved recipients are created separately via
POST /v1/recipientsand referenced byrecipient_id. - Inline recipients are created implicitly when
destinationis provided. - For inline USD destinations,
on_behalf_of.customer_idis effectively required because the inline recipient-creation flow needs a customer context. - That customer must already be tier-2 verified; otherwise inline USD recipient creation fails.
Idempotency: This endpoint is idempotent. Use
Idempotency-Key; X-Idempotency-Key is also accepted as a fallback.Authentication
string
required
Your merchant API key
string
required
Unique idempotency key for request deduplication.
X-Idempotency-Key is also accepted.Example: 550e8400-e29b-41d4-a716-446655440000Request Body
string
required
Transfer currency.Allowed values:
NGN | USD | SOL | BNBNGNtransfers: onlyBANK_ACCOUNTrecipients.USDtransfers:US_BANK_ACCOUNT,SWIFT_BANK_ACCOUNT, orCRYPTO_ADDRESSrecipients using USDC or USDT.SOLtransfers:CRYPTO_ADDRESSrecipients using SOL on Solana.BNBtransfers:CRYPTO_ADDRESSrecipients using BNB on BSC.
string
Balance currency used to fund the transfer. Allowed values:
USD, NGN.NGN bank transfers default to USD when this field is omitted, preserving the existing conversion flow. Set it to NGN to spend a retained NGN balance. Omit it for native SOL and BNB transfers.string
Owner of the balance used to fund the transfer. Allowed values:
MERCHANT, CUSTOMER. Defaults to MERCHANT.CUSTOMER is supported only when both currency and debit_currency are NGN. You must also send on_behalf_of.customer_id.string
required
Transfer amount as a decimal string in the target currency.For NGN bank transfers, this is the amount the recipient receives and it must be at least
100.00. Below 1000.00, the flat NGN 20 low-value fee applies. At 1000.00 or above, the configured percentage fee and cap apply. Fees are charged separately from the selected balance.Native SOL amounts support up to 9 decimal places. Native BNB amounts support up to 8 decimal places. Non-NGN transfers must also meet the minimum effective value of USD 0.50.Example: 50000.00string
required
Merchant-provided unique reference for the transfer.Example:
txn_abc123string
ID of a previously saved recipient (UUID). Mutually exclusive with
destination.Example: 750e8400-e29b-41d4-a716-446655440000object
Inline destination details. Mutually exclusive with
recipient_id.Show destination properties
Show destination properties
string
required
Destination type.Allowed values:
BANK_ACCOUNT | CRYPTO_ADDRESS | US_BANK_ACCOUNT | SWIFT_BANK_ACCOUNTobject
Crypto destination details. Required when
destination.type is CRYPTO_ADDRESS.Show crypto_address properties
Show crypto_address properties
string
required
Asset to send. Use
USDC or USDT when currency is USD, SOL when currency is SOL, and BNB when currency is BNB.string
required
Blockchain network. Native SOL requires
SOLANA; native BNB requires BSC. For stablecoins, use GET /v1/supported-chains to select a withdrawal-enabled asset and chain combination for the current environment.string
required
Valid destination wallet address for the selected chain.
object
object
US bank account details. Required when
destination.type is US_BANK_ACCOUNT.Show us_bank_account properties
Show us_bank_account properties
string
required
Owner of the bank account. 1-256 characters. ACH and wire transfers enforce regex constraints on this field.
string
required
Account number
string
required
Routing number
string
required
Bank name (1-256 characters)
string
required
Allowed values:
checking | savingsstring
required
Allowed values:
ach | wireobject
required
Address of the beneficiary. US addresses used to receive wires must include a street number.
country must be an ISO 3166-1 alpha-3 code. State must be a valid ISO 3166-2 subdivision code for US addresses.object
SWIFT bank account details. Required when
destination.type is SWIFT_BANK_ACCOUNT. For individual recipients, provide first_name and last_name. For business recipients, provide business_name.Show swift_bank_account properties
Show swift_bank_account properties
string
required
Owner of the bank account. 1-256 characters. ACH and wire transfers enforce regex constraints on this field.
string
required
For
individual, provide first_name and last_name. For business, provide business_name.Allowed values: individual | businessstring
required
ISO 3166-1 alpha-3 country code where the bank account is held (3 characters)
string
required
International Bank Account Number
string
Bank Identifier Code (optional)
string
Bank name (1-256 characters, optional)
string
Required when
account_owner_type is individualstring
Required when
account_owner_type is individualstring
Required when
account_owner_type is businessstring
required
The context of business operations.Allowed values:
client | parent_company | subsidiary | supplierarray
required
The nature of the transactions this account will participate in. At least one value required.Allowed values:
intra_group_transfer | invoice_for_goods_and_servicesstring
required
How the business uses the funds.
object
required
Address of the beneficiary.
country must be an ISO 3166-1 alpha-3 code. US addresses used to receive wires must include a street number.object
required
Bank address.
country must be an ISO 3166-1 alpha-3 code.object
Optional metadata linking the transfer to a customer. Required for customer-scoped NGN transfers and effectively required for inline USD destinations.
Show on_behalf_of properties
Show on_behalf_of properties
string
required
Customer ID (UUID)
Request Examples
curl --request POST \
--url https://api.daya.co/v1/transfers \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"currency": "NGN",
"amount": "50000.00",
"reference": "txn_ngn_001",
"recipient_id": "750e8400-e29b-41d4-a716-446655440000"
}'
curl --request POST \
--url https://api.daya.co/v1/transfers \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Idempotency-Key: 570e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"currency": "NGN",
"debit_currency": "NGN",
"debit_scope": "MERCHANT",
"amount": "50000.00",
"reference": "txn_ngn_balance_001",
"recipient_id": "750e8400-e29b-41d4-a716-446655440000"
}'
curl --request POST \
--url https://api.daya.co/v1/transfers \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Idempotency-Key: 580e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"currency": "NGN",
"debit_currency": "NGN",
"debit_scope": "CUSTOMER",
"amount": "5000.00",
"reference": "customer_payout_001",
"recipient_id": "750e8400-e29b-41d4-a716-446655440000",
"on_behalf_of": {
"customer_id": "650e8400-e29b-41d4-a716-446655440000"
}
}'
curl --request POST \
--url https://api.daya.co/v1/transfers \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Idempotency-Key: 660e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"currency": "USD",
"amount": "100.00",
"reference": "txn_usd_001",
"on_behalf_of": {
"customer_id": "650e8400-e29b-41d4-a716-446655440000"
},
"destination": {
"type": "US_BANK_ACCOUNT",
"us_bank_account": {
"account_owner_name": "Jane Smith",
"account_number": "123456789",
"routing_number": "021000021",
"bank_name": "Chase",
"account_type": "checking",
"payout_scheme": "ach",
"address": {
"street_line_1": "123 Main St",
"city": "New York",
"state": "NY",
"postal_code": "10001",
"country": "USA"
}
}
}
}'
curl --request POST \
--url https://api.daya.co/v1/transfers \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Idempotency-Key: 670e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"currency": "SOL",
"amount": "0.01",
"reference": "txn_sol_001",
"destination": {
"type": "CRYPTO_ADDRESS",
"crypto_address": {
"asset": "SOL",
"chain": "SOLANA",
"address": "A_VALID_SOLANA_ADDRESS"
}
}
}'
Response
string
required
Transfer ID (UUID)
string
required
Merchant-provided reference
string
required
External status:
PROCESSING, SETTLED, or FAILEDstring
required
Transfer rail:
NGN_BANK, USD_BANK, or CRYPTOstring
required
Transfer currency (
NGN, USD, SOL, or BNB)string
required
Transfer amount in the target currency
string
required
Currency debited from the selected balance. NGN bank transfers return
USD or NGN; native-asset transfers return the native currency.string
required
Balance owner:
MERCHANT or CUSTOMER.string
required
Total removed from the selected balance, expressed in
debit_currency. This already includes fee; do not add the fee again.string
required
Fee amount.
object
object
Resolved recipient details
object
Customer metadata if provided
string
required
When the transfer was created (ISO 8601)
string
When the transfer settled (ISO 8601). Null if not yet settled.
Success Response
{
"id": "850e8400-e29b-41d4-a716-446655440000",
"reference": "txn_ngn_001",
"status": "PROCESSING",
"rail": "NGN_BANK",
"currency": "NGN",
"amount": "50000.00",
"debit_currency": "USD",
"debit_scope": "MERCHANT",
"debit_amount": "32.290323",
"fee": "0.032258",
"rate": {
"side": "SELL",
"value": "1550.00",
"captured_at": "2026-01-05T15:04:05Z"
},
"recipient": {
"id": "750e8400-e29b-41d4-a716-446655440000",
"type": "BANK_ACCOUNT",
"bank_account": {
"account_name": "John Doe",
"account_number_last4": "7890",
"bank_code": "044",
"bank_name": "Access Bank"
}
},
"on_behalf_of": null,
"created_at": "2026-01-05T15:04:05Z",
"settled_at": null
}
{
"id": "950e8400-e29b-41d4-a716-446655440000",
"reference": "txn_usd_001",
"status": "PROCESSING",
"rail": "USD_BANK",
"currency": "USD",
"amount": "100.00",
"debit_currency": "USD",
"debit_scope": "MERCHANT",
"debit_amount": "100.00",
"fee": "0.00",
"rate": null,
"recipient": {
"id": "860e8400-e29b-41d4-a716-446655440000",
"type": "US_BANK_ACCOUNT",
"us_bank_account": {
"account_owner_name": "Jane Smith",
"account_number_last4": "6789",
"bank_name": "Chase",
"account_type": "checking",
"payout_scheme": "ach"
}
},
"on_behalf_of": {
"customer_id": "650e8400-e29b-41d4-a716-446655440000"
},
"created_at": "2026-01-05T15:04:05Z",
"settled_at": null
}
In transfer responses,
amount is what the recipient receives. debit_amount is the total balance reduction (principal plus fee), while fee shows the fee component of that total.Notes
Customer NGN balance transfer
-
Set
currency: NGN,debit_currency: NGN, anddebit_scope: CUSTOMER. -
Include
on_behalf_of.customer_idfor the customer whose balance should be debited. - The recipient must belong to that same customer.
- The customer must have completed Tier 1 KYC.
- The amount and fee are debited directly in NGN, with no transfer FX conversion.
- NGN bank recipients must receive at least NGN 100. A flat NGN 20 fee applies only when the recipient amount is below NGN 1,000. At NGN 1,000 or above, the configured percentage fee and NGN cap apply.
- For USD-funded NGN transfers, the NGN amount and fee are converted to USD and charged to the merchant USD withdrawal balance.
-
For native SOL and BNB transfers, omit
debit_currency; the matching merchant native-asset balance is debited and the transfer fee is zero. - For NGN-funded NGN transfers, the amount and fee remain NGN and are charged to the selected merchant or customer NGN balance.
-
Use
GET /v1/feesfor the active percentage, cap, low-value fee, threshold, and minimum recipient amount. - The $0.50 minimum effective debit continues to apply to non-NGN transfers.
- Saved USD recipients can be reused later without resending full destination details.
-
Transfers emit
transfer.*webhooks:transfer.created,transfer.processing,transfer.submitted, thentransfer.completedortransfer.failed.transfer.requires_reviewis sent when a transfer is flagged.