Skip to main content

Create dynamic QR for payment

This flow displays a one-time payment QR on a customer-facing screen. The customer scans the QR with their Vipps MobilePay app and authorizes the payment.

One-time payment QR

Here, the user makes selections at the Point of Sale, gets a dynamic QR on a screen there, then pays in the app.

User scans QR, pays, and gets receipt

This flow works great when you don't have the phone number, because the risk of the customer entering the wrong one is reduced. Fewer clicks = faster payments.

When to use

This is the preferred flow when you have a customer-facing screen at your Point of Sale.

Prerequisites

Screen: A customer-facing display to show the one-time QR code.

Details

A one-time payment QR code is presented on a customer-facing screen. The QR code is a dynamic representation of the payment URL, and the customer needs to scan the QR code and pay within 10 minutes.

Step 1: Generate a dynamic QR code and payment request

When the customer selects a product, generate the payment request with a dynamic QR code.

Specify "userFlow": "QR" to initiate the flow.

Regulatory requirement

Per regulations, specify "customerInteraction": "CUSTOMER_PRESENT".

Detailed example

To generate the dynamic QR code and associated payment request, specify "userFlow": "QR". You may also specify the qrFormat and size for the QR.

Specify "customerInteraction": "CUSTOMER_PRESENT".

You can also include order details at this time.

Since the customer will scan from their phone, you don't need their phone number. This payment command can do an app-switch and open their Vipps or MobilePay app with the payment request.

Here is an example HTTP POST:

POST:/epayment/v1/payments

With body:

{
"amount": {
"value": 42924,
"currency": "NOK"
},
"paymentMethod": {
"type": "WALLET"
},
"customerInteraction": "CUSTOMER_PRESENT",
"receipt":{
"orderLines": [
{
"name": "Ear buds",
"id": "21231211",
"totalAmount": 42924,
"totalAmountExcludingTax": 34339,
"totalTaxAmount": 8585,
"taxRate": 2500,
},
],
"bottomLine": {
"currency": "NOK",
"posId": "pos_12345",
"receiptNumber": "0527013501"
},
},
"reference": 2486791679658155992,
"userFlow": "QR",
"returnUrl": "http://example.com/redirect?reference=2486791679658155992",
"paymentDescription": "Ear buds",
"qrFormat": {
"format": "IMAGE/SVG+XML",
"size": 1024
}
}

Step 2: Display the QR on the screen

Display the one-time QR on a screen facing the customer.

Step 3: The customer authorizes the payment

The customer scans the QR code and is directed to the Vipps or MobilePay app. The payment screen is presented and they click Pay.

To determine that the user has authorized the payment, you can get notifications via the Webhooks API and/or poll for the status.

Once the payment is approved, update the status in your system.

Step 4: Capture the payment

Capture the payment and confirm that it was successful.

Sequence diagram

Integration sequence for the flow with dynamic QR directing to the app for payment.

Dynamic QR directing to the app

Next steps

For details about this feature, see: