Guides

USSD

USSD lets customers pay by dialling a code on their phone — no internet, no card. The bank handles authentication; TagPay receives the funds and fires a webhook.

How it works

The customer dials a bank-issued USSD code on the SIM linked to their account. The bank authenticates them with a transaction PIN, debits their account, and routes the funds to TagPay over NIBSS.

It works on any phone — feature phone, smartphone, anywhere with a 2G signal. No app, no data plan, no card required.

Supported banks

TagPay routes USSD payments through the customer's issuing bank. The dial code is bank-specific.

BankBase code
GTBank*737#
Access*901#
Zenith*966#
UBA*919#
First Bank*894#
Stanbic IBTC*909#
FCMB*329#

Flow

Call POST /v1/charge/ussd and pass bank_code on the body so TagPay can mint the right code. The response includes a ussd_code string to display. (Hosted-page flows that pass payment_methods: ["ussd"] on create render the USSD code on TagPay's checkout page instead.)

{
"status": true,
"data": {
"reference": "tp_charge_8mFp2Lq9",
"amount": 500000,
"channel": "ussd",
"ussd_code": "*737*000*500000#"
}
}

Show the code to the customer. They dial it, confirm with their PIN, and the bank routes funds to TagPay. Success arrives via the charge.success webhook.

Limits

Daily transaction limits are set by the issuing bank, not by TagPay. Typical ceilings:

  • Tier-1 / Tier-2 accounts: NGN 100,000 per day across USSD.
  • Tier-3 (fully KYC'd) accounts: up to NGN 1,000,000 per day.
  • Per-transaction cap: varies by bank, usually NGN 200,000.