Skip to main content

Use QR code payments with MONEI Pay

Accept in-store contactless payments and support all the most popular payment methods with QR codes.

Getting started

MONEI Pay is the best way to accept payments in-store.

Login into pay.monei.com with your same credentials you use to access dashboard.monei.com and start creating payments.

You can also download the MONEI Pay app to create QR codes on the go.

App StoreGoogle Play

Demo

QRQR demo

Create QR payments programmatically

1. Create a new payment on your server.

POST https://api.monei.com/v1/payments
curl --request POST 'https://api.monei.com/v1/payments' \
--header 'Authorization: pk_test_3c140607778e1217f56ccb8b50540e00' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": 110,
"currency": "EUR",
"orderId": "14379133960355",
"callbackUrl": "https://example.com/checkout/callback"
}'

The following parameters are required:

  • amount positive integer - Amount intended to be collected by this payment. A positive integer representing how much to charge in the smallest currency unit (e.g., 100 cents to charge 1.00 USD)
  • currency string - Three-letter ISO currency code, in uppercase. Must be a supported currency.
  • orderId string - An order ID from your system. A unique identifier that can be used to reconcile the payment with your internal system.
  • callbackUrl string - The URL to which a payment result should be sent asynchronously.

Check all available request parameters.

Present to the user a unique QR code generated for this specific payment. To access the QR code image construct the following url https://secure.monei.com/payments/{{payment_id}}/qr

You can directly render it on to your webpage using this html code:

<img src="https://secure.monei.com/payments/{{payment_id}}/qr?format=svg&size=300" width="300" height="300" />

QR

By default, the format is png but you can also use svg format by adding ?format=svg to the url. You can also modify the size of the QR code by adding ?size=400 to the url (min: 100, max: 1000).

You can customize the color and icon in your MONEI Dashboard → Settings → Branding.

As an alternative you can redirect the user to our Hosted Payment Page that will show the QR code.

To get the QR code add ?qr=1 parameter to the nextAction.redirectUrl you'll receive in the response.

Example: https://secure.monei.com/payments/9407ed9d3b691dbf19f69c6b30a9a26c6821564d?qr=1

Hosted Payment Page QR

2. Customer completes the payment

Customer completes the payment on the hosted payment page and is redirected to the receipt page where he can optionally enter his email to receive the receipt.

note

The payment is accessible through the QR code during 5 minutes, after that you need to create a new payment.

3. An asynchronous request is sent to your server

MONEI will notify you about the payment status by sending an HTTP POST request to the callbackUrl. The request body will contain the full payment object in JSON format.

This ensures that you get the payment status even when the customer closed the browser window or lost Internet connection.

The request also contains a MONEI-Signature header. Verify this signature to confirm that the received request is sent from MONEI.

To acknowledge the receipt of the request, your endpoint must return a 200 HTTP status code to MONEI. All other response codes, including 3xx codes, indicate to MONEI that you did not receive the event.

If MONEI does not receive a 200 HTTP status code, the notification attempt is repeated. After multiple failures to send the notification over multiple days, MONEI marks the request as failed and stops trying to send it to your endpoint.