Create a funding method
Create the funding methods for an asset on an account. This provisions the receiving methods it needs (deriving crypto deposit addresses per chain and/or wiring the bank virtual accounts that serve the asset) and enables the ledger balance.
Idempotent: repeating the call links the asset onto already-provisioned addresses and banks instead of creating duplicates. Returns the funding methods now serving the asset, with full deposit details.
Requires the organization to be verification-approved (KYC) and to have the
RECEIVE service enabled. GET /v1/assets lists the assets you can pass.
curl --request POST \
--url https://api.nxos.io/v1/funding-methods \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"accountId": "acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"asset": "USDC"
}
'import requests
url = "https://api.nxos.io/v1/funding-methods"
payload = {
"accountId": "acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"asset": "USDC"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({accountId: 'acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4', asset: 'USDC'})
};
fetch('https://api.nxos.io/v1/funding-methods', 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.nxos.io/v1/funding-methods",
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([
'accountId' => 'acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4',
'asset' => 'USDC'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$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.nxos.io/v1/funding-methods"
payload := strings.NewReader("{\n \"accountId\": \"acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4\",\n \"asset\": \"USDC\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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.nxos.io/v1/funding-methods")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"accountId\": \"acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4\",\n \"asset\": \"USDC\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nxos.io/v1/funding-methods")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"accountId\": \"acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4\",\n \"asset\": \"USDC\"\n}"
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"object": "funding_method",
"fundingMethodId": "<string>",
"accountId": "<string>",
"name": "<string>",
"type": "CRYPTO_ADDRESS",
"status": "ACTIVE",
"supportedAssets": [
"<string>"
],
"details": {
"address": "<string>",
"chainName": "<string>",
"chainDisplayName": "<string>"
},
"createdAt": "<string>"
}
],
"hasMore": true,
"nextCursor": "<string>"
}{
"error": {
"code": "invalid_request",
"message": "The request body is malformed or missing required fields.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}{
"error": {
"code": "missing_api_key",
"message": "No Authorization header provided.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}{
"error": {
"code": "forbidden",
"message": "Your organization is not enabled for this action.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}{
"error": {
"code": "not_found",
"message": "The requested resource was not found.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}{
"error": {
"code": "quote_expired",
"message": "The quote has expired.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded: 1000 requests per minute. Retry in 23 seconds.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}{
"error": {
"code": "internal_error",
"message": "An unexpected server error occurred.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}Headers
Bearer token. Format: Bearer <api_key>
Unique key per logical operation. UUID v4 recommended. Max 255 characters.
Body
Request to create funding methods for an asset on an account. Provisions the receiving methods (deposit addresses / wire accounts) the asset needs.
Response
The request has succeeded.
Paginated list envelope. All list endpoints return this shape.
Object type. Always list for paginated responses.
list Array of results.
A funding method, discriminated by type. Use the type field to narrow
the details payload:
CRYPTO_ADDRESS→detailsisCryptoFundingMethodDetailsBANK→detailsisBankFundingMethodDetails
- Option 1
- Option 2
Show child attributes
Show child attributes
Whether more results are available beyond this page.
Cursor to pass as cursor query parameter for the next page. Null when there are no more results.
curl --request POST \
--url https://api.nxos.io/v1/funding-methods \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"accountId": "acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"asset": "USDC"
}
'import requests
url = "https://api.nxos.io/v1/funding-methods"
payload = {
"accountId": "acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"asset": "USDC"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({accountId: 'acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4', asset: 'USDC'})
};
fetch('https://api.nxos.io/v1/funding-methods', 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.nxos.io/v1/funding-methods",
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([
'accountId' => 'acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4',
'asset' => 'USDC'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$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.nxos.io/v1/funding-methods"
payload := strings.NewReader("{\n \"accountId\": \"acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4\",\n \"asset\": \"USDC\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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.nxos.io/v1/funding-methods")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"accountId\": \"acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4\",\n \"asset\": \"USDC\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nxos.io/v1/funding-methods")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"accountId\": \"acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4\",\n \"asset\": \"USDC\"\n}"
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"object": "funding_method",
"fundingMethodId": "<string>",
"accountId": "<string>",
"name": "<string>",
"type": "CRYPTO_ADDRESS",
"status": "ACTIVE",
"supportedAssets": [
"<string>"
],
"details": {
"address": "<string>",
"chainName": "<string>",
"chainDisplayName": "<string>"
},
"createdAt": "<string>"
}
],
"hasMore": true,
"nextCursor": "<string>"
}{
"error": {
"code": "invalid_request",
"message": "The request body is malformed or missing required fields.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}{
"error": {
"code": "missing_api_key",
"message": "No Authorization header provided.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}{
"error": {
"code": "forbidden",
"message": "Your organization is not enabled for this action.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}{
"error": {
"code": "not_found",
"message": "The requested resource was not found.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}{
"error": {
"code": "quote_expired",
"message": "The quote has expired.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded: 1000 requests per minute. Retry in 23 seconds.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}{
"error": {
"code": "internal_error",
"message": "An unexpected server error occurred.",
"requestId": "req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
}
}