Skip to content

Hubtel

Collect payments with Hubtel

HUBTEL sends a mobile money prompt to the payer’s phone through Hubtel’s Direct Receive Money API, into the ISP’s own Hubtel merchant account. The payer approves it on their handset, and Hubtel confirms the result on a callback.

Available to ISPs in Ghana (GH), alongside MTN MoMo, PawaPay, Paystack, PayPal, and DPO.

Before you start

  1. Complete Hubtel merchant onboarding in an account owned by the ISP.

  2. In the Hubtel dashboard open API & Integrations → API Credentials and collect the client ID and client secret.

  3. Note your merchant account number, which Hubtel also calls the POS Sales ID. Every charge is made to this account, and Hubtel refuses charges that do not name it.

  4. Confirm your workspace has a public HTTPS domain, so Hubtel can reach the callback.

  5. Ask Hubtel to allow-list Centipid’s payment servers on your merchant account. Hubtel refuses every charge from an IP address it has not approved. Send your Hubtel account manager (or Hubtel support) your POS Sales ID and these six addresses:

    157.245.47.145
    165.227.224.60
    144.126.225.36
    178.128.162.87
    178.128.162.201
    206.189.22.251

Configure the gateway

  1. Open Settings → Payments → Hubtel

    Select Hubtel from the payment marketplace.

  2. Enter the client ID

    Hubtel client ID (required) comes from API & Integrations → API Credentials.

  3. Enter the client secret

    Hubtel client secret (required) is stored as a secret and is not echoed back into the form after saving. The pair is sent as HTTP basic authentication on every request.

  4. Enter the merchant account number

    Merchant account number (required) is your Hubtel POS Sales ID.

  5. Run a controlled test payment

    Pay a small amount from the captive portal and confirm the prompt arrives on the handset and the payment reaches the ledger.

Credentials

Field Required Notes
Hubtel client ID Yes API & Integrations → API Credentials.
Hubtel client secret Yes Secret.
Merchant account number Yes Your Hubtel POS Sales ID.

Callback URLs

Settings → Payments shows https://<your-host>/api/hubtel/callback. It is also sent with every payment request as the primary callback, so there is normally nothing to register — but confirm it is not blocked by a firewall or WAF rule.

What the payer must provide

A Ghanaian mobile money number. The network is detected from the number’s prefix, and a number whose prefix is not recognized is refused before any request reaches Hubtel:

Network Prefixes
MTN 024, 054, 055, 059, 025
Vodafone 020, 050
AirtelTigo 026, 056, 057, 027
Glo 023

Numbers are accepted with or without the 233 country code and with or without a leading zero. The currency is your account’s configured currency, defaulting to GHS.

Authorization happens on the handset, so no Hubtel domain needs to be added to the captive walled garden.

How a payment completes

  1. Request

    Centipid Billing posts the charge to Hubtel’s receive-mobile-money endpoint for your merchant account, with the amount, the payer’s number, the detected channel, and a unique client reference.

  2. Authorization

    The payer approves the prompt on their handset.

  3. Confirmation

    Hubtel posts the outcome to the callback, which records the payment and applies the subscriber’s package.

Troubleshooting

Symptom What it means What to do
“Hubtel credentials are not configured.” The client ID or secret is missing. Enter both in Settings → Payments.
“Hubtel merchant account number (POS Sales ID) is not configured.” The merchant account number is missing. No request was sent. Enter your POS Sales ID in Settings → Payments → Hubtel.
“A phone number is required to initiate a Hubtel payment.” Checkout had no phone number. Collect one before retrying.
“Unable to determine the customer’s mobile money network from the provided phone number.” The prefix is not in the table above. No request was sent, and the payer was not charged. Re-enter the number in Ghanaian format. If the prefix is genuinely new, raise it with support.
“Hubtel blocked this payment request: this network’s Hubtel account has not approved our payment servers yet.” Hubtel answered 403 before checking any credential: Centipid’s servers are not on your account’s IP allow-list. No money was taken. Ask Hubtel to allow-list the six addresses under Before you start.
A message from Hubtel on a failed request Hubtel refused the charge and its own error is shown. Read the message — it usually names the credential or the wallet at fault.
“Hubtel did not confirm the request. If a prompt arrives on your phone, approve it; otherwise try again in a moment.” Hubtel did not answer in time. The charge is not re-sent, because the prompt may already be on the phone; if the payer approves it, the callback still grants the package. If it keeps happening, check outbound connectivity from the application host.
Prompt approved, ledger stays empty The callback did not arrive. Confirm https://<your-host>/api/hubtel/callback is publicly reachable, then see Payment troubleshooting.

For every gateway’s fields in one place, see the credential reference.