Wallet SystemWallet System
Buy Now
View Demo
  • Getting Started

    • Introduction
    • Quick Start
    • Features
    • Installation
    • First-Time Setup
    • Admin Tour
  • Wallet Core

    • Core Wallet
    • Wallet Payment Gateway
    • Recharge / Top-up
    • Wallet Transfer
    • My Wallet Page
    • Shortcodes
  • Earn & Reward

    • Cashback Engine
    • Referral Program
    • Multilevel Referral
    • Daily Login Reward
    • Invite Friends
    • Deposit / Top-up Bonus
  • Spend & Payout

    • Checkout Discount
    • Checkout Restriction
    • Withdrawal
    • PayPal Payout
    • Stripe Payout
    • Refund to Wallet
    • Buy Now Pay Later
  • Identity & Mobile

    • KYC
    • QR Code Payments
  • Wallet Central

    • Overview
    • Endpoint & Routing
    • CTA Discovery
    • Home Dashboard
    • Add Funds
    • Withdraw
    • Withdrawals List
    • Send Money
    • QR Pay
    • Payment Requests
    • Refer & Earn
    • Transactions
    • Settings
    • KYC Flow
    • Architecture
    • Tweaks & Responsive
    • Security
    • Admin Controls
  • Admin Tools

    • Admin Settings (index)
    • Bulk Credit / Debit
    • Analytics Dashboard
  • Settings Tabs

    • General
    • Recharge
    • Checkout
    • Withdrawal
    • Payout (PayPal/Stripe)
    • KYC
    • Cashback
    • Referral
    • Multilevel
    • BNPL
    • QR Pay
    • Notifications
    • Wallet Central
    • Integrations
    • API Keys
  • Notifications

    • Email Notifications
    • SMS Notifications
  • Developer

    • REST API
    • Filters & Hooks
  • Help

    • Troubleshooting
    • FAQ
    • Glossary
Support
Buy Now
View Demo
  • Getting Started

    • Introduction
    • Quick Start
    • Features
    • Installation
    • First-Time Setup
    • Admin Tour
  • Wallet Core

    • Core Wallet
    • Wallet Payment Gateway
    • Recharge / Top-up
    • Wallet Transfer
    • My Wallet Page
    • Shortcodes
  • Earn & Reward

    • Cashback Engine
    • Referral Program
    • Multilevel Referral
    • Daily Login Reward
    • Invite Friends
    • Deposit / Top-up Bonus
  • Spend & Payout

    • Checkout Discount
    • Checkout Restriction
    • Withdrawal
    • PayPal Payout
    • Stripe Payout
    • Refund to Wallet
    • Buy Now Pay Later
  • Identity & Mobile

    • KYC
    • QR Code Payments
  • Wallet Central

    • Overview
    • Endpoint & Routing
    • CTA Discovery
    • Home Dashboard
    • Add Funds
    • Withdraw
    • Withdrawals List
    • Send Money
    • QR Pay
    • Payment Requests
    • Refer & Earn
    • Transactions
    • Settings
    • KYC Flow
    • Architecture
    • Tweaks & Responsive
    • Security
    • Admin Controls
  • Admin Tools

    • Admin Settings (index)
    • Bulk Credit / Debit
    • Analytics Dashboard
  • Settings Tabs

    • General
    • Recharge
    • Checkout
    • Withdrawal
    • Payout (PayPal/Stripe)
    • KYC
    • Cashback
    • Referral
    • Multilevel
    • BNPL
    • QR Pay
    • Notifications
    • Wallet Central
    • Integrations
    • API Keys
  • Notifications

    • Email Notifications
    • SMS Notifications
  • Developer

    • REST API
    • Filters & Hooks
  • Help

    • Troubleshooting
    • FAQ
    • Glossary
Support
  • Getting Started

    • Introduction
    • Quick Start — Wallet Live in 5 Minutes
    • Features
    • Installation
    • First-Time Setup
    • Admin Tour
  • Wallet Core

    • Core Wallet
    • Wallet Payment Gateway
    • Recharge / Top-up
    • Wallet Transfer
    • My Wallet Page
    • Shortcodes
  • Earn & Reward

    • Cashback Engine
    • Referral Program
    • Multilevel Referral
    • Daily Login Reward
    • Invite Friends
    • Deposit / Top-up Bonus
  • Spend & Payout

    • Checkout Discount
    • Checkout Restriction
    • Withdrawal
    • PayPal Payout
    • Stripe Payout
    • Refund to Wallet
    • Buy Now Pay Later (BNPL)
  • Identity & Mobile

    • KYC (Know Your Customer)
    • QR Code Payments
  • Wallet Central

    • Wallet Central Overview
    • Endpoint & Routing
    • CTA Discovery
    • Home Dashboard
    • Add Funds
    • Withdraw
    • Withdrawals List + Detail
    • Send Money
    • QR Pay
    • Payment Requests
    • Refer & Earn
    • Transactions
    • Settings (customer)
    • KYC Flow
    • Architecture
    • Tweaks & Responsive
    • Security
    • Admin Controls
  • Admin Tools

    • Admin Settings
    • Bulk Credit / Debit
    • Analytics Dashboard
  • Settings Tabs

    • General Settings
    • Recharge Settings
    • Checkout Settings
    • Withdrawal Settings
    • Payout Settings (PayPal + Stripe)
    • KYC Settings
    • Cashback Settings
    • Referral Settings
    • Multilevel Settings
    • BNPL Settings
    • QR Pay Settings
    • Notifications Settings
    • Wallet Central Settings
    • Third-Party Integrations
    • API Keys
  • Notifications

    • Email Notifications
    • SMS Notifications
  • Developer

    • REST API
    • Filters & Hooks
  • Help

    • Troubleshooting
    • FAQ
    • Glossary

QR Code Payments

Receive and pay between customers via QR. Two modes — show your QR to receive, scan another's to pay.

Setting up?

Skip to QR Pay Settings for the step-by-step admin tab walkthrough (min/max, OTP threshold, KYC gate, how-it-works copy).

What It Does

ForMeans
CustomerGenerate a personal QR. Friends scan and send. Or scan someone else's QR to pay them — instant, no email lookup
AdminOptional KYC gate. Optional OTP for large amounts. All transfers logged with audit trail

How Customers See It

Receive

Each customer gets a unique QR linked to their wallet.

  • Visible on My Wallet → Receive QR tile or /wallet-central/qr/?mode=mine
  • Download as PNG
  • Share via the device's native share sheet
  • Optional "Set amount" — locks the receive amount in the QR (sender's scanner pre-fills)

QR can be regenerated by the customer at any time — old images become invalid (useful if leaked).

Pay

Scanner UI → camera frame → point at another customer's QR → recipient resolved → enter amount → submit.

Falls back to "Upload QR image" if camera permission is denied.

QR Pay view at /wallet-central/qr/ — receive QR + scan-to-pay modes

Setup

Wallet → Settings → QR Pay

QR Payments admin section — enable, KYC gate, OTP threshold, how-it-works copy

SettingDefaultWhat it does
EnableOFFglobal toggle
KYC requiredOFFtick to require approved KYC for scan-to-pay
Min pay amount1smallest scan-pay
Max pay amountemptylargest single scan-pay
OTP thresholdemptyamounts above this require OTP confirmation
How-it-works steps3 default stepsshown on the receive QR card

OTP for Large Amounts

If you set the OTP threshold (e.g. 5000), any QR pay above that triggers an OTP step — same flow as Wallet Transfer. Belt-and-braces for amounts large enough to matter.

Mobile Notes

BrowserBehaviour
iOS Safari 16+works — camera permission granted on prompt
iOS in-app (Instagram / FB)camera often denied → file fallback kicks in
Android Chromeworks
Embedded WebViewsneeds explicit camera permission grant

QR scanning needs HTTPS — won't work on http:// localhost dev URLs without a tunnel.

Common Scenarios

Customer prints QR for an event

QR card has a "Download as PNG" button → high-res image → printable. Useful for "Pay X by scanning" stickers at pop-ups, vendor stalls.

Lock the receive QR to a fixed amount

Open the QR card → "Set amount" → type → confirm. Sender's scanner pre-fills (and locks) that amount. Useful for "Pay ₹250 for product X" use cases.

Disable QR pay store-wide

Toggle "Enable" → OFF. Customer-side view shows "QR Pay is currently disabled."

When Something Goes Wrong

ProblemFix
Camera says "permission denied"HTTPS required; user explicitly granted; iOS in-app browsers force file fallback
QR scanned but resolve failsNonce expired (24h) — recipient regenerates QR
Pay button does nothingJS error; check console; confirm scanner script loaded
OTP screen appearing on small amountsOTP threshold set too low; raise it
For developers — payload format + hooks

QR payload

wkwp:<wallet_id>:<nonce>:<sig>
PartNotes
wallet_idmasked synthetic ID (e.g. WK00001234) — not the WP user_id
noncerandom 12 chars, expires in 24h (rotating)
sigHMAC-SHA256 of wallet_id:nonce with site secret

Signature stops a fake QR carrying a valid wallet_id from being trusted.

Server flow on scan-pay

  1. Verify nonce + logged-in
  2. Decode + verify QR payload signature
  3. Resolve wallet_id to recipient user ID
  4. Run KYC gate if active
  5. Validate amount (min / max)
  6. If amount > OTP threshold → return requires_otp = true
  7. On OTP verified → atomic debit sender + credit recipient
  8. Two ledger rows tagged qr_pay:#<request_id>

Hooks

HookTypeWhen
wkwp_qr_payload_payloadfiltermutate the encoded payload
wkwp_qr_pay_amountfiltermutate amount before debit
wkwp_qr_pay_completedactionboth ledger rows written
wkwp_qr_pay_failedactionrollback
wkwp_qr_pay_kyc_gatefilterper-pay KYC gate decision

Related

  • Wallet Transfer
  • KYC
  • Shortcodes
  • Wallet Central → QR Pay
Prev
KYC (Know Your Customer)