# UPI QR codes in Hindi and regional languages

> The QR payload is an ASCII upi:// URI and never needs translating — the payer's app displays its own language. Localise everything around the code instead: the call to action, the instructions and the printed name. A Hindi CTA beside an English one costs nothing and widens who scans.

Source: https://useqr.app/docs/payments/upi-qr-in-hindi-and-regional-languages · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## The code is already universal

A common worry from shop owners: "do I need a Hindi QR code for Hindi-speaking customers?"
No such thing exists, and that is good news. The payload inside every
[UPI QR code](/docs/payments/upi-qr-code-format) is an ASCII URI:

```
upi://pay?pa=shop@upi&pn=Sharma%20Stores&cu=INR
```

The VPA is structurally ASCII — letters, digits, dots and dashes before the `@`, Latin
letters after it — and the parameters are Latin keys. The customer never reads any of this.
Their **app** reads it, and the app renders its interface in whatever language the customer
chose — major UPI apps ship in Hindi and a wide set of Indian languages, with BHIM alone
offering well over a dozen. The confirmation screen, the buttons, the PIN prompt: all
localised by the app, for free, regardless of who printed the code.

So one code serves every customer. What varies by language is everything printed **around**
it.

## Why not to put Devanagari inside the payload

Technically, `pn` and `tn` are percent-encoded, so non-Latin text can be forced in. It is a
bad trade. In a URI, each character becomes percent-encoded UTF-8, and a Devanagari
character is three bytes — so **one Devanagari character costs nine payload characters**
(`स` → `%E0%A4%B8`) against one for a Latin letter. A short Hindi name balloons the
payload, pushes the code up [versions](/glossary/version), and shrinks every module at
print size. App handling of non-Latin `pn` is also inconsistent, and mismatches with the
bank-registered name (held in Latin script) confuse the very confirmation screen customers
rely on. Oversized, misbehaving payloads are a recurring cause of
[codes not being detected](/docs/troubleshooting/upi-qr-code-not-detected-by-app).

Keep the payload Latin; put the language on the paper.

## What to localise on the standee

**The call to action.** The line that tells passers-by what to do:

| Language | CTA |
|---|---|
| Hindi | स्कैन करें और भुगतान करें |
| Hindi (colloquial) | यहाँ स्कैन करें — सभी UPI ऐप चलेंगे |
| English | Scan any UPI app to pay |

**The instructions.** "Open any UPI app → scan → enter amount → confirm" in the languages
your counter actually hears. For regional languages beyond Hindi, have a native speaker
write the line — a mistranslated CTA reads worse than an English one.

**The business name.** Print it in local script *and* Latin. The Latin version matters
because the payer's app shows the bank-registered name, which is in Latin script — the
customer should be able to match what they see on screen to something on the standee. That
match is the fraud check, as the [small-shop guide](/docs/payments/upi-qr-for-a-small-shop)
explains.

## Multilingual standee layout

A bilingual A5 that works: business name in both scripts at the top, the code at **8–10 cm**
in the middle, Hindi CTA directly under the code, English CTA under that, VPA in small
Latin text at the bottom. Two languages fit comfortably; three is the practical ceiling
before the code loses space it needs — sizing rules are on
[printing a UPI standee](/docs/payments/printing-a-upi-qr-standee). Donation contexts often
justify the trilingual version (local language, Hindi, English) since the audience is
widest — see [UPI QR for donations](/docs/payments/upi-qr-for-donations).

Generate once at [/upi](/upi), reuse the same SVG across every language variant of the
artwork, and [decode-verify](/validate) each final layout — the code should be identical in
all of them, and the decoder proves it.

## FAQ

### Can I make a UPI QR code in Hindi?
The code itself has no language — it encodes an ASCII upi:// link that apps read, and each customer's app displays its own language. What you localise is the signage around the code: the CTA, instructions and printed name.

### Will a Hindi-speaking customer's app work with my QR code?
Yes. Major UPI apps ship interfaces in Hindi and many other Indian languages. The same code produces a Hindi confirmation screen for one customer and a Tamil one for another, chosen in their app settings.

### Should the payee name in the code be in Devanagari?
No. Percent-encoding makes each Devanagari character cost nine payload characters, app handling is inconsistent, and the bank-registered name shown to payers is in Latin script anyway. Print the Devanagari name on the standee instead.

### What should a bilingual UPI standee say?
Business name in both scripts, one clear CTA per language — for Hindi, स्कैन करें और भुगतान करें — and the VPA in Latin text. Keep the code at least 8 cm wide; languages share the margins, not the code's space.

## Try it

- https://useqr.app/upi
- https://useqr.app/validate
- https://useqr.app/bulk
