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.
Demo
Create QR payments programmatically
1. Create a new payment on your server.
- cURL
- Node.js
- PHP
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"
}'
const {Monei} = require('@monei-js/node-sdk');
const monei = new Monei('pk_test_36cf3e8a15eff3f5be983562ea6b13ec');
monei.payments.create({
amount: 110,
currency: 'EUR',
orderId: '14379133960355',
callbackUrl: 'https://example.com/checkout/callback'
});
$monei = new Monei\MoneiClient('pk_test_36cf3e8a15eff3f5be983562ea6b13ec');
$monei->payments->create([
'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" />
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
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.