← All guides Guide · Getting paid

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

SituationBetter choiceWhy
Shop counter, in personQR code The payer already has their camera out. No typing, no sharing a link.
WhatsApp, SMS, TelegramLink Tappable in one action. An image has to be saved and re-opened in a scanner.
Email or a PDF invoiceBoth Link for phone readers, QR for anyone printing it.
Poster, sticker, packagingQR code Print has no tappable surface.
Instagram bio, link-in-bioLink Persistent, no amount, works for any payer.
Remote client, different cityLink 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.

More on fixed-amount codes →

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.