Ghana's leading payment gateway API supporting mobile money, cards, POS, QR codes, and SMS services for collecting and disbursing payments in GHS
Hubtel is Ghana's leading payment gateway and platform, enabling instant payments processing and money transfers across all major mobile money networks (MTN Mobile Money, Vodafone Cash, AirtelTigo) alongside card payments, GHQR codes, and SMS services. The API allows merchants to collect payments, send money to customers, and manage transactions programmatically.
Hubtel uses HTTP Basic Authentication for all API requests. You must provide a Base64-encoded string of your ClientID and ClientSecret in the Authorization header.
ℹ️ Self-service signup now available. Hubtel has introduced self-service merchant registration at https://unity.hubtel.com. You can create an account and generate API keys without needing to email support, though full activation for live transactions still requires business verification.
⚠️ API versioning note: Hubtel has been reorganising their API ecosystem. The primary collection/disbursement API currently documents at
payproxyapi.hubtel.com, while newer endpoints may appear underapi.hubtel.com/v2/. If you encounter 404s on the paths documented here, check the Hubtel developer portal for the current base URLs — they have been updated without redirect in past migrations.
# Step 1: Create Base64 string
# base64_encode("YOUR_CLIENT_ID:YOUR_CLIENT_SECRET")
# Step 2: Add to request header
Authorization: Basic {base64_encoded_credentials}
// Node.js example
const clientId = "your_client_id";
const clientSecret = "your_client_secret";
const credentials = Buffer.from(`${clientId}:${clientSecret}`).toString('base64');
const headers = {
"Authorization": `Basic ${credentials}`,
"Content-Type": "application/json"
};
# Python example
import base64
import requests
client_id = "your_client_id"
client_secret = "your_client_secret"
credentials = base64.b64encode(f"{client_id}:{client_secret}".encode()).decode()
headers = {
"Authorization": f"Basic {credentials}",
"Content-Type": "application/json"
}
// PHP example
$clientId = "your_client_id";
$clientSecret = "your_client_secret";
$credentials = base64_encode("{$clientId}:{$clientSecret}");
$headers = [
"Authorization: Basic {$credentials}",
"Content-Type: application/json"
];