Skip to main content
POST
/
api
/
v1
/
org
/
balance
/
topup
Afriex SDK
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",
    "destinationId": "",
    "customerId": "",
    "transactionId": "69d6005dab82306f11b03360",
    "meta": {},
    "createdAt": "2026-04-08T07:14:37.568Z",
    "updatedAt": "2026-04-08T07:14:37.568Z"
  }
}
Credits the business wallet with the specified amount and currency.
This endpoint is only available in the sandbox/staging 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.

Authorizations

x-api-key
string
header
required

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. Requests made with a key that does not include the permission required by the target endpoint will be rejected with a 403 Forbidden response; an unrecognised, malformed or revoked key returns 401 Unauthorized. Manage your keys and their permissions under Developer → API keys in the dashboard.

Headers

x-api-version
string

API version in ISO 8601 format (e.g. 2025-12-28). Defaults to latest stable.

Body

application/json
amount
number<double>
required

A positive number representing the amount to credit.

Example:

500

currency
string
required

Uppercase 3-letter ISO 4217 currency code (e.g. USD, NGN, GBP). Must be a supported Afriex currency.

Example:

"USD"

Response

Balance successfully topped up. Returns the created transaction record.

data
object