Get Wallets
curl --request GET \
--url https://api.rolla.xyz/api/v1/external/wallet/wallets \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rolla.xyz/api/v1/external/wallet/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.rolla.xyz/api/v1/external/wallet/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.rolla.xyz/api/v1/external/wallet/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.rolla.xyz/api/v1/external/wallet/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.rolla.xyz/api/v1/external/wallet/wallets")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/wallet/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{
"status": 200,
"message": "Business wallets retrieved successfully",
"success": true,
"data": {
"wallets": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "NGN Wallet",
"currency": "NGN",
"balance": {
"availableBalance": 950000,
"postedBalance": 1000000,
"pendingBalance": 50000,
"lienAmount": 0
},
"virtualAccounts": [
{
"id": "7f1c2a90-3b4d-4e5f-8a9b-0c1d2e3f4a5b",
"status": "active",
"virtual_account_type": "static",
"currency_type": "fiat",
"bank_name": "Wema Bank",
"account_number": "0123456789",
"account_name": "Rolla / Your Business Name"
}
]
},
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"name": "USD Wallet",
"currency": "USD",
"balance": {
"availableBalance": 5000,
"postedBalance": 5000,
"pendingBalance": 0,
"lienAmount": 0
},
"virtualAccounts": [
{
"id": "8e2d3b01-4c5e-4f60-9b0c-1d2e3f4a5b6c",
"status": "active",
"virtual_account_type": "static",
"currency_type": "fiat",
"bank_name": "Bank of America",
"account_number": "9876543210",
"account_name": "Rolla / Your Business Name",
"routing_number": "101019644",
"bank_address": {
"street": "1801 Main St",
"city": "Kansas City",
"state": "MO",
"postalCode": "64108",
"country": "US"
},
"swift_code": "LEADUS44"
}
]
},
{
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"name": "USDT Wallet",
"currency": "USDT",
"balance": {
"availableBalance": 1200,
"postedBalance": 1200,
"pendingBalance": 0,
"lienAmount": 0
},
"virtualAccounts": [
{
"id": "9d3e4c12-5d6f-4a71-8c1d-2e3f4a5b6c7d",
"status": "active",
"virtual_account_type": "static",
"currency_type": "crypto",
"stablecoin_type": "USDT",
"wallet_address": "0xAbCdEf1234567890abcdef1234567890AbCdEf12",
"wallet_chain": "ethereum"
}
]
}
]
}
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}Wallets
List Wallets
Retrieves every currency wallet for the authenticated business, with balances in smallest units and the payment accounts that receive funds into each wallet. Loan accounts are never included; read them from GET /wallet/loans.
GET
/
wallet
/
wallets
Get Wallets
curl --request GET \
--url https://api.rolla.xyz/api/v1/external/wallet/wallets \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rolla.xyz/api/v1/external/wallet/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.rolla.xyz/api/v1/external/wallet/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.rolla.xyz/api/v1/external/wallet/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.rolla.xyz/api/v1/external/wallet/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.rolla.xyz/api/v1/external/wallet/wallets")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/wallet/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{
"status": 200,
"message": "Business wallets retrieved successfully",
"success": true,
"data": {
"wallets": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "NGN Wallet",
"currency": "NGN",
"balance": {
"availableBalance": 950000,
"postedBalance": 1000000,
"pendingBalance": 50000,
"lienAmount": 0
},
"virtualAccounts": [
{
"id": "7f1c2a90-3b4d-4e5f-8a9b-0c1d2e3f4a5b",
"status": "active",
"virtual_account_type": "static",
"currency_type": "fiat",
"bank_name": "Wema Bank",
"account_number": "0123456789",
"account_name": "Rolla / Your Business Name"
}
]
},
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"name": "USD Wallet",
"currency": "USD",
"balance": {
"availableBalance": 5000,
"postedBalance": 5000,
"pendingBalance": 0,
"lienAmount": 0
},
"virtualAccounts": [
{
"id": "8e2d3b01-4c5e-4f60-9b0c-1d2e3f4a5b6c",
"status": "active",
"virtual_account_type": "static",
"currency_type": "fiat",
"bank_name": "Bank of America",
"account_number": "9876543210",
"account_name": "Rolla / Your Business Name",
"routing_number": "101019644",
"bank_address": {
"street": "1801 Main St",
"city": "Kansas City",
"state": "MO",
"postalCode": "64108",
"country": "US"
},
"swift_code": "LEADUS44"
}
]
},
{
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"name": "USDT Wallet",
"currency": "USDT",
"balance": {
"availableBalance": 1200,
"postedBalance": 1200,
"pendingBalance": 0,
"lienAmount": 0
},
"virtualAccounts": [
{
"id": "9d3e4c12-5d6f-4a71-8c1d-2e3f4a5b6c7d",
"status": "active",
"virtual_account_type": "static",
"currency_type": "crypto",
"stablecoin_type": "USDT",
"wallet_address": "0xAbCdEf1234567890abcdef1234567890AbCdEf12",
"wallet_chain": "ethereum"
}
]
}
]
}
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}Retrieve all wallets for your business, including balances and the payment accounts that receive funds into each wallet. Loan accounts are not returned here; use
GET /wallet/loans for those.
Example Request
curl -X GET "https://api.rolla.xyz/api/v1/external/wallet/wallets" \
-H "X-API-Key: your_api_key_here"
Example Response
{
"status": 200,
"message": "Business wallets retrieved successfully",
"success": true,
"data": {
"wallets": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "NGN Wallet",
"currency": "NGN",
"balance": {
"availableBalance": 950000,
"postedBalance": 1000000,
"pendingBalance": 50000,
"lienAmount": 0
},
"virtualAccounts": [
{
"id": "7f1c2a90-3b4d-4e5f-8a9b-0c1d2e3f4a5b",
"status": "active",
"virtual_account_type": "static",
"currency_type": "fiat",
"bank_name": "Wema Bank",
"account_number": "0123456789",
"account_name": "Rolla / Your Business Name"
}
]
},
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"name": "USD Wallet",
"currency": "USD",
"balance": {
"availableBalance": 5000,
"postedBalance": 5000,
"pendingBalance": 0,
"lienAmount": 0
},
"virtualAccounts": [
{
"id": "8e2d3b01-4c5e-4f60-9b0c-1d2e3f4a5b6c",
"status": "active",
"virtual_account_type": "static",
"currency_type": "fiat",
"bank_name": "Bank of America",
"account_number": "9876543210",
"account_name": "Rolla / Your Business Name",
"routing_number": "101019644",
"bank_address": {
"street": "1801 Main St",
"city": "Kansas City",
"state": "MO",
"postalCode": "64108",
"country": "US"
},
"swift_code": "LEADUS44"
}
]
},
{
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"name": "USDT Wallet",
"currency": "USDT",
"balance": {
"availableBalance": 1200,
"postedBalance": 1200,
"pendingBalance": 0,
"lienAmount": 0
},
"virtualAccounts": [
{
"id": "9d3e4c12-5d6f-4a71-8c1d-2e3f4a5b6c7d",
"status": "active",
"virtual_account_type": "static",
"currency_type": "crypto",
"stablecoin_type": "USDT",
"wallet_address": "0xAbCdEf1234567890abcdef1234567890AbCdEf12",
"wallet_chain": "ethereum"
}
]
}
]
}
}
Use
balance.availableBalance (not balance.postedBalance) when checking if you have sufficient funds for a withdrawal. postedBalance includes pending debits that haven’t settled yet, and availableBalance is already net of lienAmount, the portion reserved and unavailable for withdrawal.Each wallet includes a
virtualAccounts array containing the payment accounts used to receive funds into that wallet (e.g. bank account details for NGN, wallet addresses for crypto).