curl --request POST \
--url https://api.international.coinbase.com/api/v1/transfers/withdraw \
--header 'CB-ACCESS-KEY: <api-key>' \
--header 'CB-ACCESS-PASSPHRASE: <api-key>' \
--header 'CB-ACCESS-SIGN: <api-key>' \
--header 'CB-ACCESS-TIMESTAMP: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"portfolio": "<string>",
"asset": "<string>",
"amount": "<string>",
"add_network_fee_to_total": true,
"network_arn_id": "networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a",
"address": "0x29d2D586e222D0610b04e71974699589379F13b5",
"nonce": 30,
"destination_tag": "<string>"
}
'import requests
url = "https://api.international.coinbase.com/api/v1/transfers/withdraw"
payload = {
"portfolio": "<string>",
"asset": "<string>",
"amount": "<string>",
"add_network_fee_to_total": True,
"network_arn_id": "networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a",
"address": "0x29d2D586e222D0610b04e71974699589379F13b5",
"nonce": 30,
"destination_tag": "<string>"
}
headers = {
"CB-ACCESS-KEY": "<api-key>",
"CB-ACCESS-PASSPHRASE": "<api-key>",
"CB-ACCESS-SIGN": "<api-key>",
"CB-ACCESS-TIMESTAMP": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'CB-ACCESS-KEY': '<api-key>',
'CB-ACCESS-PASSPHRASE': '<api-key>',
'CB-ACCESS-SIGN': '<api-key>',
'CB-ACCESS-TIMESTAMP': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
portfolio: '<string>',
asset: '<string>',
amount: '<string>',
add_network_fee_to_total: true,
network_arn_id: 'networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a',
address: '0x29d2D586e222D0610b04e71974699589379F13b5',
nonce: 30,
destination_tag: '<string>'
})
};
fetch('https://api.international.coinbase.com/api/v1/transfers/withdraw', 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.international.coinbase.com/api/v1/transfers/withdraw",
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([
'portfolio' => '<string>',
'asset' => '<string>',
'amount' => '<string>',
'add_network_fee_to_total' => true,
'network_arn_id' => 'networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a',
'address' => '0x29d2D586e222D0610b04e71974699589379F13b5',
'nonce' => 30,
'destination_tag' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"CB-ACCESS-KEY: <api-key>",
"CB-ACCESS-PASSPHRASE: <api-key>",
"CB-ACCESS-SIGN: <api-key>",
"CB-ACCESS-TIMESTAMP: <api-key>",
"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.international.coinbase.com/api/v1/transfers/withdraw"
payload := strings.NewReader("{\n \"portfolio\": \"<string>\",\n \"asset\": \"<string>\",\n \"amount\": \"<string>\",\n \"add_network_fee_to_total\": true,\n \"network_arn_id\": \"networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a\",\n \"address\": \"0x29d2D586e222D0610b04e71974699589379F13b5\",\n \"nonce\": 30,\n \"destination_tag\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("CB-ACCESS-KEY", "<api-key>")
req.Header.Add("CB-ACCESS-PASSPHRASE", "<api-key>")
req.Header.Add("CB-ACCESS-SIGN", "<api-key>")
req.Header.Add("CB-ACCESS-TIMESTAMP", "<api-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.international.coinbase.com/api/v1/transfers/withdraw")
.header("CB-ACCESS-KEY", "<api-key>")
.header("CB-ACCESS-PASSPHRASE", "<api-key>")
.header("CB-ACCESS-SIGN", "<api-key>")
.header("CB-ACCESS-TIMESTAMP", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"portfolio\": \"<string>\",\n \"asset\": \"<string>\",\n \"amount\": \"<string>\",\n \"add_network_fee_to_total\": true,\n \"network_arn_id\": \"networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a\",\n \"address\": \"0x29d2D586e222D0610b04e71974699589379F13b5\",\n \"nonce\": 30,\n \"destination_tag\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.international.coinbase.com/api/v1/transfers/withdraw")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["CB-ACCESS-KEY"] = '<api-key>'
request["CB-ACCESS-PASSPHRASE"] = '<api-key>'
request["CB-ACCESS-SIGN"] = '<api-key>'
request["CB-ACCESS-TIMESTAMP"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"portfolio\": \"<string>\",\n \"asset\": \"<string>\",\n \"amount\": \"<string>\",\n \"add_network_fee_to_total\": true,\n \"network_arn_id\": \"networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a\",\n \"address\": \"0x29d2D586e222D0610b04e71974699589379F13b5\",\n \"nonce\": 30,\n \"destination_tag\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"idem": "253b30a5-9b03-4cd2-9c76-d0f32b2bd733"
}Withdraw to crypto address
curl --request POST \
--url https://api.international.coinbase.com/api/v1/transfers/withdraw \
--header 'CB-ACCESS-KEY: <api-key>' \
--header 'CB-ACCESS-PASSPHRASE: <api-key>' \
--header 'CB-ACCESS-SIGN: <api-key>' \
--header 'CB-ACCESS-TIMESTAMP: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"portfolio": "<string>",
"asset": "<string>",
"amount": "<string>",
"add_network_fee_to_total": true,
"network_arn_id": "networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a",
"address": "0x29d2D586e222D0610b04e71974699589379F13b5",
"nonce": 30,
"destination_tag": "<string>"
}
'import requests
url = "https://api.international.coinbase.com/api/v1/transfers/withdraw"
payload = {
"portfolio": "<string>",
"asset": "<string>",
"amount": "<string>",
"add_network_fee_to_total": True,
"network_arn_id": "networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a",
"address": "0x29d2D586e222D0610b04e71974699589379F13b5",
"nonce": 30,
"destination_tag": "<string>"
}
headers = {
"CB-ACCESS-KEY": "<api-key>",
"CB-ACCESS-PASSPHRASE": "<api-key>",
"CB-ACCESS-SIGN": "<api-key>",
"CB-ACCESS-TIMESTAMP": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'CB-ACCESS-KEY': '<api-key>',
'CB-ACCESS-PASSPHRASE': '<api-key>',
'CB-ACCESS-SIGN': '<api-key>',
'CB-ACCESS-TIMESTAMP': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
portfolio: '<string>',
asset: '<string>',
amount: '<string>',
add_network_fee_to_total: true,
network_arn_id: 'networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a',
address: '0x29d2D586e222D0610b04e71974699589379F13b5',
nonce: 30,
destination_tag: '<string>'
})
};
fetch('https://api.international.coinbase.com/api/v1/transfers/withdraw', 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.international.coinbase.com/api/v1/transfers/withdraw",
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([
'portfolio' => '<string>',
'asset' => '<string>',
'amount' => '<string>',
'add_network_fee_to_total' => true,
'network_arn_id' => 'networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a',
'address' => '0x29d2D586e222D0610b04e71974699589379F13b5',
'nonce' => 30,
'destination_tag' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"CB-ACCESS-KEY: <api-key>",
"CB-ACCESS-PASSPHRASE: <api-key>",
"CB-ACCESS-SIGN: <api-key>",
"CB-ACCESS-TIMESTAMP: <api-key>",
"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.international.coinbase.com/api/v1/transfers/withdraw"
payload := strings.NewReader("{\n \"portfolio\": \"<string>\",\n \"asset\": \"<string>\",\n \"amount\": \"<string>\",\n \"add_network_fee_to_total\": true,\n \"network_arn_id\": \"networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a\",\n \"address\": \"0x29d2D586e222D0610b04e71974699589379F13b5\",\n \"nonce\": 30,\n \"destination_tag\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("CB-ACCESS-KEY", "<api-key>")
req.Header.Add("CB-ACCESS-PASSPHRASE", "<api-key>")
req.Header.Add("CB-ACCESS-SIGN", "<api-key>")
req.Header.Add("CB-ACCESS-TIMESTAMP", "<api-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.international.coinbase.com/api/v1/transfers/withdraw")
.header("CB-ACCESS-KEY", "<api-key>")
.header("CB-ACCESS-PASSPHRASE", "<api-key>")
.header("CB-ACCESS-SIGN", "<api-key>")
.header("CB-ACCESS-TIMESTAMP", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"portfolio\": \"<string>\",\n \"asset\": \"<string>\",\n \"amount\": \"<string>\",\n \"add_network_fee_to_total\": true,\n \"network_arn_id\": \"networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a\",\n \"address\": \"0x29d2D586e222D0610b04e71974699589379F13b5\",\n \"nonce\": 30,\n \"destination_tag\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.international.coinbase.com/api/v1/transfers/withdraw")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["CB-ACCESS-KEY"] = '<api-key>'
request["CB-ACCESS-PASSPHRASE"] = '<api-key>'
request["CB-ACCESS-SIGN"] = '<api-key>'
request["CB-ACCESS-TIMESTAMP"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"portfolio\": \"<string>\",\n \"asset\": \"<string>\",\n \"amount\": \"<string>\",\n \"add_network_fee_to_total\": true,\n \"network_arn_id\": \"networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a\",\n \"address\": \"0x29d2D586e222D0610b04e71974699589379F13b5\",\n \"nonce\": 30,\n \"destination_tag\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"idem": "253b30a5-9b03-4cd2-9c76-d0f32b2bd733"
}- Java
- .NET
- Go
- Python
- TS/JS
- CLI
TransfersService transfersService = IntxServiceFactory.createTransfersService(client);
WithdrawToCryptoAddressRequest request = new WithdrawToCryptoAddressRequest.Builder()
.portfolio("portfolio_id")
.asset("ETH")
.amount("1")
.address("0x1234567890")
.build();
WithdrawToCryptoAddressResponse response = transfersService.withdrawToCryptoAddress(request);
var transfersService = new TransfersService(client);
var request = new WithdrawToCryptoAddressRequest(
Portfolio: "portfolio_id",
Asset: "ETH",
Amount: "1",
Address: "0x1234567890"
);
var response = transfersService.WithdrawToCryptoAddress(request);
transfersSvc := transfers.NewTransfersService(client)
request := &transfers.CreateWithdrawalToCryptoAddressRequest{
Portfolio: "portfolio_id",
Asset: "ETH",
Amount: "1",
Address: "0x1234567890",
}
response, err := transfersSvc.CreateWithdrawalToCryptoAddress(context.Background(), request)
client = IntxClient()
request = WithdrawToCryptoAddressRequest(
portfolio="portfolio_id",
asset="ETH",
amount="1",
address="0x1234567890"
)
response = client.withdraw_to_crypto_address(request)
const transfersService = new TransfersService(client);
transfersService.withdrawToCryptoAddress({
portfolio: 'PORTFOLIO_ID_HERE',
asset: 'ETH',
amount: '1',
address: '0x1234567890',
}).then(async (response) => {
console.log('Crypto Withdraw created: ', response);
})
intxctl create-withdrawal-to-crypto-address --help
Authorizations
The Client ID that owns the API Key for the request
The pass phrase affiliated with the API Key
A HMAC SHA-256 signature using the API Key secret on the string TIMESTAMP, METHOD, REQUEST_PATH, BODY
The timestamp of when the request is being made
Body
Identifies the portfolio by UUID (e.g., 892e8c7c-e979-4cad-b61b-55a197932cf1) or portfolio ID (e.g., 5189861793641175)
Identifies the asset by name (e.g., BTC), UUID (e.g., 291efb0f-2396-4d41-ad03-db3b2311cb2c), or asset ID (e.g., 1482439423963469)
The amount of the asset being transferred
if true, deducts network fee from the portfolio, otherwise deduct fee from the withdrawal
Identifies the blockchain network (e.g., networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a)
"networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a"
Crypto address being validated against
"0x29d2D586e222D0610b04e71974699589379F13b5"
a unique integer representing the withdrawal request
30
An identifier used to determine the account a crypto transfer should be credited to. Not present for all asset types.
Response
Withdrawal Successful
Idempotent UUID representing the successful withdraw
"253b30a5-9b03-4cd2-9c76-d0f32b2bd733"
Was this page helpful?