List Wallets
curl --request GET \
--url https://api.hopnow.io/v1/accounts/{account_id}/wallets \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.hopnow.io/v1/accounts/{account_id}/wallets"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.hopnow.io/v1/accounts/{account_id}/wallets', 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.hopnow.io/v1/accounts/{account_id}/wallets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api.hopnow.io/v1/accounts/{account_id}/wallets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hopnow.io/v1/accounts/{account_id}/wallets")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hopnow.io/v1/accounts/{account_id}/wallets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "<string>",
"object": "<string>",
"account_id": "<string>",
"currency": "<string>",
"network": "<string>",
"address": "<string>",
"label": "<string>",
"status": "<string>",
"created": "<string>",
"updated": "<string>",
"created_by": "<string>",
"updated_by": "<string>"
}
],
"page": 123,
"size": 123,
"total": 123,
"pages": 123
}Wallets
List Wallets
Retrieve a paginated list of cryptocurrency wallets
GET
/
v1
/
accounts
/
{account_id}
/
wallets
List Wallets
curl --request GET \
--url https://api.hopnow.io/v1/accounts/{account_id}/wallets \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.hopnow.io/v1/accounts/{account_id}/wallets"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.hopnow.io/v1/accounts/{account_id}/wallets', 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.hopnow.io/v1/accounts/{account_id}/wallets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api.hopnow.io/v1/accounts/{account_id}/wallets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hopnow.io/v1/accounts/{account_id}/wallets")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hopnow.io/v1/accounts/{account_id}/wallets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "<string>",
"object": "<string>",
"account_id": "<string>",
"currency": "<string>",
"network": "<string>",
"address": "<string>",
"label": "<string>",
"status": "<string>",
"created": "<string>",
"updated": "<string>",
"created_by": "<string>",
"updated_by": "<string>"
}
],
"page": 123,
"size": 123,
"total": 123,
"pages": 123
}Returns the account’s crypto deposit wallets, newest first.
Each item is the full wallet object, the same shape Get Wallet returns.
Requires an API key with
read access on the accounts scope.
Path Parameters
string
required
The account’s external ID (starts with
acct_)Query Parameters
string
Filter by currency. Must be a currency code the API supports, for example
USDC; any other value is rejected with 422.array
Filter by wallet status. Repeat the key once per value:
?statuses=active&statuses=suspended. Allowed values are active, suspended and deactivated, lowercase; anything else returns 422.string
Return wallets created on or after this timestamp, inclusive (ISO 8601)
string
Return wallets created before this timestamp, exclusive (ISO 8601)
integer
default:"1"
Page number (minimum 1)
integer
default:"10"
Items per page (1-100)
Response
Items are ordered by creation time, newest first. A wallet is hidden from this list only when the account also holds a wallet for the same currency and network on the provider your organization is currently routed to. The older one is then filtered out andtotal counts the filtered set, so the number of items can be smaller than the number of wallets on the account. A pair that exists only on the older provider keeps appearing.
Being filtered out changes nothing but this list. Funds sent to a filtered-out address are still credited to the account, and Get Wallet still returns the wallet by its id. Keep the ids you already hold.
array
Wallet objects, newest first
Show Wallet Fields
Show Wallet Fields
string
Wallet identifier (starts with
wal_)string
Always returns
"wallet"string
The account that owns the wallet (starts with
acct_)string
Crypto currency code, for example
USDCstring
Blockchain network, or
nullstring
On-chain deposit address, or
null when the custody provider has not returned one yetstring
Label given at creation, or
nullstring
Wallet status:
active, suspended or deactivatedstring
ISO 8601 timestamp when created
string
ISO 8601 timestamp when last updated, or
nullstring
Actor that created the wallet, or
null when no actor was recorded. API-key actors use an ak_ ID; Hop administrators are shown as hop_admin.string
Actor that last updated the wallet, or
null when no actor was recorded.integer
Current page number
integer
Items per page
integer
Total number of items across all pages, after the provider filter above
integer
Total number of pages
Errors
| Status | code | When |
|---|---|---|
422 | VALIDATION_ERROR | currency is not a supported currency code, page or size is out of range, or a date is not a valid timestamp |
422 | VALIDATION_ERROR | statuses carries a value that is not active, suspended or deactivated |
Response Example
{
"items": [
{
"id": "wal_5e2b9d7f1a4c6038b2e5d9a1",
"object": "wallet",
"account_id": "acct_9f2a7c1e6a2b4f3c9b8d2e5a",
"currency": "USDC",
"network": "solana",
"address": "C4bhocDFYFtK8fMypf31Frez7mztiim6PNvgDFbFQBLN",
"label": "Treasury USDC",
"status": "active",
"created": "2026-01-15T10:00:00Z",
"updated": "2026-01-15T10:00:00Z",
"created_by": null,
"updated_by": null
},
{
"id": "wal_8d4a2f7c0b6e13905a2c8f4b",
"object": "wallet",
"account_id": "acct_9f2a7c1e6a2b4f3c9b8d2e5a",
"currency": "USDT",
"network": "ethereum",
"address": "0x7a3f9c2e1b5d8046af27c3e90b5d1f4a86c2e0d9",
"label": "Treasury USDT",
"status": "active",
"created": "2026-01-04T08:20:00Z",
"updated": "2026-01-04T08:20:00Z",
"created_by": null,
"updated_by": null
}
],
"page": 1,
"size": 10,
"total": 2,
"pages": 1
}