curl --request POST \
--url https://sandbox.zapyd.com/cms/api/v1/customer/wallet/add \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'X-SIGNATURE: <api-key>' \
--header 'X-TIMESTAMP: <api-key>' \
--data '
{
"customer_id": "c2cf861b-342b-4318-a90e-85cd0312e82f",
"wallet_address": "0x1234567890123456789012345678901234567890",
"network": "Ethereum",
"label": "Main wallet"
}
'import requests
url = "https://sandbox.zapyd.com/cms/api/v1/customer/wallet/add"
payload = {
"customer_id": "c2cf861b-342b-4318-a90e-85cd0312e82f",
"wallet_address": "0x1234567890123456789012345678901234567890",
"network": "Ethereum",
"label": "Main wallet"
}
headers = {
"X-API-KEY": "<api-key>",
"X-TIMESTAMP": "<api-key>",
"X-SIGNATURE": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-API-KEY': '<api-key>',
'X-TIMESTAMP': '<api-key>',
'X-SIGNATURE': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
customer_id: 'c2cf861b-342b-4318-a90e-85cd0312e82f',
wallet_address: '0x1234567890123456789012345678901234567890',
network: 'Ethereum',
label: 'Main wallet'
})
};
fetch('https://sandbox.zapyd.com/cms/api/v1/customer/wallet/add', 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://sandbox.zapyd.com/cms/api/v1/customer/wallet/add",
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([
'customer_id' => 'c2cf861b-342b-4318-a90e-85cd0312e82f',
'wallet_address' => '0x1234567890123456789012345678901234567890',
'network' => 'Ethereum',
'label' => 'Main wallet'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>",
"X-SIGNATURE: <api-key>",
"X-TIMESTAMP: <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://sandbox.zapyd.com/cms/api/v1/customer/wallet/add"
payload := strings.NewReader("{\n \"customer_id\": \"c2cf861b-342b-4318-a90e-85cd0312e82f\",\n \"wallet_address\": \"0x1234567890123456789012345678901234567890\",\n \"network\": \"Ethereum\",\n \"label\": \"Main wallet\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("X-TIMESTAMP", "<api-key>")
req.Header.Add("X-SIGNATURE", "<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://sandbox.zapyd.com/cms/api/v1/customer/wallet/add")
.header("X-API-KEY", "<api-key>")
.header("X-TIMESTAMP", "<api-key>")
.header("X-SIGNATURE", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customer_id\": \"c2cf861b-342b-4318-a90e-85cd0312e82f\",\n \"wallet_address\": \"0x1234567890123456789012345678901234567890\",\n \"network\": \"Ethereum\",\n \"label\": \"Main wallet\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.zapyd.com/cms/api/v1/customer/wallet/add")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["X-TIMESTAMP"] = '<api-key>'
request["X-SIGNATURE"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_id\": \"c2cf861b-342b-4318-a90e-85cd0312e82f\",\n \"wallet_address\": \"0x1234567890123456789012345678901234567890\",\n \"network\": \"Ethereum\",\n \"label\": \"Main wallet\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Wallet added/updated successfully",
"data": {
"id": 42,
"wallet_address": "0x1234567890123456789012345678901234567890",
"network": "Ethereum",
"label": "Main wallet",
"status": "ACTIVE",
"is_visible": true,
"created_at": "2026-09-30T10:00:00Z"
}
}{
"status": false,
"message": "Bad Request",
"data": null,
"errors": {
"network": [
"This field is required."
]
},
"err_code": "REQ_FIELD_MISSING"
}{
"status": false,
"message": "Internal Server Error",
"data": null,
"errors": {},
"err_code": "SYS_INTERNAL_ERROR"
}Add Wallet
Adds a crypto wallet address to a customer, or updates it if it already exists. Wallets with a label form the customer’s address book.
curl --request POST \
--url https://sandbox.zapyd.com/cms/api/v1/customer/wallet/add \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'X-SIGNATURE: <api-key>' \
--header 'X-TIMESTAMP: <api-key>' \
--data '
{
"customer_id": "c2cf861b-342b-4318-a90e-85cd0312e82f",
"wallet_address": "0x1234567890123456789012345678901234567890",
"network": "Ethereum",
"label": "Main wallet"
}
'import requests
url = "https://sandbox.zapyd.com/cms/api/v1/customer/wallet/add"
payload = {
"customer_id": "c2cf861b-342b-4318-a90e-85cd0312e82f",
"wallet_address": "0x1234567890123456789012345678901234567890",
"network": "Ethereum",
"label": "Main wallet"
}
headers = {
"X-API-KEY": "<api-key>",
"X-TIMESTAMP": "<api-key>",
"X-SIGNATURE": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-API-KEY': '<api-key>',
'X-TIMESTAMP': '<api-key>',
'X-SIGNATURE': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
customer_id: 'c2cf861b-342b-4318-a90e-85cd0312e82f',
wallet_address: '0x1234567890123456789012345678901234567890',
network: 'Ethereum',
label: 'Main wallet'
})
};
fetch('https://sandbox.zapyd.com/cms/api/v1/customer/wallet/add', 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://sandbox.zapyd.com/cms/api/v1/customer/wallet/add",
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([
'customer_id' => 'c2cf861b-342b-4318-a90e-85cd0312e82f',
'wallet_address' => '0x1234567890123456789012345678901234567890',
'network' => 'Ethereum',
'label' => 'Main wallet'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>",
"X-SIGNATURE: <api-key>",
"X-TIMESTAMP: <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://sandbox.zapyd.com/cms/api/v1/customer/wallet/add"
payload := strings.NewReader("{\n \"customer_id\": \"c2cf861b-342b-4318-a90e-85cd0312e82f\",\n \"wallet_address\": \"0x1234567890123456789012345678901234567890\",\n \"network\": \"Ethereum\",\n \"label\": \"Main wallet\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("X-TIMESTAMP", "<api-key>")
req.Header.Add("X-SIGNATURE", "<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://sandbox.zapyd.com/cms/api/v1/customer/wallet/add")
.header("X-API-KEY", "<api-key>")
.header("X-TIMESTAMP", "<api-key>")
.header("X-SIGNATURE", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customer_id\": \"c2cf861b-342b-4318-a90e-85cd0312e82f\",\n \"wallet_address\": \"0x1234567890123456789012345678901234567890\",\n \"network\": \"Ethereum\",\n \"label\": \"Main wallet\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.zapyd.com/cms/api/v1/customer/wallet/add")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["X-TIMESTAMP"] = '<api-key>'
request["X-SIGNATURE"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_id\": \"c2cf861b-342b-4318-a90e-85cd0312e82f\",\n \"wallet_address\": \"0x1234567890123456789012345678901234567890\",\n \"network\": \"Ethereum\",\n \"label\": \"Main wallet\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Wallet added/updated successfully",
"data": {
"id": 42,
"wallet_address": "0x1234567890123456789012345678901234567890",
"network": "Ethereum",
"label": "Main wallet",
"status": "ACTIVE",
"is_visible": true,
"created_at": "2026-09-30T10:00:00Z"
}
}{
"status": false,
"message": "Bad Request",
"data": null,
"errors": {
"network": [
"This field is required."
]
},
"err_code": "REQ_FIELD_MISSING"
}{
"status": false,
"message": "Internal Server Error",
"data": null,
"errors": {},
"err_code": "SYS_INTERNAL_ERROR"
}Add Wallet
Authorizations
API Key for authentication
Current timestamp in seconds since epoch
HMAC SHA256 signature of the request encoded in Base64
Body
Customer's unique identifier
"c2cf861b-342b-4318-a90e-85cd0312e82f"
Wallet address. Must match the network's address format (0x… for EVM networks, T… for Tron, base58 for Solana).
"0x1234567890123456789012345678901234567890"
Blockchain network, case-insensitive: Ethereum, Polygon, Arbitrum, Bsc, Sepolia, Solana, Tron
"Ethereum"
Optional label. Wallets with a label are shown in List Wallets (address book).
"Main wallet"
Response
Success
true
"Wallet added/updated successfully"
Hide child attributes
Hide child attributes
Wallet ID (integer). Use it in the fetch and delete paths.
42
Wallet address
"0x1234567890123456789012345678901234567890"
Canonical network name
Ethereum, Polygon, Arbitrum, Bsc, Sepolia, Solana, Tron "Ethereum"
Label shown in the address book. Only labelled wallets are returned by List Wallets.
"Main wallet"
Wallet status
ACTIVE, INACTIVE "ACTIVE"
True when the wallet has a non-empty label
true
Creation time (ISO 8601)
"2026-09-30T10:00:00Z"