Fiuu's Offline Payment API (OPA) – Best Practices for Dynamic QR Codes

Best Practices for Handling Merchant-Presented Dynamic QR Codes

Fiuu’s Offline Payment API (OPA) allows merchants to generate dynamic QR codes for the customer to scan using mobile device installed app (e-wallet and mobile banking app) to perform payment. To ensure a smooth payment experience and minimize failures, follow these guidelines when using time-sensitive dynamic QR codes (typically valid for 10 minutes):


QR Code Displayed Promptly
  • Generate and display the QR code immediately after the customer confirms the payment amount.

  • Avoid unnecessary delays (e.g., waiting for additional user input) before showing the QR code.

Countdown Time is Clearly Shown
  • Display a visible countdown timer (e.g., “QR code expires in 09:59”) near the QR code.

  • This creates urgency and informs customers that the code is temporary.

Provide Clear Instructions
  • Add a short message like: “Scan this QR code using your e-wallet or mobile banking app within 10 minutes.”

  • If possible, include logos of supported wallets for quick recognition.

Handle Expiry Gracefully
  • When the QR code expires:

    o Hide or gray out the expired QR code.

    o Show a message: “This QR code has expired. Please request a new one.”

    o Provide a ‘Regenerate QR Code’ button for easy retry.

Optimize For Different Channels
  • Website: Ensure the QR code is large and centered for easy scanning.

  • Mobile App: Use full-screen or modal display for better visibility.

  • Self-Service Kiosk / Terminal: Position the QR code at eye level and ensure good screen brightness.

  • Vending Machine: Use a high-contrast display and avoid glare.

Avoid Printing Dynamic QR Codes
  • Do not print dynamic QR codes on receipts or paper, as they will expire quickly.

  • For printed materials, use static QR codes linked to your payment page instead.

Monitor & Retry
  • Track QR code generation and payment status.

  • If a payment is not completed within the validity period, automatically prompt the user to regenerate a new QR code.

  • If first attempt failed, advise user to try with other e-wallet / online banking app.



Example of UI Flow

flowchart LR
    A[Customer selects items → Confirms payment amount] --> B[System calls Fiuu OPA → Receives QR code content or image link]
    B --> C[Display QR code + countdown timer + instructions]
    C --> D[On expiry → Show “Expired” message + Regenerate option]


Do's & Don'ts for Handling Merchant-Presented Dynamic QR Codes

DNQR handling
Avoid this on DNQR