Get a customer Solana wallet balance
curl --request GET \
--url https://api-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance \
--header 'x-api-key: <api-key>'import requests
url = "https://api-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance"
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-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance', 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-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance",
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-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance"
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-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance")
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{
"status": true,
"statusCode": 200,
"message": "Customer crypto wallet balance retrieved",
"data": [
{
"id": "61237ceb-bde6-4052-9294-38470806f672",
"address": "8aQ3Y97fxiX26Pe2ckc3keoQEz5MtWBCVk4pEx96Sqeb",
"network": "solana",
"tokens": {
"sol": { "amount": "0.025", "rawAmount": "25000000" },
"usdc": { "amount": "10.50", "rawAmount": "10500000" },
"usdt": { "amount": "8.00", "rawAmount": "8000000" }
}
}
]
}
Crypto Wallets
Get Customer Wallet Balance
Retrieve a customer’s provider-reported SOL, USDC, and USDT balances
GET
/
api
/
v1
/
wallets
/
crypto
/
customer
/
{customerId}
/
balance
Get a customer Solana wallet balance
curl --request GET \
--url https://api-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance \
--header 'x-api-key: <api-key>'import requests
url = "https://api-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance"
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-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance', 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-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance",
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-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance"
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-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-production.fossapay.com/api/v1/wallets/crypto/customer/{customerId}/balance")
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{
"status": true,
"statusCode": 200,
"message": "Customer crypto wallet balance retrieved",
"data": [
{
"id": "61237ceb-bde6-4052-9294-38470806f672",
"address": "8aQ3Y97fxiX26Pe2ckc3keoQEz5MtWBCVk4pEx96Sqeb",
"network": "solana",
"tokens": {
"sol": { "amount": "0.025", "rawAmount": "25000000" },
"usdc": { "amount": "10.50", "rawAmount": "10500000" },
"usdt": { "amount": "8.00", "rawAmount": "8000000" }
}
}
]
}
The customer and Solana wallet must belong to the merchant resolved from the production API key. Unsupported Solana token receipts remain visible in wallet transaction history but are not included in this supported-balance response.
Use decimal-safe arithmetic and preserve the returned string values. A balance response is a point-in-time view; reconcile transaction state separately.
Path parameter
string
required
FossaPay UUID of the individual customer whose Solana balances will be retrieved.
Header
string
required
Active production API key belonging to the customer’s merchant.
Request example
curl --request GET \
--url https://api-production.fossapay.com/api/v1/wallets/crypto/customer/11111111-1111-4111-8111-111111111111/balance \
--header "x-api-key: $FOSSAPAY_API_KEY"
Response
{
"status": true,
"statusCode": 200,
"message": "Customer crypto wallet balance retrieved",
"data": [
{
"id": "61237ceb-bde6-4052-9294-38470806f672",
"address": "8aQ3Y97fxiX26Pe2ckc3keoQEz5MtWBCVk4pEx96Sqeb",
"network": "solana",
"tokens": {
"sol": { "amount": "0.025", "rawAmount": "25000000" },
"usdc": { "amount": "10.50", "rawAmount": "10500000" },
"usdt": { "amount": "8.00", "rawAmount": "8000000" }
}
}
]
}
Errors
| Status | Typical cause |
|---|---|
400 | Customer or active Solana wallet was not found for this merchant |
401 | Missing, invalid, or inactive API key |
422 | customerId is not a valid UUID |
5xx | Temporary provider or platform error |

