NIBSS QR or NQR

Before you use this payment method, you need to add it in your account settings.

NIBSS QR(popularly called NQR) creates QR codes for merchant 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 ecommerce 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 payments work?

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

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 here.

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 NQR payment method in your dashboard settings.

3. 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 /v3/charge?type=qr endpoint.

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

{
    "amount":100,
    "email":"example@test.com",
    "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": "fintech.request@gmail.com",
            "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 as a webhook to your server.

Transaction Verification

Before providing value to the customer, please verify the transaction information. Learn more about transaction verification here.

Loading...