curl --request PUT \
--url https://api.paxos.com/v2/transfer/crypto-destination-address \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "<string>",
"identity_id": "<string>",
"address": "<string>",
"nickname": "<string>",
"bookmarked_status": true,
"travelrule_metadata": {
"beneficiary": {
"self": true
},
"vasp": {
"id": "<string>",
"custom_vasp_name": "<string>",
"custom_vasp_website": "<string>"
},
"transfer_purpose": "<string>"
}
}
'import requests
url = "https://api.paxos.com/v2/transfer/crypto-destination-address"
payload = {
"id": "<string>",
"identity_id": "<string>",
"address": "<string>",
"nickname": "<string>",
"bookmarked_status": True,
"travelrule_metadata": {
"beneficiary": { "self": True },
"vasp": {
"id": "<string>",
"custom_vasp_name": "<string>",
"custom_vasp_website": "<string>"
},
"transfer_purpose": "<string>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: '<string>',
identity_id: '<string>',
address: '<string>',
nickname: '<string>',
bookmarked_status: true,
travelrule_metadata: {
beneficiary: {self: true},
vasp: {id: '<string>', custom_vasp_name: '<string>', custom_vasp_website: '<string>'},
transfer_purpose: '<string>'
}
})
};
fetch('https://api.paxos.com/v2/transfer/crypto-destination-address', 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.paxos.com/v2/transfer/crypto-destination-address",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'id' => '<string>',
'identity_id' => '<string>',
'address' => '<string>',
'nickname' => '<string>',
'bookmarked_status' => true,
'travelrule_metadata' => [
'beneficiary' => [
'self' => true
],
'vasp' => [
'id' => '<string>',
'custom_vasp_name' => '<string>',
'custom_vasp_website' => '<string>'
],
'transfer_purpose' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.paxos.com/v2/transfer/crypto-destination-address"
payload := strings.NewReader("{\n \"id\": \"<string>\",\n \"identity_id\": \"<string>\",\n \"address\": \"<string>\",\n \"nickname\": \"<string>\",\n \"bookmarked_status\": true,\n \"travelrule_metadata\": {\n \"beneficiary\": {\n \"self\": true\n },\n \"vasp\": {\n \"id\": \"<string>\",\n \"custom_vasp_name\": \"<string>\",\n \"custom_vasp_website\": \"<string>\"\n },\n \"transfer_purpose\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.put("https://api.paxos.com/v2/transfer/crypto-destination-address")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"<string>\",\n \"identity_id\": \"<string>\",\n \"address\": \"<string>\",\n \"nickname\": \"<string>\",\n \"bookmarked_status\": true,\n \"travelrule_metadata\": {\n \"beneficiary\": {\n \"self\": true\n },\n \"vasp\": {\n \"id\": \"<string>\",\n \"custom_vasp_name\": \"<string>\",\n \"custom_vasp_website\": \"<string>\"\n },\n \"transfer_purpose\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paxos.com/v2/transfer/crypto-destination-address")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"<string>\",\n \"identity_id\": \"<string>\",\n \"address\": \"<string>\",\n \"nickname\": \"<string>\",\n \"bookmarked_status\": true,\n \"travelrule_metadata\": {\n \"beneficiary\": {\n \"self\": true\n },\n \"vasp\": {\n \"id\": \"<string>\",\n \"custom_vasp_name\": \"<string>\",\n \"custom_vasp_website\": \"<string>\"\n },\n \"transfer_purpose\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"address": {
"id": "31f20a34-c1eb-4c86-adad-1e46bc271e1a",
"crypto_network": "ETHEREUM",
"address": "0xe4B0aCA9FB669817775274775b20e52118595515",
"nickname": "my_new_address",
"status": "APPROVED",
"created_at": "2024-01-01T00:00:00Z",
"bookmarked": true
}
}Put Crypto Destination Addresses
Updates a specified crypto destination address. If the address does not exist, it will be created
curl --request PUT \
--url https://api.paxos.com/v2/transfer/crypto-destination-address \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "<string>",
"identity_id": "<string>",
"address": "<string>",
"nickname": "<string>",
"bookmarked_status": true,
"travelrule_metadata": {
"beneficiary": {
"self": true
},
"vasp": {
"id": "<string>",
"custom_vasp_name": "<string>",
"custom_vasp_website": "<string>"
},
"transfer_purpose": "<string>"
}
}
'import requests
url = "https://api.paxos.com/v2/transfer/crypto-destination-address"
payload = {
"id": "<string>",
"identity_id": "<string>",
"address": "<string>",
"nickname": "<string>",
"bookmarked_status": True,
"travelrule_metadata": {
"beneficiary": { "self": True },
"vasp": {
"id": "<string>",
"custom_vasp_name": "<string>",
"custom_vasp_website": "<string>"
},
"transfer_purpose": "<string>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: '<string>',
identity_id: '<string>',
address: '<string>',
nickname: '<string>',
bookmarked_status: true,
travelrule_metadata: {
beneficiary: {self: true},
vasp: {id: '<string>', custom_vasp_name: '<string>', custom_vasp_website: '<string>'},
transfer_purpose: '<string>'
}
})
};
fetch('https://api.paxos.com/v2/transfer/crypto-destination-address', 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.paxos.com/v2/transfer/crypto-destination-address",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'id' => '<string>',
'identity_id' => '<string>',
'address' => '<string>',
'nickname' => '<string>',
'bookmarked_status' => true,
'travelrule_metadata' => [
'beneficiary' => [
'self' => true
],
'vasp' => [
'id' => '<string>',
'custom_vasp_name' => '<string>',
'custom_vasp_website' => '<string>'
],
'transfer_purpose' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.paxos.com/v2/transfer/crypto-destination-address"
payload := strings.NewReader("{\n \"id\": \"<string>\",\n \"identity_id\": \"<string>\",\n \"address\": \"<string>\",\n \"nickname\": \"<string>\",\n \"bookmarked_status\": true,\n \"travelrule_metadata\": {\n \"beneficiary\": {\n \"self\": true\n },\n \"vasp\": {\n \"id\": \"<string>\",\n \"custom_vasp_name\": \"<string>\",\n \"custom_vasp_website\": \"<string>\"\n },\n \"transfer_purpose\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.put("https://api.paxos.com/v2/transfer/crypto-destination-address")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"<string>\",\n \"identity_id\": \"<string>\",\n \"address\": \"<string>\",\n \"nickname\": \"<string>\",\n \"bookmarked_status\": true,\n \"travelrule_metadata\": {\n \"beneficiary\": {\n \"self\": true\n },\n \"vasp\": {\n \"id\": \"<string>\",\n \"custom_vasp_name\": \"<string>\",\n \"custom_vasp_website\": \"<string>\"\n },\n \"transfer_purpose\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paxos.com/v2/transfer/crypto-destination-address")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"<string>\",\n \"identity_id\": \"<string>\",\n \"address\": \"<string>\",\n \"nickname\": \"<string>\",\n \"bookmarked_status\": true,\n \"travelrule_metadata\": {\n \"beneficiary\": {\n \"self\": true\n },\n \"vasp\": {\n \"id\": \"<string>\",\n \"custom_vasp_name\": \"<string>\",\n \"custom_vasp_website\": \"<string>\"\n },\n \"transfer_purpose\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"address": {
"id": "31f20a34-c1eb-4c86-adad-1e46bc271e1a",
"crypto_network": "ETHEREUM",
"address": "0xe4B0aCA9FB669817775274775b20e52118595515",
"nickname": "my_new_address",
"status": "APPROVED",
"created_at": "2024-01-01T00:00:00Z",
"bookmarked": true
}
}transfer:write_crypto_destination_address
Bookmarked addresses and status
A bookmarked address is saved to your address book. The Addresses page in the Paxos Dashboard shows exactly your bookmarked addresses. Adding an address in the Dashboard bookmarks it. To bookmark an address through the API, set"bookmarked_status": true on Put Crypto Destination Address.
status only applies to bookmarked addresses. It is the approval state of the saved address:
| Status | Meaning |
|---|---|
PENDING | The bookmarked address is waiting for a second team member to approve it under your Dashboard Approvals policy. |
APPROVED | The bookmarked address is approved. Addresses bookmarked through the API are approved immediately. |
REJECTED | A team member rejected the bookmarked address under your Dashboard Approvals policy. |
status reflects your organization’s own approval settings. It is not a Paxos compliance review. APPROVED means the address passed your approval process, not that Paxos cleared it.
Empty fields are omitted
The API omits empty fields from the JSON response. When an address is not bookmarked, the response omits bothstatus and bookmarked (because bookmarked is false). This is expected behavior. Calling List Crypto Destination Addresses returns the same result, so polling does not produce a status for an address that isn’t bookmarked.
To get a status back, bookmark the address by including "bookmarked_status": true in your PUT request. For API requests, the response includes "bookmarked": true and "status": "APPROVED".
Withdrawals and Travel Rule data
- You can create crypto withdrawals through the API to addresses that are not bookmarked.
- Bookmarking is required for withdrawals created in the Paxos Dashboard, or when Paxos has configured your account to require it for API withdrawals.
- Paxos stores and checks the address’s
travelrule_metadatawhether or not the address is bookmarked. See the Travel Rule guide.
(crypto_network, address, identity_id) combination is a separate record. If you have one record for an address linked to an Identity and another with no identity_id, bookmark the record your withdrawals use.Authorizations
Paxos APIs use OAuth 2 with the client credentials grant flow.
Token URLs:
- Production: https://oauth.paxos.com/oauth2/token
- Sandbox: https://oauth.sandbox.paxos.com/oauth2/token
Learn more in the API credentials guide →
Body
Optional field to specify the crypto destination address to update by its unique id.
Specify either id or the (crypto_network, address, identity_id) tuple, not both.
The Identity that owns this destination address. Required for 3P integrations.
When looking up an existing address to update, (crypto_network, address, identity_id)
uniquely identifies it; omit for first-party addresses with no identity scope.
A CryptoNetwork is a blockchain transmitting cryptocurrencies.
BITCOIN, ETHEREUM, BITCOIN_CASH, LITECOIN, SOLANA, POLYGON_POS, BASE, ARBITRUM_ONE, STELLAR, INK, XLAYER, AVALANCHE, DOGECOIN, SUI, ROBINHOOD, BNB, OP, COSMOS, TRON, APTOS, HYPEREVM, MANTLE, RIPPLE, STABLE Specify the address of the crypto destination address to create/update.
Specify either id or the (crypto_network, address, identity_id) tuple, not both.
Optional field to update the nickname of the crypto destination address. Defaults to an auto-generated nickname if not specified on creation.
Optional field to update the bookmarked status of the crypto destination address. Defaults to false if not specified on creation.
Travel Rule metadata for the destination address. See the Travel Rule guide.
Show child attributes
Show child attributes
Response
A successful response.
Show child attributes
Show child attributes
{
"id": "31f20a34-c1eb-4c86-adad-1e46bc271e1a",
"crypto_network": "ETHEREUM",
"address": "0xe4B0aCA9FB669817775274775b20e52118595515",
"nickname": "my_new_address",
"status": "APPROVED",
"created_at": "2024-01-01T00:00:00Z",
"bookmarked": true
}
Was this page helpful?