UPI QR code vs payment link
Underneath they are the same thing. The difference is entirely about how the payer receives it, and that difference matters more than people expect.
They encode identical data
Both carry the same NPCI-specified payment instruction. A QR code draws it as squares; a payment link wraps it in a web page:
QR image → upi://pay?pa=you@okhdfc&am=500.00&cu=INR
Link → https://upi.pe/you@okhdfc/500 (which hands off the same upi:// URL)
Nothing about the payment differs. Same payee, same amount, same instant bank-to-bank settlement, same 0% MDR.
Where each one wins
| Situation | Better choice | Why |
|---|---|---|
| Shop counter, in person | QR code | The payer already has their camera out. No typing, no sharing a link. |
| WhatsApp, SMS, Telegram | Link | Tappable in one action. An image has to be saved and re-opened in a scanner. |
| Email or a PDF invoice | Both | Link for phone readers, QR for anyone printing it. |
| Poster, sticker, packaging | QR code | Print has no tappable surface. |
| Instagram bio, link-in-bio | Link | Persistent, no amount, works for any payer. |
| Remote client, different city | Link | Survives copy-paste; the exact amount travels with it. |
The thing people get wrong about QR codes in chat
Sending a QR image over WhatsApp feels equivalent to sending a link. It is not. The recipient has to save the image, open their UPI app, find the scan-from-gallery option, and select it — four steps, and the gallery-scan option is buried in most apps.
A link is one tap. If your payer is not standing in front of you, send a link. Generate one →
Why not just send the raw upi:// link?
You can, but it behaves badly. Most chat apps refuse to make upi:// tappable
because it is not an http scheme, desktop browsers cannot open it at all, and it looks
like something to be suspicious of.
An https:// wrapper fixes all three: chat apps linkify it, desktops show a
scannable QR instead, and phones hand off to the UPI app exactly as the raw scheme would.
Amount: fixed or open?
This choice matters more than QR-versus-link. A fixed amount removes mistyping and speeds up counter payments, but the code is single-purpose. An open amount gives you one reusable code for every payer.
- Fixed — invoices, tickets, deliveries, set-price items.
- Open — tips, donations, bio links, printed shop stickers.
Just use both
UPIPE produces both from one input, so there is rarely a reason to choose. The link page even renders its own QR code, meaning a single link covers the desktop viewer too.