Skip to main content

Use QR code payments

Accept in-store contactless payments with QR codes. Choose between the MONEI Pay app, Dashboard Points of Sale, or the Payments API.

Permanent vs One-Time QR Codes

PermanentOne-Time
Created viaDashboard Points of SaleMONEI Pay App / Payments API
URL formathttps://secure.monei.com/codes/{code_id}https://secure.monei.com/payments/{payment_id}/qr
ReusableYes, same QR for multiple transactionsNo, one payment per QR
AmountCustomer enters (manual) or fixedPre-set per payment
ExpirationNever (can be disabled)5 minutes (or custom expireAt via API)
Best forStatic displays, printed materials, tablesDynamic checkout, invoices, mobile POS

Before You Begin

MONEI Pay App

MONEI Pay provides the easiest way to accept payments in-store using a dedicated app.

Login into pay.monei.com or download the MONEI Pay app using your MONEI Dashboard credentials to start creating QR payment codes.

App StoreGoogle Play

Dashboard Points of Sale

Create and manage QR-based Points of Sale directly in your MONEI Dashboard.

Creating a Point of Sale

  1. Go to Dashboard → Settings → Points of Sale
  2. Click Create Point of Sale
  3. Select QR Code as the type
  4. Configure your POS settings (see options below)

Configuration Options

OptionDescription
NameIdentifier for this POS (e.g., "Store Entrance", "Table 5")
StoreAssociate with a store for multi-location tracking
Payment FlowManual Amount: Customer enters amount each time. Fixed Amount: Same amount for all transactions
Fixed Amount/CurrencyPre-set amount when using Fixed Amount flow
Allowed Payment MethodsRestrict which payment methods appear (Card, Bizum, PayPal, etc.)
Manual CapturePlace hold on funds (auth-only), capture later. Only for Card and PayPal
Require EmailForce customers to enter email before paying
Require Tax IDRequire NIF/CIF for invoicing purposes
Callback URLWebhook URL for payment notifications
Include QR in EmailAdd QR code containing order ID to confirmation email (useful for ticketing/events)
QR Code TextCustom text shown alongside QR in confirmation email
DescriptionDescription passed to all payments from this POS

Managing QR Codes

Each POS can have multiple QR codes. From the POS detail page:

  • Generate new codes for different locations or displays
  • Download QR codes as SVG or PNG (300px, 500px, or 1000px)
  • Enable/disable codes without deleting them
  • Copy permalink for embedding: https://secure.monei.com/codes/{code_id}

Use Cases

  • Retail: Manual amount flow, enable multiple payment methods
  • Events/Ticketing: Fixed amount, require email, enable "QR in confirmation email"
  • Table service: Create multiple POS per store for tracking
  • Kiosk: Fixed amount, restrict to card-only

User Access Control & Payment Grouping

Stores and Points of Sale enable user access control and payment grouping:

  • Assign users to stores/POS: In Dashboard → Settings → Users, bind users (e.g., waiters, cashiers) to a store or POS
  • Restricted visibility: Bound users only see payments from their assigned store/POS
  • Automatic inheritance: When a bound user creates a payment via Dashboard or MONEI Pay, it inherits their store/POS ID
  • API grouping: Pass storeId or pointOfSaleId when creating payments via API to group them for reporting
  • Traceability: Admins can filter and track payments by store or POS origin

Customization

You can customize the appearance of the QR code (color, icon) and the hosted payment page in your MONEI Dashboard → Settings → Branding.

Testing

  • Use your test mode API keys for development
  • Enable Test Mode in your Dashboard to view test payments
  • Use test card numbers to simulate different scenarios
  • Verify webhook delivery in Dashboard → Developers → Webhooks

Troubleshooting

QR code expired QR codes are valid for 5 minutes. Create a new payment if the code expires.

Payment method not showing Check that the method is enabled in your account and not filtered by allowedPaymentMethods.

Webhook not received Verify your callbackUrl is publicly accessible, returns 200 OK, and check webhook logs in Dashboard.