We recommend checking out the introductory
section to understand the basics of direct
charge first. This guide assumes you’ve read that.

Initiating the Payment
First, you’ll need the customer’s payment details. Since it’s a USSD transaction, the only detail you need is theaccount_bank, the code matching the customer’s bank. You can provide a simple UI for the user to select their bank.
Supported Banks
USSD payments are currently only supported for the following banks:| Banks | bank code |
|---|---|
| Access bank | (044) |
| Ecobank | (050) |
| Fidelity bank | (070) |
| First bank of Nigeria | (011) |
| First City Monument Bank (FCMB) | (214) |
| Guaranty trust bank | (058) |
| Heritage bank | (030) |
| Keystone bank | (082) |
| Lotus bank | (303) |
| Premium Trust bank | (105) |
| Stanbic IBTC bank | (221) |
| Sterling bank | (232) |
| Union bank | (032) |
| United Bank for Africa (UBA) | (033) |
| Unity Bank | (215) |
| VFD microfinance bank | (090110) |
| Wema bank | (035) |
| Zenith bank | (057) |
amount, currency, email and a unique tx_ref. You can also specify more details, such as the customer’s fullname, phone_number, and custom meta information. See the endpoint documentation for details.
Handling the response
You’ll get a response that looks like this:Success
statusis"successful", meaning that the charge was initiated successfullydata.statusis"pending", meaning that the customer needs to authorize the transaction via USSDdata.payment_codecontains a code for this transaction. For GTBank USSD payments, the user will be prompted to enter this after dialing the USSD code.meta.authorizationcontains the important details to complete the payment. Thenotefield holds the USSD code that the customer needs to dial from the mobile number linked to their bank account. Typically, it will be in the form*<bank_code>*xxx*<payment_code>#.
meta.authorization.note (and enter the payment_code) if necessary to complete the payment.
Completing the Payment
To complete the payment, the customer needs to dial the USSD code and authorize the charge.Testing TipIn Test Mode, USSD transactions will automatically be paid (transition to “successful”) after a few seconds.
data.status field is now "successful".
Payment Successful