NIBSS QR or NQR

Learn how to collect payment with NIBSS QR.

NIBSS QR (popularly called NQR) creates QR codes for merchants to collect payments seamlessly from customers. Users can scan this code with any bank app to complete the charge.

This payment method is quick and is suitable for e-Commerce checkouts and other solutions that require a short user payment experience.

NQR is available only to Nigerian customers, but merchants outside Nigeria can use it to charge their Nigerian customers.

How does NQR Payment Work?

NQR generates a QR image (base64) for the customer to complete payment.

🚧

Displaying Base64 Images

Base64 images contain encoded data and must be handled carefully to be readable by the customer's bank QR code scanner. Learn more about displaying base64 images.

After generating the QR image, the customer logs into their bank app to scan the code and authorize the payment. Customers need to verify the merchant name and transaction amount before authorizing.

We send you a webhook with the transaction's status after the payment is completed.


Payment Requirements

You'll need to meet the following requirements before integrating this payment method:

  1. Account status: Your account needs to be approved for live payments.
  2. Enable payment method: Activate the NQR payment method in your dashboard settings.

  1. Configure webhooks: Setup your webhook server to get payment notifications upon completion.

Using the NQR Payment Method

To collect payment from customers using this payment method, Your setup would involve three steps:

  • Image generation: The payment initiation/generating the QR image for the customer.
  • Status notifications: Handling the notification for the payment.
  • Transaction verification: Confirming the transaction details, e.g., status, amount, and customer information, before providing value for the payment.

Image Generation

To initiate the payment, you need to generate the QR image. The image can be generated by sending a request containing the customer information and the transaction details to initiate NQR charge endpoint.

ℹ️

Authorizing the Payment

Customers should use their bank app to authorize the payment. Learn more about NQR authorization .

{
    "amount":100,
    "email":"[email protected]",
    "tx_ref":"test001",
    "currency": "NGN,
    "phonenumber":"08167235612",
    "is_nqr": "1",
    "client_ip": "154.123.220.1"
}
{
	"status": "success",
	"message": "Charge initiated",
	"data": {
		"id": 2621067,
		"tx_ref": "ridko-pp-ref-33333545634259_S",
		"flw_ref": "OVJD0654516590954247",
		"device_fingerprint": "62wd23423rq324323qew1",
		"amount": 100,
		"charged_amount": 100,
		"app_fee": 0.5,
		"merchant_fee": 0,
		"processor_response": "QR GENERATED. PENDING VALIDATION",
		"auth_model": "NIBSS-QR",
		"currency": "NGN",
		"ip": "154.123.220.1",
		"narration": "FLW-ECO",
		"status": "pending",
		"auth_url": "NO-URL",
		"payment_type": "nibss-qr",
		"fraud_status": "ok",
		"charge_type": "normal",
		"created_at": "2022-07-29T11:50:23.000Z",
		"account_id": 1090323,
		"customer": {
			"id": 958108,
			"phone_number": "08156170991",
			"name": "Anonymous Customer",
			"email": "[email protected]",
			"created_at": "2022-07-28T13:59:40.000Z"
		}
	},
	"meta": {
		"authorization": {
			"qr_image": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AQAAAACgl2eQAAACq0lEQVR42u2ZS7LjIAxFYSOw/130UtBGcN9z5VTZGfQM9SR+r1LBnIFKnytB2vXv50/7AT/gBxwCVmudzzF5FbFmXJEvy4DQ/9LmErH6HlO7Pfy+DlhaxsbEPcbcsm53v6wF9NhAbYZ29/wPwO67Te0rRNqVwdUAWcKnHbbkKUz9iuZhgPyM7+c7qw8DlzNFWdJUMWtSQbt/V/dhQGWiXOkYK8sUtrn6GsO1XAUE2TpGG9q6M5akrQV45KUL65CSSF9FIaANKcZyhBYCohLqq82rELCQWs5dwR1Y64hKIBwrrNqOFy57B+s84EbGSxF4idSdXtYBipKWNm40+WjDtFIA6ZaLiJilVGGbKa51gNJjuHjpKONTvPuhMBVAMlJvS8nM4p1RCOASJ8q0mOgrKfys7gLgyhHHxTuspfEq3goA9cicnYZR9WWbywBUEx2lrTbL+OLNI6vPAxQvow0uQksUq9GzeMoAfY27l/XP5J8jaB2wex44BkJCCcFcDzEvAJittI12LNcPscuZswzgGyeOQd30NHdnzpYBuYVh3skTEH+VgF2CenMCmeEWf+1Xcz8NKDfIUWqGYddHIAyPSoAVAsKuaIspfaUQsHQ0iveeMqid9VS584AvBLCNXkZbJV7z2dzPA5zJJ33NO0Z6XpXUActNzAcv9TM3l3gVbwHgHtLd0Zj+nUHubIUAtqWRWbwckK9ItApgzvZdFR4bd1vJK4s6gLOoEZq6p814JW0BwGDHUjqS5w4PndawMiDnvXu28XURx5FHcy8AVjY0ZIy5+y7eeF9YHQYiB2/c1O9pZ2FkrwSsWdwYfYaLiPfQWwPcunV3+Tt1q4GRl5fWkWDgelzcVQDZUxQijZoz8l49XjcYx4GVN8iebNJZLprVC4Hfb0k/4AeUA38BdP+AAT1Xy6kAAAAASUVORK5CYII=",
			"mode": "qr",
			"validate_instructions": "Scan the QR code below from your mobile banking app to complete the payment"
		}
	}
}

Status Notification

When the customer completes the payment in their bank apps, Flutterwave will notify you of the transaction status (successful or failed), along with transaction and customer details.

This notification is sent to your server as a webhook.

Transaction Verification

Before providing value to the customer, please verify the transaction information. See our guide to transaction verification for details.