const transaction = await afriex.balance.topUpSandbox({
amount: 500,
currency: "USD",
});
console.log(transaction.transactionId);
console.log(transaction.status); // 'SUCCESS'
curl --request POST \
--url https://sandbox.api.afriex.com/api/v1/org/balance/topup \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"amount": 500,
"currency": "USD"
}
'import requests
url = "https://sandbox.api.afriex.com/api/v1/org/balance/topup"
payload = {
"amount": 500,
"currency": "USD"
}
headers = {
"x-api-key": "<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>', 'Content-Type': 'application/json'},
body: JSON.stringify({amount: 500, currency: 'USD'})
};
fetch('https://sandbox.api.afriex.com/api/v1/org/balance/topup', 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.api.afriex.com/api/v1/org/balance/topup",
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([
'amount' => 500,
'currency' => 'USD'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.api.afriex.com/api/v1/org/balance/topup"
payload := strings.NewReader("{\n \"amount\": 500,\n \"currency\": \"USD\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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.api.afriex.com/api/v1/org/balance/topup")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 500,\n \"currency\": \"USD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.afriex.com/api/v1/org/balance/topup")
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["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 500,\n \"currency\": \"USD\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"status": "SUCCESS",
"type": "DEPOSIT",
"sourceAmount": "100",
"sourceCurrency": "USD",
"destinationAmount": "100",
"destinationCurrency": "USD",
"channel": "ADMIN",
"customerId": "",
"transactionId": "69d6005dab82306f11b03360",
"meta": {
"narration": "Test Funding Transaction"
},
"createdAt": "2026-04-08T07:14:37.568Z",
"updatedAt": "2026-04-08T07:14:37.568Z"
}
}Top Up Sandbox Balance
Credits the business’s Payout wallet, or its Fee or Collection wallet with walletType: FEE or DEPOSIT, with the specified amount and currency. This endpoint is only available in the sandbox environment and will return a 403 Forbidden response in production. Use it during integration development to top up your test balance without making real transfers.
const transaction = await afriex.balance.topUpSandbox({
amount: 500,
currency: "USD",
});
console.log(transaction.transactionId);
console.log(transaction.status); // 'SUCCESS'
curl --request POST \
--url https://sandbox.api.afriex.com/api/v1/org/balance/topup \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"amount": 500,
"currency": "USD"
}
'import requests
url = "https://sandbox.api.afriex.com/api/v1/org/balance/topup"
payload = {
"amount": 500,
"currency": "USD"
}
headers = {
"x-api-key": "<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>', 'Content-Type': 'application/json'},
body: JSON.stringify({amount: 500, currency: 'USD'})
};
fetch('https://sandbox.api.afriex.com/api/v1/org/balance/topup', 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.api.afriex.com/api/v1/org/balance/topup",
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([
'amount' => 500,
'currency' => 'USD'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.api.afriex.com/api/v1/org/balance/topup"
payload := strings.NewReader("{\n \"amount\": 500,\n \"currency\": \"USD\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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.api.afriex.com/api/v1/org/balance/topup")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 500,\n \"currency\": \"USD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.afriex.com/api/v1/org/balance/topup")
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["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 500,\n \"currency\": \"USD\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"status": "SUCCESS",
"type": "DEPOSIT",
"sourceAmount": "100",
"sourceCurrency": "USD",
"destinationAmount": "100",
"destinationCurrency": "USD",
"channel": "ADMIN",
"customerId": "",
"transactionId": "69d6005dab82306f11b03360",
"meta": {
"narration": "Test Funding Transaction"
},
"createdAt": "2026-04-08T07:14:37.568Z",
"updatedAt": "2026-04-08T07:14:37.568Z"
}
}walletType to choose the wallet to credit:
walletType | Wallet credited |
|---|---|
WITHDRAW (default) | Payout wallet |
DEPOSIT | Collection wallet |
FEE | Fee wallet, the wallet that settles transaction fees |
walletType, so a top-up and a balance read always agree.Authorizations
Static business API key issued from the dashboard. A business can provision multiple API keys, each scoped to a configurable set of permissions (e.g. read transactions, create deposits, etc). Permissions are chosen per key at creation time in the dashboard and may be revoked by deleting the key. Manage your keys and their permissions under Developer → API keys in the dashboard.
A request whose key does not carry the permission the target
endpoint requires is rejected with 401 Unauthorized, the same
response an unrecognised, malformed, revoked or disabled key
returns. The API does not distinguish the two cases on the wire.
See the Permissions reference for the permission each endpoint requires.
Headers
API version in ISO 8601 format. The only supported version is 2026-05-18, which is also the default when the header is omitted. Any other value is rejected with a 400 Bad Request.
Body
A positive number representing the amount to credit.
500
Uppercase 3-letter ISO 4217 currency code (e.g. USD, NGN, GBP). Must be a supported Afriex currency.
"USD"
The wallet to credit. When omitted, the Payout (WITHDRAW) wallet is credited. Use FEE to top up the wallet that settles transaction fees, or DEPOSIT for the Collection wallet.
DEPOSIT, WITHDRAW, FEE Response
Balance successfully topped up. Returns the created transaction record.
Show child attributes
Show child attributes
