List wallets
Get all user wallets. Request fields, response examples and integration guidance.
/wallets
Example request
curl --request GET \ --url "https://api.strongmb.ng/v1/wallets" \ --header "Authorization: Bearer $STRONGMB_API_KEY" \ --header "Accept: application/json"
// Server-side Node.js 22+; never expose your key in a browser.
async function main() {
const response = await fetch("https://api.strongmb.ng/v1/wallets", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.STRONGMB_API_KEY}`,
Accept: "application/json"
},
signal: AbortSignal.timeout(30000)
});
const result = await response.json();
console.log(response.status, result);
}
main().catch(console.error);<?php
// Requires the PHP cURL extension.
$client = curl_init('https://api.strongmb.ng/v1/wallets');
curl_setopt_array($client, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('STRONGMB_API_KEY'),
'Accept: application/json',
],
]);
$raw = curl_exec($client);
if ($raw === false) {
throw new RuntimeException(curl_error($client));
}
$status = curl_getinfo($client, CURLINFO_HTTP_CODE);
curl_close($client);
$result = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
print_r(['http_status' => $status, 'response' => $result]);require 'net/http'
require 'json'
uri = URI('https://api.strongmb.ng/v1/wallets')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
http.open_timeout = 10
http.read_timeout = 30
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer ' + ENV.fetch('STRONGMB_API_KEY')
request['Accept'] = 'application/json'
begin
response = http.request(request)
result = JSON.parse(response.body)
puts({ http_status: response.code, response: result }.to_json)
rescue StandardError => error
warn error.message
endimport json
import os
from urllib.request import Request, urlopen
from urllib.error import HTTPError, URLError
headers = {
"Authorization": "Bearer " + os.environ["STRONGMB_API_KEY"],
"Accept": "application/json",
}
body = None
request = Request(
"https://api.strongmb.ng/v1/wallets",
data=body, headers=headers, method="GET"
)
try:
with urlopen(request, timeout=30) as response:
result = json.load(response)
print(response.status, result)
except HTTPError as error:
print(error.code, error.read().decode("utf-8"))
except URLError as error:
print("Network error:", error.reason)Returns all wallets associated with the authenticated user including balances, limits, and status.
{
"status": true,
"message": "Wallet details retrieved successfully",
"data": {
"wallets": [
{
"uuid": "a2ae313c-074b-49eb-9660-7ef4c6408fcf",
"type": "primary_ngn",
"currency": "NGN",
"balance": 885459,
"locked_balance": 0,
"tier": "tier 1",
"transaction_limit": 100000,
"balance_limit": 500000,
"status": "normal",
"updated_at": "2026-09-21 00:51:37.898447+01"
},
{
"uuid": "e79f58e4-55e7-4641-81e7-9b4c2378a5cd",
"type": "sell_link_ngn",
"currency": "NGN",
"balance": 0,
"locked_balance": 0,
"tier": "tier 1",
"transaction_limit": 100000,
"balance_limit": 500000,
"status": "normal",
"updated_at": "2026-03-25 03:37:25.072776+01"
}
]
},
"metadata": {
"code": "WALLET_DETAILS_RETRIEVED",
"timestamp": 1789951389,
"trace_id": "D9D6FD0311"
}
}Response fields and types
The wallets array contains the wallets belonging to the authenticated user. Each [] field describes one wallet. The default primary wallet is primary_ngn.
| Field path | JSON type | Meaning and handling |
|---|---|---|
status | boolean | Whether this API request succeeded. Check the HTTP status and metadata.code when handling errors. |
message | string | Human-readable description of the result. Use metadata.code for programmatic error handling instead of parsing this text. |
data | object | Response data. Check the result before reading nested fields; an error may return null or validation details. |
data.wallets | array | Array of wallets belonging to the authenticated account. Iterate the returned array rather than assuming one wallet. |
data.wallets[] | object | One entry in the wallets array. Its nested fields are documented below. |
data.wallets[].uuid | string | Unique identifier of the wallet record. |
data.wallets[].type | string | Wallet type. primary_ngn is the default primary wallet; other wallets can include sell_link_ngn. |
data.wallets[].currency | string | Currency code, such as NGN for Nigerian naira. |
data.wallets[].balance | number | Wallet balance as returned by this endpoint. Use decimal-safe arithmetic for money. |
data.wallets[].locked_balance | number | Portion of wallet funds reported as locked. Do not treat locked funds as freely spendable. |
data.wallets[].tier | string | Account tier label. It can affect the limits shown on wallet records. |
data.wallets[].transaction_limit | integer | null | Per-transaction limit reported for this wallet. A null value means no limit is set. |
data.wallets[].balance_limit | integer | null | Maximum wallet balance reported for this tier. A null value means no limit is set. |
data.wallets[].status | string | Wallet status, such as normal or PND. This describes the wallet, not a purchase outcome. |
data.wallets[].updated_at | string | Last-update timestamp for this record, returned as a string. |
metadata | object | Diagnostic information about the response. |
metadata.code | string | Machine-readable result code. Use it to distinguish validation, authentication and service errors. |
metadata.timestamp | integer | Unix timestamp in seconds associated with the response. |
metadata.trace_id | string | Correlation identifier for troubleshooting. Retain it with a redacted request when contacting support. |
Always check metadata.code; do not rely on HTTP status alone. See response codes and recommended handling.
Questions? Let’s work through them.
Having an issue or need help with your integration? Join the Strongmb Slack community to ask questions and get assistance from our team and other developers.
Keep API keys and customer details private when sharing examples.
Experiencing a service issue? Check Strongmb’s service status for incident updates.
Did this page help you?
Up to 100 characters. Please leave out personal details, account information and API keys.