Non Card Payments

We understand that the ability to seamlessly and conveniently accept payments from your customers is important to every business, hence we have integrated various providers to enable your customers with more flexible ways of completing their transactions.

Integration Details

All these payment options are available by default on the gateway, and they can be disabled or enabled any time you want from the settings menu on your Quickteller Business Dashboard.

These payment options are also available via API in case you want to customize the flow or experience by yourself.

These payment options can be used in two ways:

  1. Dynamic/Transactional - this is where a USSD code/QR image/Transfer account number is generated for a transaction. This means that it is tied to the exact amount and transaction reference it was generated for and can only be used once for a successful payment. This is the mode available on the web gateway.

  2. Static/Permanent - this is where the USSD code/QR image/ Transfer account number is generated for an entity. For this, there's no amount tied to it so it's the paying customer that decides whatever amount they want to pay, and once the transaction is successful, we notify you via email, SMS, and also via Webhooks if you have integrated to it so you can automatically give the customer value on your own system.

A Popular use case for this is for funding wallets, or for physical stores where these values are printed and placed in an environment where a paying customer can find and quickly complete payment to the merchant.

Asides from cards, we have the following payment channels :


With USSD, you are able to perform a transaction using a uniquely generated code.

Process Flow for USSD

Step 1: Make a call to Get USSD Banks. This provides a list of bank codes needed to perform a USSD transaction.
Step 2: Make a call to Pay with USSD, providing the required bank code as generated in Step 1 above.


2. Transfer

2a. Process Flow for Dynamic(Transactional) Transfer

Step 1: Make a call to Pay With Transfer.
Step 2: [optional] Make a call to Confirm Transaction Status to confirm the state of your transaction.


2b. Process Flow for Static (e.g funding wallets) Transfer

Step 1: Generate a permanent account number, then save the details on your system against the customer's records.

curl \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
     "accountName": "Test Account",
  	 "merchantCode": "MX1111"

Sample Response

    "id": 106071,
    "merchantCode": "MX6072",
    "payableCode": "VIRTUAL_ACCOUNTMX60721641976776840",
    "enabled": true,
    "dateCreated": 1641976778480,
    "accountName": "Test Account",
    "accountNumber": "7120241111",
    "bankName": "Wema Bank",
    "bankCode": "WEMA"

Step 2: Integrate to [Webhooks] (doc:webhooks) so we notify you instantly any payment is made into the account
You'll only get TRANSACTION.COMPLETED webhook events on this account.
Here's a sample webhook response of a successful transfer and the important fields to look out for:
Response Sample

	"uuid": "000016220112100534000059168755",
	"timestamp": 1641978358245,
	"data": {
		"paymentId": 721304386,
		"remittanceAmount": 4925,
		"amount": 5000,
		"responseCode": "00",
		"responseDescription": "Approved by Financial Institution",
		"merchantReference": "000016220112100534000059168755",
		"paymentReference": "000016220112100534000059168755",
		"retrievalReferenceNumber": "7120241111",
		"transactionDate": 1641978358245,
		"bankCode": "011",
		"currencyCode": "566",
		"channel": "TRANSFER",
		"merchantCustomerId": "MUSA OLU UGO",
		"merchantCustomerName": "MUSA OLU UGO",
		"nonCardProviderId": "VIRTUAL|DIRECT|7120241111",
		"payableCode": "6265663"

Response Description

eventEvent Type. Always going to be TRANSACTION.COMPLETED
uuidUnique Transaction reference. You should implement a duplicate check on your system for this so you don't give value more than once for the same transaction.
amountTransaction amount customer paid for in minor (kobo)
remittanceAmountAmount we'll settle you, after removing our transaction fees
merchantReferenceUnique transaction reference on our system
retrievalReferenceNumberThis contains the account number tht was paid into, Meaning the account number you generated from Step 1 and stored on your system. This is what you'll uise to identify which customer on your end to credit.
merchantCustomerNameThe name of the person that made the transfer
bankCodeThe CBN bank code of the sender's bank

3. QR Code

To perform a transaction using QR code, make a call to the Generate QR endpoint.